【问题标题】:javascript / jquery time count downjavascript / jquery 时间倒计时
【发布时间】:2011-01-14 08:59:53
【问题描述】:

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

【问题讨论】:

  • 嗯,有很多小问题。您遇到了哪些问题?

标签: javascript jquery time countdown


【解决方案1】:

你可以使用jQuery Countdown

【讨论】:

    【解决方案2】:

    【讨论】:

    • 是的,对不起 ;-) 我来得太晚了
    • 我认为OP想要做一个功能而不是使用插件。
    • @reigel 他在谈论在他的问题中使用 jquery,所以......好吧无论如何,在这里更精确取决于 OP,他甚至不知道@jeff 的回答也不知道我的
    【解决方案3】:

    它可以在没有插件的 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);
    

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 2011-12-08
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多