2008-12-16 67 views
0

我已经从后端的格式00:12:54时间显示到屏幕上。但是,我希望这个时间能够继续下去。我尽管在javascript中创建了一个变量,它会使用旧的时间,并用setTimeout来循环显示带有document.getElementById的新值。我认为如果我有很多时间在同一时间下跌,这可能会有问题。我可能需要一个数组?在Javascript中计数为0?

你会怎么做?如果我没有其他建议,我会试试我的方式,但我很想知道它是否有更安全的方法来做到这一点。

回答

2

一般算法:从服务器

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

这里有一个粗剪:

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(); 
} 
4

你知道jQuery框架吗?这是一个Javascript框架,它有很多实用的方法和功能,可以让你更轻松地完成Javascript。

这是count down plugin(还没有测试过)。我建议你download JQuerydownload the plugin。检查网站上“相对”选项卡上的代码示例。你可以有这样的东西:

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

*我建议你唯一的缺点是,你会需要2 .js被添加。尝试仅在需要时添加它们,然后才能找到。

+0

还没有使用过这个,但已经发现基思伍德的其他插件非常可靠 – seanb 2008-12-16 22:37:27

1

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

谷歌为“javascript timer”,并通过由搜索返回的各种例子和教程让你的手脏读。

除了如何编写倒数计时器之外,您将学到很多东西。 :-)

祝你好运!

0

Grab hands and set your own time.看一看,检查其代码。虽然它是用Dojo编写的,但“时钟”部分是用普通的JavaScript编写的。在你的情况下唯一的区别是如何提前减少计数器而不是增加计数器。