我正在寻找一个计时器放在我的网站上,计时器将被设置为一个小时,在它倒计时到零后,它会再次重置为一个小时。它还需要是通用的,因此它对所有用户显示相同,并且如果刷新页面则不会重置为1小时。我猜这是相对简单的,但是我能找到的只是计时到一定时间并停止的计时器,或者是在页面刷新后不足以从零开始的计时器。
如果有人可以提供帮助,或者知道某个类似的链接,我会非常感激!
提前致谢。
答案 0 :(得分:3)
这是我知道它会有所帮助的条件。
ctsecs--;
if(ctsecs < 0) {
if(ctmnts > 0) {
ctsecs = 59;
ctmnts--;
if(cthrs > 0) {
ctmnts = 59;
cthrs--;
} else {
ctsecs = 0;
ctmnts = 0;
cthrs = 0;
}
}
}
答案 1 :(得分:2)
为什么不只是获取当前时间,只显示分钟?否则,它必须在服务器端完成。
答案 2 :(得分:2)
您可以让计时器显示UTC当前分钟和秒的补充:
setInterval(function() {
var d = new Date;
var s = (60 - d.getUTCMinutes()) + ":" + (60 - d.getUTCSeconds());
$("#time").text(s);
}, 250);
这是一个demo page,你可以在其中看到它。
答案 3 :(得分:0)
你可以使用ajax来达到这个目的。在服务器上创建一个大约60分钟的数据库条目,并使用ajax请求更新客户端的时间,这将比客户端脚本更安全。
答案 4 :(得分:0)
如果你想要一个每秒滴答的计时器,setInterval是一个糟糕的选择。它只在大约要求的时间间隔运行并且会慢慢漂移。使用它的时钟不会很流畅,除非你经常打电话,这很浪费。
更好的策略是使用setTimeout按顺序调用自身,根据下一个tick的时间加上少量来设置滞后。例如一个非常简单的时钟:
<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>
如果您对使用计数器的系统时钟感到满意,并且希望每个人都看到相同的数字(或多或少),您可以使用日期UTC methods:getUTCHours
,{{1 }和getUTCMinutes
。