0

2013 年 10 月 1 日から、1 日あたり 3,000 万ドルずつ増加するカウント アップが必要です。以下のコードは、こちらの投稿に基づいています。

頭の中のコード:

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>

2つのことが間違っています。Firefox では動作しません (基になっているコードも動作しません)。総額は今では 6000 万ドルを超えるはずですが、わずか 3000 万ドル程度です。どんな助けでも大歓迎です。

4

2 に答える 2

2

これに変更amount.innerTextamount.innerHTMLた結果です。 http://jsfiddle.net/X3hSH/

于 2013-10-03T12:51:14.853 に答える
0

10月1日からの日付の差を計算するロジックを少し変更したところ、機能しました

//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;

2つ目の問題について

innerText一応IEの物です。W3C はtextContent、公式のプロパティとして定義します

あなたはこのようなことができるはずです

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

または、JQuery を直接使用すると、ブラウザーの動作の違いを気にする必要がなくなります。

JSFIDDLE

于 2013-10-03T12:53:25.227 に答える