Javascript 秒表以 2 的幂递增

标签 javascript timer

我的简单秒表有以下代码,它只计算秒数,没有任何格式:

function countDown(from, interval, callback) {
   interval = interval || 1000;
   var current = 0;
   var onCount = function() {
      current++;
      if (current <= from) {
         callback(current, from);
         setInterval(onCount, interval);
      }
   }

   onCount();
}

这是通过 onclick 调用的,代码如下:

countDown(600, 1000, function(current, from) {
   time_out.innerHTML = current;
});

放入console.log(current),我可以看到两个问题。首先,虽然它确实遍历了每个数字,但它似乎变得越来越快,是 2 的幂。在输出 div 中,第一个刻度为 1,第二个刻度为 2,第三个刻度为 4,第四个刻度为 8,依此类推。此外,当达到 600 时,它实际上并没有停止计数,即使它停止更新 div。我在这里做错了什么?

最佳答案

您使用 setInterval每次调用该函数时,都会以设定的时间间隔调用回调,从而导致对 countDown()

的多次调用

也许您想使用 setTimeout function相反,它只会在延迟后调用该函数一次。

关于Javascript 秒表以 2 的幂递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13283541/

相关文章:

timer - 有没有办法查询 Julia 计时器以查看它是否正在运行?

javascript - 即使计时器上的数字低于 10,如何使计数器为两位数

mysql - 类(class)计时器重载服务器

javascript - Javascript 是否有可能保持相同的表达式值?

javascript - 我正在尝试使用 jQuery 加载要在 D3 plus 可视化中使用的 JSON 文件

ios - UIDatePicker 作为带秒数的倒数计时器(Swift)

Android - 在特定时间后更改背景颜色

使用匿名函数后的javascript闭包

javascript - 如何在用户关闭浏览器/选项卡之前激活功能?

javascript - JQuery 拉伸(stretch)按钮水平到窗口宽度