用于网页的通用循环倒数计时器

时间:2012-06-15 12:14:54

标签: javascript jquery html timer countdown

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

如果有人可以提供帮助,或者知道某个类似的链接,我会非常感激!

提前致谢。

5 个答案:

答案 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 methodsgetUTCHours,{{1 }和getUTCMinutes