gpt4 book ai didi

javascript - 随指数时间递减的 Setinterval

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:26:21 25 4
gpt4 key购买 nike

我有一个设置间隔的 mousedown 事件。我希望间隔时间可变。所以第一个是 500,第二个是 500/2 = 250,等等。有什么提示吗?

$plus.mousedown(function(e) {
increment(20)
timeout = setInterval(function(){
increment(20)
}, 500);
});
$(document).mouseup(function(){
clearInterval(timeout);
return false;
});

干杯!

编辑:对于歧义,我们深表歉意。我希望间隔时间在鼠标按下期间发生变化。因此,在执行 mousedown 时,间隔时间应该改变。因此,不是每次单击鼠标,而是每次连续单击,然后再次重置。

最佳答案

你不能用 setInterval() 真正做到这一点,除非你不断清除延迟变化,所以你不妨写一个围绕 setTimeout() 的包装器来完成类似的事情:

function easingTimeout(delay, fn)
{
var id,
invoker = function() {
fn();
delay = Math.floor(delay / 2);
if (delay) {
id = setTimeout(invoker, delay);
} else {
id = null;
}
}

// start it off
id = setTimeout(invoker, delay);

return {
clear: function() {
if (id) {
clearTimeout(id);
id = null;
}
}
}

使用:

var timeout;

$plus.mousedown(function(e) {
increment(20);
timeout = easingTimeout(500, function() {
increment(20);
});
});

$(document).mouseup(function(){
timeout.clear();
return false;
});

关于javascript - 随指数时间递减的 Setinterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14969657/

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