在循环

时间:2017-11-30 10:15:42

标签: javascript

  function startTimer(duration, activity) {
    function countdown() {
      if ((duration - 1) > 0) {
        duration--;
        $("#timer").html(convertNumbers(duration))
      } else {
        if (activity === "session") {
          startBreak();
        } else {
          startSession();
        }
      }    
    }

    setInterval(countdown, 1000) 
}

function startSession() {
    var time = parseInt(($("#session_time").text()), 10);
    startTimer(time * 60, "session");
    $("#activity").html("Session");
}

function startBreak() {
    var time = parseInt(($("#break_time").text()), 10);
    startTimer(time * 60, "break");
    $("#activity").html("Break");
}

开始按钮:

$("#start").click(function() {
  startSession();
});

我正在使用setInterval创建一个Pomodoro时钟,每秒运行一次以减少一秒钟。按下开始按钮时,startSession()函数会获取时间并调用startTimer()函数,该函数在持续时间为0时指向setBreak()。

理想情况下,它会在startSession和startBreak之间切换,但我会在" #timer"中设置的文本(剩余时间)中出现闪烁和随机数字。在最初倒计时之后。当startTimer()调用startBreak()时,这可能与不结束Interval有关。

1 个答案:

答案 0 :(得分:1)

您永远不会清除初始间隔,因此当中断发生时,两个间隔同时运行。

setInterval会返回您可以传递给clearInterval()的间隔的ID,以便再次停止。

var timer = setInterval(function () {
    console.log('A second has passed!');
}, 1000});

setTimeout(function () {
    clearInterval(timer);
    console.log('Seconds no longer passes');
}, 10 * 1000);

有关详细信息,请参阅setIntervalclearInterval的文档。