试图立即停止JS计时器

问题描述 投票:0回答:1

我已经在JS中编程了一个基本的MM:SS倒数计时器,一旦剩余的秒数等于零,该计时器应立即停止。

function startTimer() {
    let timer = qs("select");
    remainingSeconds = timer.options[timer.selectedIndex].value;
    let timerDisplay = formatTimer(remainingSeconds);
    id("time").innerHTML = timerDisplay;

    timerId = setInterval(advanceTimer, 1000);
  }

  function formatTimer(timeValue) {
    let minutes = Math.floor(timeValue / 60);
    let seconds = remainingSeconds % 60;

    if (minutes < 10) {
      minutes = "0" + minutes;
    }

    if (seconds < 10) {
      seconds = "0" + seconds;
    }
    return minutes + ":" + seconds;
  }

  function advanceTimer() {
    if (remainingSeconds === 0) {
      clearInterval(timerId);
      //end the game logic here
      console.log("times up!");
    } else {
      remainingSeconds--;
      console.log("tick");
      id("time").innerHTML = formatTimer(remainingSeconds);
    }
  }

[我现在遇到的问题是试图使advanceTimer()函数在剩余的秒数从1减小到0时停止。例如,以3分钟的起始值(180秒)测试该函数时,[C0 ]函数被调用181次,而不是精确的180次。我如何更改函数的行为,以便在剩余秒数变为零时不再再次调用advanceTimer。]

我已经在JS中编程了一个基本的MM:SS倒数计时器,一旦剩余的秒数等于零,该计时器应立即停止。函数startTimer(){let timer = qs(“ select”); missingSeconds ...

javascript timer countdown
1个回答
0
投票

尝试在函数外部添加advanceTimer()声明以保持范围

© www.soinside.com 2019 - 2024. All rights reserved.