在倒数计时器脚本中跳过了很多秒
Lots of seconds get skipped in countdown timer script
我做了一个倒数计时器。它使用日期函数来获取当前时间。然后它将那个时间存储在另一个 var 中。这个新变量已更改 hours/minutes/seconds,因此格式应与日期函数相同。
那我把这两个变量都变成自计数以来的时间,单位是毫秒。
然后我从新日期中减去当前日期,以毫秒为单位从两个变量中获取时间差。这应该是当前时间与目标时间的时差。
在此之后,我会将差异转换为可读的 hours/minutes/seconds 时间格式,并将显示在 div 中。还添加了一段代码以允许闪烁的倒计时计时器,如果计时器 运行 结束,它将提供 5 分钟的额外时间。 (这个倒数计时器应该是一个更大的脚本的一部分,做事情)
大问题是:定时器工作。做我想让它做的一切。但是非常卡!它会跳过显示秒数,即使我将 setTimeout 设置为 10 毫秒。我还使用了一个使用相同计时器设置(不同变量)的时钟,并且该时钟不会跳过任何时间,setTimeout 为 1000 毫秒...
试图使一些计算更小,甚至阅读了很多关于 javascript 中的 setTimeout 和 setInterval 漂移的内容,但这并不能解释我当前的问题。 (使用 setTimeout 进行聊天,每 500 毫秒重新加载一次消息,这就像一个魅力,所以我的 computer/client/server 可以处理小于 1000 毫秒的时间)
跳秒发生在 IE 和 firefox 上。在我的浏览器中,其他倒数计时器(它们不按照我的意愿行事)也 运行 正常。这里有什么问题?!?
https://jsfiddle.net/77cnvq82/
function startMyFunction() {
setTimeout(myFunction, 100);
}
本例中速度设置为100ms
实际问题出在您的舍入和数学运算上,而不是显示代码本身。
如果您将显示行更改为:
timerShowRemaining = timerShowRemaining+timerHours+":"+timerMinutes+":"+timerSeconds
+ (new Date());
它会显示当前时间,您会看到秒数均匀增加,即使您计算的数字有偏差和滞后。
我做了一个倒数计时器。它使用日期函数来获取当前时间。然后它将那个时间存储在另一个 var 中。这个新变量已更改 hours/minutes/seconds,因此格式应与日期函数相同。
那我把这两个变量都变成自计数以来的时间,单位是毫秒。 然后我从新日期中减去当前日期,以毫秒为单位从两个变量中获取时间差。这应该是当前时间与目标时间的时差。
在此之后,我会将差异转换为可读的 hours/minutes/seconds 时间格式,并将显示在 div 中。还添加了一段代码以允许闪烁的倒计时计时器,如果计时器 运行 结束,它将提供 5 分钟的额外时间。 (这个倒数计时器应该是一个更大的脚本的一部分,做事情)
大问题是:定时器工作。做我想让它做的一切。但是非常卡!它会跳过显示秒数,即使我将 setTimeout 设置为 10 毫秒。我还使用了一个使用相同计时器设置(不同变量)的时钟,并且该时钟不会跳过任何时间,setTimeout 为 1000 毫秒...
试图使一些计算更小,甚至阅读了很多关于 javascript 中的 setTimeout 和 setInterval 漂移的内容,但这并不能解释我当前的问题。 (使用 setTimeout 进行聊天,每 500 毫秒重新加载一次消息,这就像一个魅力,所以我的 computer/client/server 可以处理小于 1000 毫秒的时间)
跳秒发生在 IE 和 firefox 上。在我的浏览器中,其他倒数计时器(它们不按照我的意愿行事)也 运行 正常。这里有什么问题?!?
https://jsfiddle.net/77cnvq82/
function startMyFunction() {
setTimeout(myFunction, 100);
}
本例中速度设置为100ms
实际问题出在您的舍入和数学运算上,而不是显示代码本身。
如果您将显示行更改为:
timerShowRemaining = timerShowRemaining+timerHours+":"+timerMinutes+":"+timerSeconds
+ (new Date());
它会显示当前时间,您会看到秒数均匀增加,即使您计算的数字有偏差和滞后。