首页 > 解决方案 > 为什么如果单击按钮两次 setInterval 方法比声明的更短

问题描述

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

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

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

标签: javascript

解决方案


不是更短。您只需运行多个计时器。
你可以做这样的事情来检查是否已经有一个计时器在运行:

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

推荐阅读