2010-02-08 147 views
5

我想打一個功能或者使用純JavaScript或者也受益於jQuery的向下到結束的時間,例如數:的JavaScript/jQuery的時間倒計時

//consumes a javascript date object 
function countDown(endtimme){ 
... 
} 

,它應該在HTML顯示如

<div id="time_left_box"> 
    <h1>Time remaining</h1>: 

    <p>hours left: ..remaining day will be here## <p> 
    <p>minutes left: ##remaining day will be here## <p> 
    <p>seconds left: ##remaining day will be here## <p> 
</div> 

事實上,如果它能夠每秒刷新一次,它會更加偉大。

我非常天真與JavaScript和困惑如何處理,任何幫助將不勝感激。

+0

那麼,有很多小問題。你有哪些問題? – Quentin 2010-02-08 13:22:15

回答

5
+0

我只是說:) – marcgg 2010-02-08 13:26:30

+0

是的抱歉;-)我只是太遲 – 2010-02-08 13:33:18

+0

我認爲OP想做一個功能,而不是使用插件。 – Reigel 2010-02-08 13:45:36

2

它可以在JavaScript中完成,無需插件。

您需要獲取當前的日期時間,直到分母小於顯示的分母。用你的例子,這意味着你需要把所有東西都縮小到毫秒。

var currentTime = new Date(n.getFullYear(), n.getMonth(), n.getDate(), n.getHours(), n.getMinutes(), n.getSeconds(), n.getMilliseconds()); 

然後,您會發現現在和所需時間之間的差異。這是以毫秒爲單位給你的。

var diff = endtime - currentTime; 

因爲這是以毫秒爲單位返回你需要將它們轉換成秒,分鐘,小時,天等..這意味着建立多毫秒如何在每個分母。然後你可以使用mod和divide來返回每個單位所需的數字。見下文。

var miliseconds = 1; 
var seconds = miliseconds * 1000; 
var minutes = seconds * 60; 
var hours = minutes * 60; 
var days = hours * 24; 
var years = days * 365; 

//Getting the date time in terms of units 
//Floored so that they go together (to get just year/days/hours etc.. by themselves you need to use Math.round(diff/desired unit); 
var numYears = Math.floor(diff/years); 
var numDays = Math.floor((diff % years)/days); 
var numHours = Math.floor((diff % days)/hours); 
var numMinutes = Math.floor((diff % hours)/minutes); 
var numSeconds = Math.round((diff % minutes)/seconds); 

一旦你想要顯示的分母,你可以通過不同的方法返回到html頁面。例如:

document.getElementById("tyears").innerHTML = numYears; 

總結你的方法。但是,爲了使它在設定的時間間隔內運行(這就是爲什麼在JavaScript函數中更新HTML顯示的原因),您需要調用以下函數,給出您的函數名稱並以毫秒爲單位提供您的間隔。

//Call the count down timer function every second (measured in miliseconds) 
setInterval(countDown(endtime), 1000);