2013-02-23 68 views
0

我有一個JavaScript倒計時似乎並沒有工作在IE瀏覽器也沒有Safari瀏覽器,所有在Windows 7上測試,工作正常與鉻和Firefox。由於網站的某些限制,我不打算換成jQuery倒計時,所以真的希望在所有瀏覽器中都能正常工作。JS倒計時不工作在IE和Safari

<script language="JavaScript"> 
TargetDate = "January/01/2014 12:00 am"; 
BackColor = ""; 
ForeColor = "#000"; 
CountActive = true; 
CountStepper = -1; 
LeadingZero = true; 
DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds."; 
FinishMessage = "<span class='finish'>Finished!</span>"; 
</script> 
<script language="javascript"> 
function calcage(secs, num1, num2) { 
    s = ((Math.floor(secs/num1))%num2).toString(); 
    if (LeadingZero && s.length < 2) 
    s = "0" + s; 
    return "<span class='digit'>" + s + "</span>"; 
} 

function CountBack(secs) { 
    if (secs < 0) { 
    document.getElementById("cntdwn").innerHTML = FinishMessage; 
    return; 
    } 
    DisplayStr = DisplayFormat.replace(/%%D%%/g, calcage(secs,86400,100000)); 
    DisplayStr = DisplayStr.replace(/%%H%%/g, calcage(secs,3600,24)); 
    DisplayStr = DisplayStr.replace(/%%M%%/g, calcage(secs,60,60)); 
    DisplayStr = DisplayStr.replace(/%%S%%/g, calcage(secs,1,60)); 

    document.getElementById("cntdwn").innerHTML = DisplayStr; 
    if (CountActive) 
    setTimeout("CountBack(" + (secs+CountStepper) + ")", SetTimeOutPeriod); 
} 

function putspan(backcolor, forecolor) { 
document.write("<span id='cntdwn' style=' font-weight:bold; background-color:" + backcolor + 
       "; color:" + forecolor + "'> </span>"); 
} 

if (typeof(BackColor)=="undefined") 
    BackColor = "white"; 
if (typeof(ForeColor)=="undefined") 
    ForeColor= "black"; 
if (typeof(TargetDate)=="undefined") 
    TargetDate = "12/31/2020 5:00 AM"; 
if (typeof(DisplayFormat)=="undefined") 
    DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds."; 
if (typeof(CountActive)=="undefined") 
    CountActive = true; 
if (typeof(FinishMessage)=="undefined") 
    FinishMessage = ""; 
if (typeof(CountStepper)!="number") 
    CountStepper = -1; 
if (typeof(LeadingZero)=="undefined") 
    LeadingZero = true; 


CountStepper = Math.ceil(CountStepper); 
if (CountStepper == 0) 
    CountActive = false; 
var SetTimeOutPeriod = (Math.abs(CountStepper)-1)*1000 + 990; 
putspan(BackColor, ForeColor); 
var dthen = new Date(TargetDate); 
var dnow = new Date(); 
if(CountStepper>0) 
    ddiff = new Date(dnow-dthen); 
else 
    ddiff = new Date(dthen-dnow); 
gsecs = Math.floor(ddiff.valueOf()/1000); 
CountBack(gsecs); 
</script> 

倒數只顯示爲NaN。任何幫助不勝感激。

+1

它可能不會識別您的日期格式。 – 2013-02-23 19:49:40

+0

只需將'1月/ 01/2014 12:00 am'更改爲'2014年1月1日12:00 am' – mplungjan 2013-02-24 09:14:01

回答

0

下面一行將返回NaN的

var dthen = new Date(TargetDate); 

你最好的選擇,以確保它會跨瀏覽器的工作是使用下面的日期構造函數:

new Date(year, month, day, hours, minutes, seconds, milliseconds); 

所以,dthen將變爲:

var dthen = new Date(2014, 0, 1, 12, 0, 0, 0); 

您可能想要在頂部定義這些值,就像您使用TargetDate一樣,但是這樣會讓你走上正軌。