在Javascript中向下计数x到0?

时间:2008-12-16 22:21:13

标签: javascript

我从格式00:12:54的后端开始,然后将其显示在屏幕上。但是,我想有这个时间继续下去。我已经在javascript中创建了一个变量,该变量将耗尽时间并使用setTimeout循环以使用document.getElementById显示新值。我认为如果我有很多时间在同一时间下来,这可能会有问题。我可能需要一个数组?

你会怎么做?如果我没有其他建议,我会尝试自己的方式,但我很想知道它是否确实有更安全的方法。

4 个答案:

答案 0 :(得分:4)

你知道jQuery Framework吗?它是一个Javascript框架,有许多实用程序方法和函数,可以让你更轻松地完成Javascript工作。

这是count down plugin(尚未测试过)。

我建议你download JQuery而不是download the plugin。检查网站上“相对”选项卡的代码示例。你可以有类似的东西:

 $('#until2d4h').countdown({until: '+12M +54S'});

*我建议您的唯一缺点是您需要添加2个.js。尝试仅在需要时添加它们,您将会找到它。

答案 1 :(得分:2)

一般算法:

  1. 从服务器读取时间。
  2. 阅读当前时间。
  3. 调用函数。
  4. 在您的函数中,读取当前时间,从您在步骤2中读取的初始时间获取增量。
  5. 从步骤1中从服务器读取的初始时间减去增量并显示余数。
  6. 如果你想继续倒计时,该函数应该调用window.setTimeout在1000ms内调用自身(或根据函数内所经过的时间进行调整)。
  7. 这是一个粗略的剪辑:

    window.onload = function () {
        var countdown_start_in_ms = 6000; // from server
    
        function tick() {
            var now = new Date().getTime();
            var disp = start - now;
    
            if (disp < 0) {
                disp = 0;
            }
    
            var el = document.getElementById("countdown");
    
            el.innerHTML =
                // quick hack to format time
                /(\d\d:\d\d:\d\d) ...$/.exec(new Date(disp).toUTCString())[1];
    
            if (disp > 1000) {
                var elapsed = new Date().getTime() - now;
                window.setTimeout(tick, 1000 - elapsed);
            } else {
                // stop countdown and set color to light grey
                el.style.color = "#ccc";
            }
        }
    
        var start = new Date().getTime() + countdown_start_in_ms;
        tick();
    }
    

答案 2 :(得分:1)

你不会喜欢这个的味道,但它对你有好处:

谷歌搜索“javascript timer”,并通过该搜索返回的各种示例和教程轻松阅读。

您将学到的不仅仅是如何编写倒计时器。 : - )

祝你好运!

答案 3 :(得分:0)

查看Grab hands and set your own time.并检查其代码。虽然它是用Dojo编写的,但“时钟”部分是用纯JavaScript编写的。在你的情况下,唯一的区别是如何推进反击 - 减少而不是增加它。