为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MM们 2023-05-19 16:12:29
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。谢谢
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

当有人再次点击开始按钮时清除以前的计时器。


start.addEventListener("click", function () {

   clearTimeout(id);

    startTimer(5, 0);

}, false);

签出更新的小提琴: http://jsfiddle.net/Lthvxeda/1/


查看完整回答
反对 回复 2023-05-19
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

在执行计时器之前,您应该在单击时清除计时器。


补充笔记:


我建议使用不同的条件,这样嵌套更少,可读性更高。


请注意,您的程序中存在一个错误,您应该将秒数重置为 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/


查看完整回答
反对 回复 2023-05-19
?
千巷猫影

TA贡献1829条经验 获得超7个赞

setInterval在设置新的之前你需要清除以前的,使用clearInterval(id).



查看完整回答
反对 回复 2023-05-19
  • 3 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信