为什么如果两次单击按钮setInterval方法短然后声明

时间:2019-05-30 23:18:28

标签: javascript

我想用setInterval方法每秒执行一次功能FindNext()。 如果我单击一次按钮,效果很好,但是如果我单击按钮两次或更多次,则间隔开始变短,然后声明为-短于一秒。我不知道如何使时间间隔与按钮单击数无关? / p>

<button id="search-next">Find - next</button>

$('#search-next').click(function() {
setInterval(function()  {
FindNext();
}, 1000);   
});

2 个答案:

答案 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);   
});