我已经从后端的格式00:12:54时间显示到屏幕上。但是,我希望这个时间能够继续下去。我尽管在javascript中创建了一个变量,它会使用旧的时间,并用setTimeout
来循环显示带有document.getElementById的新值。我认为如果我有很多时间在同一时间下跌,这可能会有问题。我可能需要一个数组?在Javascript中计数为0?
你会怎么做?如果我没有其他建议,我会试试我的方式,但我很想知道它是否有更安全的方法来做到这一点。
我已经从后端的格式00:12:54时间显示到屏幕上。但是,我希望这个时间能够继续下去。我尽管在javascript中创建了一个变量,它会使用旧的时间,并用setTimeout
来循环显示带有document.getElementById的新值。我认为如果我有很多时间在同一时间下跌,这可能会有问题。我可能需要一个数组?在Javascript中计数为0?
你会怎么做?如果我没有其他建议,我会试试我的方式,但我很想知道它是否有更安全的方法来做到这一点。
一般算法:从服务器
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();
}
你知道jQuery框架吗?这是一个Javascript框架,它有很多实用的方法和功能,可以让你更轻松地完成Javascript。
这是count down plugin(还没有测试过)。我建议你download JQuery比download the plugin。检查网站上“相对”选项卡上的代码示例。你可以有这样的东西:
$('#until2d4h').countdown({until: '+12M +54S'});
*我建议你唯一的缺点是,你会需要2 .js被添加。尝试仅在需要时添加它们,然后才能找到。
在Grab hands and set your own time.看一看,检查其代码。虽然它是用Dojo编写的,但“时钟”部分是用普通的JavaScript编写的。在你的情况下唯一的区别是如何提前减少计数器而不是增加计数器。
还没有使用过这个,但已经发现基思伍德的其他插件非常可靠 – seanb 2008-12-16 22:37:27