gpt4 book ai didi

javascript - 使用范围输入动态更改 setInveral/Timeout 速度

转载 作者:行者123 更新时间:2023-11-28 17:52:36 24 4
gpt4 key购买 nike

我想知道是否可以使用 html5 范围输入动态更改 setInterval 或 setTimeout 速度?如果是这样我该怎么做?我尝试将输入值保存到变量,然后将变量设置为间隔/超时时间,但它不起作用,并且间隔/超时在更改时全速工作。有人可以给我一些例子吗? :)

var elem = document.querySelector('input[type="range"]');

var rangeValue = function(){
var newValue = elem.value;
var b = newValue;
delay = b;
setInterval(function(){
console.log("Hi")
}, delay);


}

elem.addEventListener("input", rangeValue);
<input name="1" type="range" min="1000" max="7000" step="10" value="0">

最佳答案

当范围输入滑动时,输入事件将触发多次,因此当您认为只设置 1 个间隔/超时时,您实际上是在设置多个。这给人的印象是你的计时器正在全速运行(我假设你的意思是它被设置为 0 延迟)。

您可以采取什么措施来对抗保存从 setTimeout/Interval 返回的计时器 ID 的行为。然后在回调开始时立即清除它,以确保以前的任何计时器不再运行。

var elem = document.querySelector('input[type="range"]');

var timerId = null;

var rangeValue = function(){
clearInterval(timerId);
var delay = elem.value;
timerId = setInterval(function(){
console.log("Hi")
}, delay);
}

elem.addEventListener("input", rangeValue);
<input name="1" type="range" min="1000" max="7000" step="10" value="0">

关于javascript - 使用范围输入动态更改 setInveral/Timeout 速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45178779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com