2

これは IE では機能しません。永遠に - 00:00:00 Chrome、Firefox で動作します。なんで?どうすれば修正できますか?

function timer()
{
    var now = new Date();
    var enddate = new Date("07,12,2012,23:00:00");
    var totalRemains = (enddate.getTime()-now.getTime());
    if (totalRemains>1)
    {
        var RemainsSec=(parseInt(totalRemains/1000));
        var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
        var secInLastDay=RemainsSec-RemainsFullDays*24*3600;
        var RemainsFullHours=(parseInt(secInLastDay/3600));
        if (RemainsFullHours<10){RemainsFullHours="0"+RemainsFullHours};
        var secInLastHour=secInLastDay-RemainsFullHours*3600;
        var RemainsMinutes=(parseInt(secInLastHour/60));
        if (RemainsMinutes<10){RemainsMinutes="0"+RemainsMinutes};
        var lastSec=secInLastHour-RemainsMinutes*60;
        if (lastSec<10){lastSec="0"+lastSec};
        var mcend = Date.parse("Jan 1, 2009, 00:00:00");
        var mcnow = now.getTime();
        var mc = ((mcend-mcnow)/10).toFixed(0).substr(8);
        document.getElementById('timer').innerHTML = '<p class="timeline">TIME LEFT: '+ RemainsFullHours+":"+RemainsMinutes+":"+lastSec+'</p>';
        setTimeout("timer()",10);
    } 
    else {document.getElementById("timer").innerHTML = '<p class="timeline">TIME LEFT: 00:00:00</p>';}
}

<body onload="timer();">

助けてください。

4

1 に答える 1

4

問題は次の行にあります。

var enddate = new Date("07,12,2012,23:00:00");

これは日付形式ではありません。Firefox は勇敢にそれを理解しています。Internet Explorer が同じように役立つとは思わないでください。IE は冷酷で、独り歩きします。

Dateオブジェクト コンストラクターは、いくつかのパラメーターを取ります。

new Date()
new Date(ミリ秒)
new Date(dateString)
new Date(年、月、日 [、時、分、秒、ミリ秒])

このオプションを使用するdateString場合、日付文字列は RFC 2822 仕様に準拠する必要があります。サポートされている形式を使用すると機能します。

var enddate = new Date("July 12, 2012 23:00:00");

AND、決して、決して、文字列をsetTimeoutに渡さず、代わりに関数参照を渡します。

setTimeout(timer,10);

ここで試してみてください: http://jsfiddle.net/bVCMe ​​/

ドキュメンテーション

于 2012-07-12T17:19:23.013 に答える