Javascript倒计时在Safari或IE中不起作用

时间:2013-08-16 19:37:57

标签: javascript countdown

此功能适用于Chrome,但不适用于IE或Safari,我做错了什么?

function countdown(){
    var dDay = new Date().getUTCDate() + 1;
    var dMonth = new Date().getUTCMonth() + 1;
    var dYear = new Date().getUTCFullYear();
    var BigDay = new Date(dYear+ ", " +dMonth+ ", " +dDay+ ",00:00:00");
    var msPerDay = 24 * 60 * 60 * 1000;
    var today = new Date();
            var timeLeft = (BigDay.getTime() - today.getTime());

            var e_daysLeft = timeLeft / msPerDay;
            var daysLeft = Math.floor(e_daysLeft);

            var e_hrsLeft = (e_daysLeft - daysLeft)*24;
            var hrsLeft = Math.floor(e_hrsLeft);

            var e_minsLeft = (e_hrsLeft - hrsLeft)*60;
            var minsLeft = Math.floor(e_minsLeft);

            var e_secsLeft = (e_minsLeft - minsLeft)*60;
            var secsLeft = Math.floor(e_secsLeft);
            if(daysLeft.toString().length === 1){
              daysLeft = "0"+daysLeft;
            } 
            if(hrsLeft.toString().length === 1){
              hrsLeft = "0"+hrsLeft;
            } 
            if(minsLeft.toString().length === 1){
              minsLeft = "0"+minsLeft;
            } 
            if(secsLeft.toString().length === 1){
              secsLeft = "0"+secsLeft;
            } 

            timeString = daysLeft + ":" + hrsLeft + ":" + minsLeft + ":" + secsLeft;
            return timeString;     
    }

我用它打印计数器

window.setInterval(function(){
           $('#countdown').html("Time left: "+ countdown());
        }, 1000);

这是我在Chrome中获得的结果:

Time left: 00:01:55:15

这是我在IE和Safari中得到的结果:

Time left: NaN:NaN:NaN:NaN

1 个答案:

答案 0 :(得分:2)

我认为是因为您正在构建一个无效的日期对象:

var BigDay = new Date(dYear+ ", " +dMonth+ ", " +dDay+ ",00:00:00");

文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

代表一个月:

  

表示月份的整数值,从1开始为0   12月11日。

您只想在今天添加一天,因此请尝试更改您的代码:

var BigDay = new Date();
BigDay.setDate(BigDay.getDate() + 1);
BigDay.setHours(0, 0, 0, 0);

演示:http://jsfiddle.net/IrvinDominin/HgUhq/