0

簡単なカウントダウンスクリプトがあります。コードはクロームで動作しますが、Firefoxでは動作しません。FirefoxではNaNが表示されますが、chromeはカウントダウンにこれが発生する理由を示しています。

function CountDownTimer(time, name) {
  var counter = setInterval(function(){
    var today = new Date();
    var expire = new Date(time);
    var timeRemains = expire - today;

    var days  = Math.floor(timeRemains / (1000 * 60 * 60 * 24));
    var hours = Math.floor(timeRemains / (1000 * 60 * 60));
    var mins  = Math.floor(timeRemains / (1000 * 60));
    var secs  = Math.floor(timeRemains / 1000);

    var dd = days;
    var hh = hours - days  * 24;
    var mm = mins  - hours * 60;
    var ss = secs  - mins  * 60;

    if (expire < today) {
      clearInterval(counter);
      document.getElementById(name).innerHTML = '<span class="expire">expire!</span>';
      return;
    } else {
         if (dd < 10) {
             dd = "0" + dd;
         }
         if (hh < 10) {
             hh = "0" + hh;
         }
         if (mm < 10) {
             mm = "0" + mm;
         }
         if (ss < 10) {
             ss = "0" + ss;
         }
         document.getElementById(name).innerHTML = dd + ' : ' + hh + ' : ' + mm + ' : ' + ss;
    }
  }, 1000 );
}


CountDownTimer("2012-07-06 19:00:00", "Time1");​
4

4 に答える 4

2

Date() 関数は、すべてのブラウザーでうまく機能しないようです。次のように setUTC 関数を使用してみてください。

today.setUTCFullYear(2012);
today.setUTCHours(19, 0, 0, 0);

更新: Date() コンストラクターは、「不適切な」文字列が使用されている場合を除いて、すべてのブラウザーで問題ありません。これを試して:

var today = new Date(2012,6,7,19,0,0)
于 2012-07-07T02:09:43.647 に答える
2

次のように日付形式を変更します。

CountDownTimer("June 7, 2012 19:00:00", "Time1");​
于 2012-07-07T02:06:51.027 に答える
0

問題は新しいDate()形式にあり、ブラウザー間で一貫性がありません。

異なるブラウザでのJavaScriptの日付形式に問題があります

--charsを/に変換することで機能させることができます。キャメロンの答えは、優れたクロスブラウザー動作を提供するはずです。そうでない場合は、moment.jsなどのサードパーティライブラリの使用を検討してください。

https://stackoverflow.com/questions/802861/javascript-date-manipulation-library

于 2012-07-07T02:30:45.193 に答える
0

NaN数ではないことを表します。

Leo の提案が役に立たない場合は、いくつかの散発的なconsole.log()をミックスに追加して、問題がどこにあるかを調べる価値があります。

于 2012-07-07T02:10:36.603 に答える