JS Money Counter

时间:2013-10-03 12:41:07

标签: javascript

我需要从2013年10月1日开始每天增加3000万美元。我的代码基于帖子here

头部代码:

window.onload=function(){
var amount = document.getElementById('amount');
var start = new Date("October 1, 2013 00:00:00").getTime();
var current;
update();

function update() {
var current = (new Date().getTime() - start)/1000*147.22222222;
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;
}
}

正文中的代码:

<div id='amount'></div>

有两件事是错的。它在Firefox中不起作用(它所基于的代码也不起作用)。现在总额应该超过6000万美元,但它只有3000万美元左右。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

amount.innerText更改为amount.innerHTML,这就是结果。 http://jsfiddle.net/X3hSH/

答案 1 :(得分:0)

我刚刚改变了你从一月十日开始计算日期差异的逻辑而且它有效

//3600 * 1000 milli seconds in 1 hour
//24 * 3600 * 1000 milli seconds in 1 day
var current = ((new Date()-start)/(24*3600*1000)); 
//multiply by 30 million * number of diff in days
current = current * 3000000;

关于第二个问题

innerText是一个礼貌IE的东西。 W3C将textContent定义为官方财产

你应该可以做这样的事情

if(amount.innerText){
  amount.innerText = formatMoney(current);
}
else{
  amount.textContent = formatMoney(current);
}

或直接使用JQuery,您不必担心不同的浏览器行为

JSFIDDLE