2012-07-12 50 views
2

這在IE中不起作用。永遠 - 00:00:00 適用於Chrome,Firefox。 爲什麼? 我該如何解決它?定時器Javascript

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();"> 

你能幫助我嗎?

+1

** **從未傳遞的字符串爲'的setInterval()'或'的setTimeout()' 。這樣做與使用'eval()'一樣糟糕,並且只要使用變量,就會導致不可讀和可能不安全的代碼,因爲您需要將它們插入到字符串中,而不是傳遞實際變量。正確的解決方案是'setInterval(function(){/ * your code *)},msecs);'。 'setTimeout()'同樣適用。如果你只想調用一個沒有任何參數的函數,你也可以直接傳遞函數名:'setInterval(someFunction,msecs);'(注意函數名後面有** no **'()') – ThiefMaster 2012-07-12 17:15:00

回答

4

的問題是在這條線:

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

這不是日期格式。 Firefox是英雄般的有意義的,不要指望Internet Explorer能夠幫助你,IE是無情的,他獨自行走。

Date對象的構造函數有幾個參數:

新的Date()
新的日期(毫秒)
新的日期(dateString)
新的日期(年,月,日[,小時,分秒,秒,毫秒])

當使用dateString選項時,您的日期字符串必須符合the RFC 2822 specification;

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

AND,永遠,永遠,永遠字符串傳遞給setTimeout,它傳遞一個函數引用,而不是:

setTimeout(timer,10); 

這裏試試:http://jsfiddle.net/bVCMe/

如果您使用的是支持的格式它的工作原理

文檔