如果您想按页面进行操作,那么您就快到了。现在,您的代码不允许您跟踪毫秒,因为您setInterval
每秒运行一次。我会推荐的是这样的:
(function() {
var counter = 0,
cDisplay = document.getElementById("counter");
format = function(t) {
var minutes = Math.floor(t/600),
seconds = Math.floor( (t/10) % 60);
minutes = (minutes < 10) ? "0" + minutes.toString() : minutes.toString();
seconds = (seconds < 10) ? "0" + seconds.toString() : seconds.toString();
cDisplay.innerHTML = minutes + ":" + seconds + "." + Math.floor(t % 10);
};
setInterval(function() {
counter++;
format(counter);
},100);
})();
这做了几件事来让你的代码每秒运行 10 次:
- 输出元素 ,
#counter
被缓存而不是每次迭代都检索
- 格式仅保留为算术运算 - 模和除法。
现在这也添加了前导零。
如果您想保持此计数器逐页运行,请考虑使用document.cookies
将最终值从一页传递到另一页。
小提琴
这是一个很好的第一个版本。但是,您可能想要:
- 暂停/重新启动您的计时器
- 重置你的计时器
- 有多个计时器
出于这个原因,我将添加上述代码的稍微复杂的形式,这将允许您管理多个计时器。这将利用一些 OO 概念。我们将使用一个TimerManager
对象来“托管”我们的计时器,每个Timer
对象都有一个到管理器的链接。
这样做的原因是因为每个计时器都将setInterval()
通过这种方式依赖于相同的计时器,而不是进行多次setInterval()
调用。这使您可以减少浪费的时钟周期。
大约 5 分钟后了解更多信息!