2016-06-12 46 views
1

我正在處理在asp.net,jQuery,C#中的倒計時器的這段代碼。倒數計時器在減去而不是在0天停止00:00:00

我有倒計時這個jQuery代碼:

<div id="timelabel"></div> 
<script type="text/javascript"> 
var leave = <%=seconds %>; 
CounterTimer(); 

var interv = setInterval(CounterTimer,1000); 

function CounterTimer() 
{ 
    var day = Math.floor(leave/(60 * 60 * 24)) 
    var hour = Math.floor(leave/3600) - (day * 24) 
    var minute = Math.floor(leave/60) - (day * 24 *60) - (hour * 60) 
    var second = Math.floor(leave) - (day * 24 *60*60) - (hour * 60 * 60) -(minute*60) 

    hour = hour < 10 ? "0" + hour : hour; 
    minute = minute < 10 ? "0" + minute : minute; 
    second = second<10 ? "0" + second : second; 

    var remain = day + " days " + hour + ":" + minute + ":" + second; 
    leave = leave - 1; 

    document.getElementById("timelabel").innerText = remain; 
} 
</script> 

,我來自碼傳遞結束日期後面的文件,是的.cs:

public double seconds; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    seconds = (GetEndTime() - GetStartTime()).TotalSeconds; 
} 

private DateTime GetStartTime() 
{ 
    return DateTime.Now; 
} 

private DateTime GetEndTime() 
{ 
    return new DateTime(2016, 6, 12, 11, 57, 00); //end date yr-month-day hr-mnt-sec 
} 

我面臨的一個問題,這定時器不會停止時,它擊中0天00:00:00 它超越瞭如-1天23:48:20。我想解決這個問題,因爲我沒有那麼多的關於jQuery的知識,我發現它非常困難,所以有人可以引導我進行必要的修改?請幫忙。先謝謝你。

回答

0

您需要清除間隔後,它變爲0或更高。將此添加到CounterTimer函數的底部。

if(leave <= 0) clearInterval(interv); 
+0

是它的偉大工程也停在00,因爲它擊中0,但問題提出那就是如果我刷新同一頁面,當它停在00它會像-1天23時59分四十秒減。有什麼方法可以在結束日期小於當前日期的0天00:00:00進行? –

+0

是的,你的代碼不會阻止結束日期比當前日期更小。您需要在CounterTimer方法的開始處添加if(leave <0)leave = 0等邏輯。 – Mengo

+0

非常感謝... –