0

我正在寻找一个计时器放在我的网站上,计时器将设置为一小时,在倒计时到零后,它会再次重置回一小时。它还需要是通用的,因此它对所有用户显示相同,并且在刷新页面时不会重置回 1 小时。我猜这相对简单,但是我能找到的只是计时器,它计数到某个时间并停止,或者在页面刷新后从零开始的计时器,这是不够的。

如果有人可以提供帮助,或者知道可以提供类似内容的链接,我将不胜感激!

提前致谢。

4

5 回答 5

3

这是我知道它会有所帮助的条件。

ctsecs--;
if(ctsecs < 0) {
    if(ctmnts > 0) {
        ctsecs = 59;
        ctmnts--;
        if(cthrs > 0) {
            ctmnts = 59;
            cthrs--;
        } else {
            ctsecs = 0;
            ctmnts = 0;
            cthrs = 0;
        }
    }
}
于 2012-11-26T14:36:16.880 回答
2

您可以让计时器仅显示 UTC 当前分钟和秒的补码:

​setInterval(function() {
    var d = new Date;
    var s = (60 - d.getUTCMinutes()) + ":" + (60 - d.getUTCSeconds());
    $("#time").text(s);
}, 250);​    

这是一个演示页面,您可以在其中看到它的运行情况。

于 2012-06-15T12:22:55.297 回答
1

为什么不只获取当前时间,只显示分钟?否则,它必须在服务器端完成。

于 2012-06-15T12:18:24.503 回答
0

如果您想要一个每秒滴答的计时器,那么 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和.getUTCMinutesgetUTCSeconds

于 2012-06-15T14:30:54.503 回答
0

您可以为此目的使用 ajax。在服务器上创建一个数据库条目大约 60 分钟,并使用 ajax 请求更新客户端的时间,这将比客户端脚本更安全。

于 2012-06-15T12:28:36.090 回答