var period = 60 * 1000 * 60 * 2
var end
var date = new Date(end)
var interval = 1000
var loop = function () {
if (!end) { end = new Date().getTime() + period }
var diff = end - new Date().getTime()
var h = Math.floor(diff / (60 * 1000 * 60))
var hdiff = diff % (60 * 1000 * 60)
var m = Math.floor(hdiff / (60 * 1000))
var mdiff = hdiff % (60 * 1000)
var s = Math.floor(mdiff / (1000))
console.log(h, m, s)
setTimeout(loop, interval)
}
setTimeout(loop, interval)
上面是我写的一个倒计时方法,在控制台打印出的结果却总是跳了一秒,如下所示:
不知这是为何?
解决了,第一次执行方法的时候就已经过了一秒了,所以在初始化end变量的时候就应该减去一秒!
上述代码会造成执行代码的时间累加问题,为了解决这个问题,参考这篇文章,更精确的倒计时应该是这样的:
感谢各位不吝赐教。