重置计时器错误 - Javascript

时间:2018-03-13 03:57:20

标签: javascript loops settimeout nan

我正在尝试创建一个运行两次的一分钟计时器。在第一次运行期间,计时器将倒计时为0.然后,计时器将重置为一分钟并再次开始倒计时。要创建这个计时器,我使用的是Javascript,这是一种我不是特别擅长的编程语言。

当我只使用一次时,计时器工作。但是,当我尝试在for循环中使用它时,创建一个递归函数,或者甚至通过调用函数两次连续运行它,倒计时不是连续的。例如,它将显示4,然后是2,然后是-1,即使倒计时应该是连续的并且以0结束。

我在StackExchange上搜索过类似的问题。我跟着the answer to this question,但倒计时显示NaN而不是正确的数字。我还读过其他一些问题,但他们的答案对我没有用。

我的Javascript代码是:

            window.onload = function() {
                var seconds = 60;
                function timeout() {
                    setTimeout(function () {
                        seconds--;
                        document.getElementById("time").innerHTML = String(seconds)
                        if (seconds > 0){
                            timeout();
                        }
                    }, 1000);
                }
                timeout()
                seconds = 60;
                timeout()
            };

document.getElementById("time")是指以time作为其ID的空段落。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您的代码同时运行该函数两次。试试这个,设置一个单独的计数器,并在计数达到设定数量后停止计时器:



window.onload = function() {
  var seconds = 60;
  var count = 1;

  function timeout() {
    setTimeout(function() {
      seconds--;
      document.getElementById("time").innerHTML = String(seconds)
      if (seconds > 0) {
        timeout();
      } else {
        seconds = 60;
        count++;
        if (count <= 2) {
          timeout();
        }
      }
    }, 1000);
  }
  timeout();
};
&#13;
<p id="time"> </p>
&#13;
&#13;
&#13;