Javascript秒表以2的幂递增

时间:2012-11-08 06:15:37

标签: 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(当前),我可以看到两个问题。首先,虽然它确实经历了每个数字,但它似乎变得越来越快,以2的幂。在输出div中,第一个tick为1,第二个为2,第三个为4,第四个为8,依此类推。此外,它实际上并没有在它达到600时停止计数,即使它停止更新div。我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

你使用setInterval,每次调用函数时都会以设定的间隔调用回调,导致许多调用countDown()

也许您想要使用setTimeout function,而只会在延迟后调用该函数。