我想用setInterval方法每秒执行一次功能FindNext()。 如果我单击一次按钮,效果很好,但是如果我单击按钮两次或更多次,则间隔开始变短,然后声明为-短于一秒。我不知道如何使时间间隔与按钮单击数无关? / p>
<button id="search-next">Find - next</button>
$('#search-next').click(function() {
setInterval(function() {
FindNext();
}, 1000);
});
答案 0 :(得分:1)
因为它正在设置另一个间隔。所以现在您有两个循环。如果在单击另一个按钮后500毫秒单击一个按钮,则每个按钮将在500毫秒开始。
我建议使用clearInterval(myIntervalVariable);
您可以进行var myIntervalVariable = setInterval(stuff);
答案 1 :(得分:1)
它不短。您只需运行多个计时器即可。
您可以执行以下操作来检查是否已经在运行计时器:
var myTimer = null;
$('#search-next').click(function() {
if (myTimer === null) {
myTimer = setInterval(function() {
FindNext();
}, 1000);
}
});
或者在启动新计时器之前使用clearInterval:
var myTimer = null;
$('#search-next').click(function() {
if (myTimer !== null) {
clearInterval(myTimer);
}
myTimer = setInterval(function() {
FindNext();
}, 1000);
});