【问题标题】:javascript: number counter live updatedjavascript:数字计数器实时更新
【发布时间】:2013-10-22 16:04:45
【问题描述】:

我正在寻找一种从给定日期开始每秒自动增加一个数字的方法,并且当我在页面上时它必须实时更新。 例如,我决定今天在 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;
}

这与我的目标相似,但它需要钱,这并不是我所需要的。

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: javascript counter increment


【解决方案1】:

你很接近。您所需要的只是对更新功能进行微小的更改。你可以跳过你的 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();
}

基本上,它获取 start 和 current 之间的差异,并将其放入 amount 而不是货币价值。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多