【发布时间】:2014-04-07 14:54:32
【问题描述】:
编辑和更新:作为参考,我只用 1 个计时器和一个秒到时间转换器重写了整个内容。非常干净,不太复杂。以下是完整代码:http://pastebin.com/Hb6cBryL
我得到了这个用 javascript 构建的计时器:http://powerpoint.azurewebsites.net/
这是非常简单的代码,但对于最终实现,我需要能够暂停计时器并重新启动它。我使用 2 个 setIntervalls,1 代表每 60 秒触发的分钟数,1 代表每秒触发的秒数。
当我暂停它时,我会清除间隔。但是,当我重新启动它们时,分钟会以 60 间隔重新启动,并且不再与秒同步。
我可能以非常错误的方式实现了这一点,所以我想征求您的意见。我的一个想法是继续 inverval 但避免更新页面上的变量和文本,以便分钟/秒保持同步
js代码:
var minutes = null, seconds = null, cnt, secs;
function settimer(frm) { if (minutes == null) { cnt = frm.timeinput.value - '1'; secs = '59';} };
function stop() {
clearInterval(minutes);
clearInterval(seconds);
minutes = null;
seconds = null;
document.getElementById("minutes").innerHTML = '00';
document.getElementById("seconds").innerHTML = '00';
}
function pause() {
clearInterval(minutes);
clearInterval(seconds);
}
function runtimer() {
event.preventDefault();
if (minutes == null) {
document.getElementById("minutes").innerHTML = cnt;};
minutes = setInterval(function () {
if (cnt == '0') { stop() } else { cnt -= 1; document.getElementById("minutes").innerHTML = cnt; };
}, 6000);
if (seconds == null) { document.getElementById("seconds").innerHTML = secs; };
seconds = setInterval(function () {
if (secs == '0') { secs = '59' } else { secs -= 1; document.getElementById("seconds").innerHTML = secs; };
}, 100);
}
【问题讨论】:
-
您的代码无法在此处运行 (Mozilla FF 28.0)。无论如何,我认为您不应该为
minutes设置Interval;尝试从seconds计算minutes。 -
这可能确实是一个更好的方法,感谢您的建议。尚未尝试所有浏览器。
标签: javascript timer setinterval intervals