猿问

如何重新启动已设置间隔的倒数计时器?Javascript

http://jsfiddle.net/Xotic750/wwg8H/

function startTimer(m, s) {

    timer.textContent = m + ":" + s;

    if (s == 0) {

        if (m == 0) {

            return;

        } else if (m != 0) {

            m = m - 1;

            s = 60;

        }

    }

    

    s = s - 1;

    id = setTimeout(function () {

        startTimer(m, s)

    }, 1000);

}

参考上面的链接,当你点击一次开始时,它从5:00开始正常倒计时。但是,当你按两次开始按钮时,倒计时不正常?我可以知道如何解决这个问题吗?谢谢。如果可能,请提供codepen demo。谢谢


MM们
浏览 126回答 3
3回答

慕的地8271018

当有人再次点击开始按钮时清除以前的计时器。start.addEventListener("click", function () {   clearTimeout(id);    startTimer(5, 0);}, false);签出更新的小提琴: http://jsfiddle.net/Lthvxeda/1/

qq_花开花谢_0

在执行计时器之前,您应该在单击时清除计时器。补充笔记:我建议使用不同的条件,这样嵌套更少,可读性更高。请注意,您的程序中存在一个错误,您应该将秒数重置为 59,而不是 60——因为秒数已经过去了。这是一个简单的例子:let timerId;function renderCountDownTimer(minutes, seconds) {  timer.textContent = minutes + ":" + seconds;  if(seconds==0 && minutes==0) {    return;  }  if(seconds == 0){    minutes--;    seconds = 59;  } else {    seconds--;  }  timerId = setTimeout(() => {    renderCountDownTimer(minutes,seconds)  },1000)}start.addEventListener("click", function () {    clearTimeout(timerId)    renderCountDownTimer(5, 0);}, false);添加了小提琴: https: //jsfiddle.net/fqdhaxz7/1/

千巷猫影

setInterval在设置新的之前你需要清除以前的,使用clearInterval(id).
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答