2

这在 IE 中不起作用。Forever - 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函数有几个参数:

新日期()
新日期(毫秒)
新日期(日期字符串)
新日期(年,月,日[,小时,分钟,秒,毫秒])

使用该dateString选项时,您的日期字符串必须符合RFC 2822 规范;如果您使用受支持的格式,它会起作用:

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

并且,从不,从不,从不将字符串传递给setTimeout,而是将其传递给函数引用:

setTimeout(timer,10);

在这里试试:http: //jsfiddle.net/bVCMe ​​/

文档

于 2012-07-12T17:19:23.013 回答