- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑和更新:作为引用,我只用 1 个计时器和一个秒到时间转换器重写了整个内容。非常干净,不那么复杂。这是完整的代码:http://pastebin.com/Hb6cBryL
我得到了这个我用 javascript 构建的计时器:http://powerpoint.azurewebsites.net/
这是非常简单的代码,但对于最终实现,我需要能够暂停计时器并重新启动它。我使用 2 个 setIntervals,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);
}
最佳答案
您需要以某种方式包装它们,并认识到您无法立即获取计时器的 ID。
function setIntervalWithOffset(fn, delay, offset) {
var o = {id: null, o_id: null};
o.o_id = window.setTimeout(function () {
o.id = window.setInterval(fn, delay);
}, offset);
return o;
}
function setTimeoutWithOffset(fn, delay, offset) {
var o = {id: null, o_id: null};
o.o_id = window.setTimeout(function () {
o.id = window.setTimeout(fn, delay);
}, offset);
return o;
}
要清除,请在 obj.o_id
上使用 window.clearTimeout
以及您为 obj.id
设置的任何类型。
您还应该考虑是否最好实现 setTimeout 循环而不是使用 setInterval 这样您就不会出现级联错误
关于javascript - 继续清除 setIntervall 而不是重置它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915959/
编辑和更新:作为引用,我只用 1 个计时器和一个秒到时间转换器重写了整个内容。非常干净,不那么复杂。这是完整的代码:http://pastebin.com/Hb6cBryL 我得到了这个我用 java
计时器将从加载页面后 10 分钟开始倒计时。如果我在一段时间后按下鼠标,倒计时应该再次开始。但随后计时器将在两个值之间跳转。看来,两者都在算计。如何删除现有间隔? Template.content.o
我是一名优秀的程序员,十分优秀!