5

我想使用纯 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非常天真,对如何处理感到困惑,任何帮助将不胜感激。

4

3 回答 3

7

你可以使用jQuery 倒计时

于 2010-02-08T13:24:19.207 回答
5

看看这个: http: //keith-wood.name/countdown.html

于 2010-02-08T13:25:30.990 回答
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);
于 2014-07-09T03:10:09.590 回答