javascript - 如何在第二次倒计时后停止 Javascript 计时器?

标签 javascript

我正在尝试创建一个番茄钟(用于 25 分钟生产力倒计时和 5 分钟休息时间倒计时),但我在停止休息时间倒计时时遇到问题。

这是我目前为止的 Javascript:

function startTimer(duration, display) {
    var timer = duration, minutes, seconds;
    var countdown = setInterval(function () {
        minutes = parseInt(timer / 60, 10)
        seconds = parseInt(timer % 60, 10);

        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.textContent = minutes + ":" + seconds;
        if (--timer < 0) {
            clearInterval(countdown);

            var breakClock = function() {
                 $("#title").text(function(i, text){
       return text === 'Breaktime' ? 'Productive Countdown' : 'Breaktime'
            }); 

             var fiveMinutes = 60 * .05,
                  display = document.querySelector('#time');
             startTimer(fiveMinutes, display);

             if (--timer < 0) {
                  clearInterval(this.countdown);
             }

            };

          breakClock();  
          }
    }, 500);
}                  
$(".startClock").click(function(){
    var twentyfiveMinutes = 60 * .25,
        display = document.querySelector('#time');
    startTimer(twentyfiveMinutes, display);
});

这是我的代码笔:http://codepen.io/cenjennifer/pen/pjzBVy?editors=101

仅供引用:我减少了时间,以便可以轻松测试功能。

最佳答案

更改:

clearInterval(this.countdown);

至:

clearInterval(countdown);

不需要 this 关键字,因为 countdown 变量是 breakClock() 函数父作用域的局部变量。

关于javascript - 如何在第二次倒计时后停止 Javascript 计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32301739/

相关文章:

javascript - 同时导入命名空间和子模块是否有缺点?例如。 `import React, { Component } from ...`

javascript - 以编程方式从单个 HTML 元素中删除 CSS 样式规则

javascript - 我必须调用位于同一文件中的 javascript 函数

javascript - 如何在不使用任何指令的情况下以 Angular 初始化谷歌地图API?

javascript - jquery 中如何将焦点放在一个窗口上?

javascript - 我可以使用 Webkit 的控制台做哪些有趣的事情?

javascript - ng-click 的奇怪错误

javascript - 数组 : Put multple objects in array

javascript - 在 JSON 字符串中分隔 PHP 变量

javascript - RXJS 遍历项目并返回一个数组