为什么我的间隔在第二次执行时变得更快 - jQuery

时间:2017-03-14 18:44:40

标签: javascript jquery

我有这个jQuery函数:



$(document).ready(function() {
  var timeVal = parseInt($('#timeMin').text());
  var mins = 60;
  $("#startbtn").click(function() {

    setInterval(time, 1000)
  });

  function time() {
    if (timeVal >= 0) {
      if (mins > 0) {
        if (mins <= 10) {
          console.log(mins - 1);
          $("#clock").html(timeVal + " : 0" + (mins - 1));
          mins -= 1;
        } else {
          console.log(mins);
          $("#clock").html(timeVal + " : " + (mins - 1));
          mins -= 1;
        }
      } else if (mins === 0) {
        timeVal -= 1;
        mins = 60;
      }
    }
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="timeMin">
  1
</div>
<button type="button" id="startbtn">
start
</button>
<br><br>
<div id="clock">
  00:00
</div>
&#13;
&#13;
&#13;

因此,一旦我点击按钮(&#39; startbtn&#39;),它应该每秒执行一次。它工作正常。它是00:00。然而,当我第二次点击它时,它会变得更快。为什么会这样做。

PS。这是小提琴:

  

https://jsfiddle.net/8s25ezrq/1/

感谢您的回答。

1 个答案:

答案 0 :(得分:3)

它不会更快,有多个间隔在运行,所以看起来更快。你永远不会清除原来的间隔。

您需要将间隔设置为变量并在每次单击按钮时清除它,然后开始执行相同操作的新变量:

var myInterval;
$("#startbtn").click(function(){
  clearInterval(myInterval);
  myInterval = setInterval(time, 1000);
});