javascript:数字计数器直播更新

时间:2013-10-22 16:04:46

标签: javascript counter increment

我正在寻找一种从给定日期开始每秒自动递增一个数字的方法,并且当我在页面上时它必须更新。 例如,我决定今天在12.00.00,计数器将从0开始,然后必须每秒更新一次(1在12.00.01,2在12.00.02,依此类推),我想看到数字正在改变这页纸。如果两个访问者在同一秒加载页面,他们将看到相同的数字,并且数字的增长将同步。我该怎么做?我是javascript的新手,我找到了这个小提琴 http://jsfiddle.net/dm6LL/5/

var amount = document.getElementById('amount');
var start = new Date("August 15, 2012 00:00:00").getTime();
var current;
update();

function update() {
var current = (new Date().getTime() - start)/1000*0.158+138276343;
amount.innerText = formatMoney(current);
}

setInterval(update,1000);

function formatMoney(amount) {
    var dollars = Math.floor(amount).toString().split('');
    var cents = (Math.round((amount%1)*100)/100).toString().split('.')[1];
if(typeof cents == 'undefined'){
    cents = '00';
}else if(cents.length == 1){
    cents = cents + '0';
}
var str = '';
for(i=dollars.length-1; i>=0; i--){
    str += dollars.splice(0,1);
    if(i%3 == 0 && i != 0) str += ',';
}
return '$' + str + '.' + cents;
}

这与我的目标相似,但它运行的是金钱,而这并非我所需要的。

1 个答案:

答案 0 :(得分:0)

你很亲密。您只需对更新功能进行微小更改即可。你可以跳过你的 formatMoney功能。

尝试这样的事情:

function update() {
    var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
    var current = (new Date().getTime() - start);
    var diffDate = new Date(current);
    var days = Math.round(current/oneDay);
    amount.innerText = days + ":" + diffDate.getUTCHours() + ":" + diffDate.getUTCMinutes() + ":" + diffDate.getUTCSeconds();
}

基本上,它会获得开始和当前之间的差异,并将其放入amount而不是货币值。

还有oneDay来计算两个日期之间的天数。

您可以根据需要格式化输出,但这应该是您的开始。