【问题标题】:JavaScript countdown timer counting past zeroJavaScript 倒数计时器从零开始计数
【发布时间】:2021-02-08 16:54:37
【问题描述】:

这可能是一个非常简单的问题,但我有一个 JavaScript 倒数计时器,但我无法阻止它从 0:00 开始计数。它不会在此时停止,而是会继续到 -1:59 等。

我还希望它在计时器归零时播放哔声(可以在here 找到)。

这是我目前得到的代码:

<div class="stopwatch">
  <div class="circle">
    <div class="time" id="timer"></div>
  </div>
</div>

<script>
  document.getElementById('timer').innerHTML =
    02 + ":" + 30;
  startTimer();

  function startTimer() {
    var presentTime = document.getElementById('timer').innerHTML;
    var timeArray = presentTime.split(/[:]+/);
    var m = timeArray[0];
    var s = checkSecond((timeArray[1] - 1));
    if(s==59){m=m-1}

    document.getElementById('timer').innerHTML =
      m + ":" + s;
    console.log(m)
    setTimeout(startTimer, 1000);
  }

  function checkSecond(sec) {
    if (sec < 10 && sec >= 0) {sec = "0" + sec}; // add zero in front of numbers < 10
    if (sec < 0) {sec = "59"};
    return sec;
  }
</script>

对此的任何帮助将不胜感激。

【问题讨论】:

  • 因为你从不测试分钟数是否为&lt; 0 - 你只检查秒数。

标签: javascript html ruby-on-rails


【解决方案1】:

要在计数器达到零时停止计数器,您必须停止调用 startTimer() 函数。在下面的 sn-p 中,我已经实现了一个检查来做到这一点。

function startTimer() {
    var presentTime = document.getElementById('timer').innerHTML;
    var timeArray = presentTime.split(/[:]+/);
    var m = timeArray[0];
    var s = checkSecond((timeArray[1] - 1));
    if(s==59){m=m-1}

    document.getElementById('timer').innerHTML =
      m + ":" + s;
    console.log(m)
    // Check if the time is 0:00
    if (s == 0 && m == 0) { return };
    setTimeout(startTimer, 1000);
  }

【讨论】:

    猜你喜欢
    • 2014-07-27
    • 2012-11-05
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多