我一直运行到几个问题创造一个倒计时脚本与重复和延迟的
- 它不运行的时候平原JS倒计时顺利
- 很难使其重复(关闭)
- 难以延迟启动和延迟重复(关闭)
有人可以帮我解决这个码应该在我看来工作,但不
我需要的处理是
a。计数器启动延迟页面加载后的秒数,
b。
- 启动时,计数器似乎等待倒计时 之前的附加第二:当计数器后 延迟秒
- 它不会暂停
- 在计数器继续后重复开始
问题数达到0,倒计时重新起动
。
// more accurate timer - https://gist.github.com/1185904
function interval(duration, fn){
this.baseline = undefined
this.run = function(){
if(this.baseline === undefined){
this.baseline = new Date().getTime()
}
fn()
var end = new Date().getTime()
this.baseline += duration
var nextTick = duration - (end - this.baseline)
if(nextTick<0){
nextTick = 0
}
(function(i){
i.timer = setTimeout(function(){
i.run(end)
}, nextTick)
}(this))
}
this.stop = function(){
clearTimeout(this.timer)
}
}
window.onload=function() {
var cnt1 = 10;
var delay1 = 5;
var timer1 = new interval(1000, function(){
document.getElementById('out1').innerHTML=cnt1--
if (cnt1 <= 0) { // trying to reset
timer1.stop(); // does not work
cnt1 = 10;
setTimeout(function() { timer1.run()},delay1*1000)
}
})
setTimeout(function() { timer1.run()},delay1*1000)
}
谢谢 - 你能告诉我如何,在onload,在延迟秒数之后,像现在一样启动它,然后当它停止重新启动后延迟秒数 - 因此页面加载5秒后,时间在结束后5秒开始,它再次开始。 – mplungjan
PS:我看到你使用新的日期没有() - 你想解释的原因吗?谢谢 – mplungjan
@mplungjan,只是改变暂停条件:http://jsfiddle.net/RVBDQ/4/(注意我在本例中也改变了主体中两行代码的顺序)。你可以做得更好。像检查函数是否返回false并自动停止等。 – davin