範囲要素の幅に基づいてパーセンテージを計算し、それにオフセット要素を追加する必要があると思います。次に、ツールチップの絶対位置を決めるために、これをピクセルに変換する必要があります。ここに例をまとめましたhttp://jsfiddle.net/CYSeY/4/
以下のコード
CSS:
#range {
margin-left: 100px;
}
#tip {
position: absolute;
display: none;
border: 1px solid black;
padding: 4px;
}
HTML:
<input type="range" id="range" min="0" max="20" value="0" />
<div id='tip'>Some tip</div>
JavaScript :( onloadまたはWinJSページ準備完了イベント)
var r = document.getElementById('range');
var max = r.getAttribute('max');
var min = r.getAttribute('min');
var w = r.clientWidth;
//w += r.offsetLeft;
var isDragging = false;
var moveTip = (function (e) {
if (isDragging) {
var posPerc = (r.value / max) * 100;
var pixPos = (posPerc / 100) * w;
pixPos += r.offsetLeft;
document.getElementById('tip').style.display = 'block';
document.getElementById('tip').style.left = pixPos + 'px';
}
});
r.onmousedown = (function (e) {
isDragging = true;
r.addEventListener('mousemove', moveTip, false);
});
r.onmouseup = (function (e) {
isDragging = false;
r.removeEventListener('mousemove', moveTip);
document.getElementById('tip').style.display = 'none';
});
上記のコードは少し整理することができますが、良い出発点です。」
デモ:
var r = document.getElementById('range');
var max = r.getAttribute('max');
var min = r.getAttribute('min');
var w = r.clientWidth;
//w += r.offsetLeft;
var isDragging = false;
var moveTip = (function(e) {
if (isDragging) {
var posPerc = (r.value / max) * 100;
var pixPos = (posPerc / 100) * w;
pixPos += r.offsetLeft;
document.getElementById('tip').style.display = 'block';
document.getElementById('tip').style.left = pixPos + 'px';
}
});
r.onmousedown = (function(e) {
isDragging = true;
r.addEventListener('mousemove', moveTip, false);
});
r.onmouseup = (function(e) {
isDragging = false;
r.removeEventListener('mousemove', moveTip);
document.getElementById('tip').style.display = 'none';
});
#range {
margin-left: 100px;
}
#tip {
position: absolute;
display: none;
border: 1px solid black;
padding: 4px;
}
<input type="range" id="range" min="0" max="20" value="0" />
<div id='tip'>Some tip</div>