自页面加载以来的JQuery时钟/计时器(即使用户在他的计算机上更改时间)

时间:2013-01-12 22:51:10

标签: javascript jquery math time timer

我已经修改了SO, provided by SLaks中的代码,因此即使用户更改了计算机上的时间,也可以使用它。

<div id="timer"></div>的时间仍然显示自页面加载以来的实时时间(即使用户更改了计算机上的时间)。

当时间改变时,会出现警告(请参阅下面的代码)。 问题是:一旦时间改变,警报每秒出现无限次(但预计只有一次)。为什么会这样?

$(document).ready(function () {
    var start = new Date;
    var end = (new Date - start) / 1000;
    setInterval(function () {
        if (Math.abs(end - (new Date - start) / 1000 )>1) {
            start = new Date - end * 1000;
            alert(Math.abs(end - (new Date - start) / 1000 ));
        }
        end = (new Date - start) / 1000;

        $('#timer').text(end + " Seconds");
    }, 100);
});

1 个答案:

答案 0 :(得分:2)

实际上非常简单 - 在消息框关闭之前,脚本执行暂停。关闭它时,计时器已经延迟,条件再次为真。您可以通过复制alert[...]行来自行测试:如果您足够快地关闭第一条消息,则第二条消息将显示低于1的值。

只需用一些基于HTML的浮动窗口替换alert,一切都会好的。