2010-02-08 83 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);