亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何重新啟動已設置間隔的倒數計時器?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 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號