对chrome和firefox使用相同的代码,但得到不同的结果

时间:2012-07-07 01:57:07

标签: javascript

我有一个简单的倒计时脚本。该代码适用于chrome但不适用于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 个答案:

答案 0 :(得分:2)

更改以下内容的日期格式:

CountDownTimer("June 7, 2012 19:00:00", "Time1");​

答案 1 :(得分:2)

Date()函数似乎并不适用于所有浏览器。尝试在其上使用setUTC函数,如下所示:

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

更新:Date()构造函数适用于所有浏览器,而不是在使用“不正确”字符串时。试试这个:

var today = new Date(2012,6,7,19,0,0)

答案 2 :(得分:0)

NaN代表的不是数字。

如果Leo的建议没有帮助,可能值得添加一些零星的console.log()来找出问题所在。

答案 3 :(得分:0)

问题在于新的Date()格式,这种格式在浏览器中并不一致。

Problem with date formats in JavaScript with different browsers

您可以通过将 - 字符转换为/来使其工作。 Cameron的答案应该提供良好的跨浏览器行为,否则考虑使用第三方库,如moment.js

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