我正在寻找一个计时器放在我的网站上,计时器将设置为一小时,在倒计时到零后,它会再次重置回一小时。它还需要是通用的,因此它对所有用户显示相同,并且在刷新页面时不会重置回 1 小时。我猜这相对简单,但是我能找到的只是计时器,它计数到某个时间并停止,或者在页面刷新后从零开始的计时器,这是不够的。
如果有人可以提供帮助,或者知道可以提供类似内容的链接,我将不胜感激!
提前致谢。
我正在寻找一个计时器放在我的网站上,计时器将设置为一小时,在倒计时到零后,它会再次重置回一小时。它还需要是通用的,因此它对所有用户显示相同,并且在刷新页面时不会重置回 1 小时。我猜这相对简单,但是我能找到的只是计时器,它计数到某个时间并停止,或者在页面刷新后从零开始的计时器,这是不够的。
如果有人可以提供帮助,或者知道可以提供类似内容的链接,我将不胜感激!
提前致谢。
这是我知道它会有所帮助的条件。
ctsecs--;
if(ctsecs < 0) {
if(ctmnts > 0) {
ctsecs = 59;
ctmnts--;
if(cthrs > 0) {
ctmnts = 59;
cthrs--;
} else {
ctsecs = 0;
ctmnts = 0;
cthrs = 0;
}
}
}
您可以让计时器仅显示 UTC 当前分钟和秒的补码:
setInterval(function() {
var d = new Date;
var s = (60 - d.getUTCMinutes()) + ":" + (60 - d.getUTCSeconds());
$("#time").text(s);
}, 250);
这是一个演示页面,您可以在其中看到它的运行情况。
为什么不只获取当前时间,只显示分钟?否则,它必须在服务器端完成。
如果您想要一个每秒滴答的计时器,那么 setInterval 是一个糟糕的选择。它仅以大约要求的间隔运行,并且会缓慢漂移。除非你经常调用它,否则使用它的时钟不会很流畅,这是一种浪费。
更好的策略是使用 setTimeout 顺序调用自身,根据到下一个刻度的时间加上少量设置延迟。例如一个非常简单的时钟:
<script>
function addZ(n) {
return (n<10? '0' : '') + n;
}
function update() {
var d = new Date();
// Set lag to 20ms after next full second
var lag = 1020 - d.getMilliseconds();
document.getElementById('d0').innerHTML = addZ(d.getHours()) + ':' +
addZ(d.getMinutes()) + ':' + addZ(d.getSeconds());
setTimeout(update, lag);
}
window.onload = update;
</script>
<div id="d0"></div>
如果您对使用计数器的系统时钟感到满意,并且希望每个人都看到相同的数字(或多或少),则可以使用 Date 的UTC方法:getUTCHours
和.getUTCMinutes
getUTCSeconds
您可以为此目的使用 ajax。在服务器上创建一个数据库条目大约 60 分钟,并使用 ajax 请求更新客户端的时间,这将比客户端脚本更安全。