什么 DOM 事件允许在我拖动范围滑块时持续触发?
What DOM event allows for a constant triggering as I drag a range slider?
我目前有一个滑块和它旁边的一个框,我想在其中显示滑块的当前值。当我将滑块从 0 拖动到 100 时,我希望框中的值不断变化。哪个 DOM 事件最能描述此类事件?目前我将其关闭,以便在我完成移动滑块后更新框中的值。
let text1 = document.getElementById("sliderText1");
let slider1 = document.getElementById("slider1");
text1.textContent = slider1.value + "%";
slider1.addEventListener("mouseup",function(){
text1.textContent = slider1.value + "%"
});
<!DOCTYPE HTML>
<html>
<head>
<title></title>
</head>
<body>
<div style="float:left";>
<input type="range" id="slider1" min="0" max="100" value="50">
</div>
<div style = "float:left;">
<p id = "sliderText1" style = "margin-top: 2px; margin-left: 2px; border-style: solid"></p>
</div>
<script src="script.js"></script>
</body>
</html>
您可以使用 mousemove
事件,应该可以。
这是关于该事件的 MDN 文档
https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event
let text1 = document.getElementById("sliderText1");
let slider1 = document.getElementById("slider1");
text1.textContent = slider1.value + "%";
slider1.addEventListener("mousemove",function(e){
text1.textContent = slider1.value + "%"
});
<!DOCTYPE HTML>
<html>
<head>
<title></title>
</head>
<body>
<div style="float:left";>
<input type="range" id="slider1" min="0" max="100" value="50">
</div>
<div style = "float:left;">
<p id = "sliderText1" style = "margin-top: 2px; margin-left: 2px; border-style: solid"></p>
</div>
<script src="script.js"></script>
</body>
</html>
您可以结合使用 mouseup 和 mousedown 以及 setInterval 全局函数。
mousedown 事件仅在单击鼠标后执行一次,因此采用 setInterval 的方法。
运行 mousedown 的 setInterval 和 mouseup 的取消。
let text1 = document.getElementById("sliderText1");
let slider1 = document.getElementById("slider1");
text1.textContent = slider1.value + "%";
let intervalId;
slider1.addEventListener("mouseup", function() {
clearInterval(intervalId);
text1.textContent = slider1.value + "%"
});
slider1.addEventListener("mousedown", function() {
intervalId = setInterval(() => {
console.log('mousedown')
}, 100)
});
<!DOCTYPE HTML>
<html>
<head>
<title></title>
</head>
<body>
<div style="float:left" ;>
<input type="range" id="slider1" min="0" max="100" value="50">
</div>
<div style="float:left;">
<p id="sliderText1" style="margin-top: 2px; margin-left: 2px; border-style: solid"></p>
</div>
<script src="script.js"></script>
</body>
</html>
我目前有一个滑块和它旁边的一个框,我想在其中显示滑块的当前值。当我将滑块从 0 拖动到 100 时,我希望框中的值不断变化。哪个 DOM 事件最能描述此类事件?目前我将其关闭,以便在我完成移动滑块后更新框中的值。
let text1 = document.getElementById("sliderText1");
let slider1 = document.getElementById("slider1");
text1.textContent = slider1.value + "%";
slider1.addEventListener("mouseup",function(){
text1.textContent = slider1.value + "%"
});
<!DOCTYPE HTML>
<html>
<head>
<title></title>
</head>
<body>
<div style="float:left";>
<input type="range" id="slider1" min="0" max="100" value="50">
</div>
<div style = "float:left;">
<p id = "sliderText1" style = "margin-top: 2px; margin-left: 2px; border-style: solid"></p>
</div>
<script src="script.js"></script>
</body>
</html>
您可以使用 mousemove
事件,应该可以。
这是关于该事件的 MDN 文档 https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event
let text1 = document.getElementById("sliderText1");
let slider1 = document.getElementById("slider1");
text1.textContent = slider1.value + "%";
slider1.addEventListener("mousemove",function(e){
text1.textContent = slider1.value + "%"
});
<!DOCTYPE HTML>
<html>
<head>
<title></title>
</head>
<body>
<div style="float:left";>
<input type="range" id="slider1" min="0" max="100" value="50">
</div>
<div style = "float:left;">
<p id = "sliderText1" style = "margin-top: 2px; margin-left: 2px; border-style: solid"></p>
</div>
<script src="script.js"></script>
</body>
</html>
您可以结合使用 mouseup 和 mousedown 以及 setInterval 全局函数。
mousedown 事件仅在单击鼠标后执行一次,因此采用 setInterval 的方法。
运行 mousedown 的 setInterval 和 mouseup 的取消。
let text1 = document.getElementById("sliderText1");
let slider1 = document.getElementById("slider1");
text1.textContent = slider1.value + "%";
let intervalId;
slider1.addEventListener("mouseup", function() {
clearInterval(intervalId);
text1.textContent = slider1.value + "%"
});
slider1.addEventListener("mousedown", function() {
intervalId = setInterval(() => {
console.log('mousedown')
}, 100)
});
<!DOCTYPE HTML>
<html>
<head>
<title></title>
</head>
<body>
<div style="float:left" ;>
<input type="range" id="slider1" min="0" max="100" value="50">
</div>
<div style="float:left;">
<p id="sliderText1" style="margin-top: 2px; margin-left: 2px; border-style: solid"></p>
</div>
<script src="script.js"></script>
</body>
</html>