计时器Javascript

计时器Javascript,javascript,Javascript,这在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) {

这在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();">
函数计时器()
{
var now=新日期();
var enddate=新日期(“07,122012,23:00:00”);
var totalresistes=(enddate.getTime()-now.getTime());
如果(总数仍然大于1)
{
var RemainsSec=(parseInt(totalresists/1000));
var remainsfulldies=(parseInt(remainsec/(24*60*60));
var secInLastDay=RemainsSec RemainsFullDays*24*3600;
var RemainsFullHours=(parseInt(secInLastDay/3600));

如果(RemainsFullHours问题在这一行:

var enddate = new Date("07,12,2012,23:00:00");
这不是一种约会格式。Firefox很有意义,别指望InternetExplorer也能帮你,也就是说,他很无情,一个人走

Date
对象构造函数采用几个参数:

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

使用
dateString
选项时,日期字符串必须符合;如果使用支持的格式,则该选项有效:

var enddate = new Date("July 12, 2012 23:00:00");
并且,决不,决不,决不将字符串传递给
setTimeout
,而是传递函数引用:

setTimeout(timer,10);
请在此处尝试:

文档

  • 在MDN上设置超时
  • MDN上的日期
  • RFC 2822字符串日期格式规范-

    • 问题出在这一行:

      var enddate = new Date("07,12,2012,23:00:00");
      
      这不是一种约会格式。Firefox很有意义,别指望InternetExplorer也能帮你,也就是说,他很无情,一个人走

      Date
      对象构造函数采用几个参数:

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

      使用
      dateString
      选项时,日期字符串必须符合;如果使用支持的格式,则该选项有效:

      var enddate = new Date("July 12, 2012 23:00:00");
      
      并且,决不,决不,决不将字符串传递给
      setTimeout
      ,而是传递函数引用:

      setTimeout(timer,10);
      
      请在此处尝试:

      文档

      • 在MDN上设置超时
      • MDN上的日期
      • RFC 2822字符串日期格式规范-
      永远不要将字符串传递给
      setInterval()
      setTimeout()
      。这样做与使用
      eval()
      一样糟糕,并且在使用变量时会导致代码无法读取,甚至可能不安全,因为您需要将它们插入字符串中,而不是传递实际的变量。正确的解决方案是
      setInterval>(function(){/*your code*)},毫秒);
      这同样适用于
      setTimeout()
      。如果您只想不带任何参数调用单个函数,也可以直接传递函数名:
      setInterval(someFunction,毫秒);
      (请注意,函数名后面没有
      ()
      )切勿将字符串传递给
      setInterval()
      setTimeout()
      。这样做与使用
      eval()
      一样糟糕,并且在使用变量时会导致无法读取且可能不安全的代码,因为您需要将它们插入字符串而不是传递实际变量。正确的解决方案是
      setInterval(function()){/*您的代码*)},毫秒);
      。这同样适用于
      setTimeout()
      。如果您只想不带任何参数调用单个函数,也可以直接传递函数名:
      setInterval(someFunction,毫秒);
      (请注意,函数名后面没有
      ()