0

所以我正在创建一个自定义页面打开倒计时,我想知道如何创建 JavaScript 部分?

这是我的 JavaScript

function start() {
    var openDate = new Date(2013, 7, 24);
    setInterval(function () {
        var today = new Date();
        var delta = openDate - today;
        var days = Math.floor(delta / 86400).toString();
        var hours = (Math.floor(delta / 3600) % 24).toString();
        var minutes = (Math.floor(delta / 60) % 60).toString();
        var seconds = (delta % 60).toString();

        $(".seconds#first").text(seconds[0]);

    }, 1000);
}

这可行,但值已关闭。我不知道该怎么办。如果有帮助,这也是我的 HTML。

<div id="countdown">
    <ul class="days">
        <li id="first">1</li>
        <li id="second">1</li>
        <li id="third">1</li>
    </ul>
    <ul class="hours">
        <li id="first">1</li>
        <li id="second">1</li>
    </ul>
    <ul class="minutes">
        <li id="first">1</li>
        <li id="second">1</li>
    </ul>
    <ul id="last" class="seconds">
        <li id="first">1</li>
        <li id="second">1</li>
    </ul>
</div>
4

1 回答 1

0

在 JavaScript 中减去两个日期值时,返回的值始终以毫秒为单位。这意味着变量的值delta将以毫秒为单位,这就是导致问题的原因,因为您的其余代码是在假设返回值以秒为单位的情况下编写的。

为了克服这个问题,该delta值应除以 1000(将其转换为秒),并且该Math.floor函数应用于计算秒值,因为毫秒到秒的转换可能会导致小数值。

var openDate = new Date(2015, 7, 24);

setInterval(function () {

    var today = new Date();
    var delta = (openDate - today) / 1000; //to convert to seconds
    var days = Math.floor(delta / 86400).toString();
    var hours = (Math.floor(delta / 3600) % 24).toString();
    var minutes = (Math.floor(delta / 60) % 60).toString();
    var seconds = (Math.floor(delta % 60)).toString();

    document.getElementById("first").innerHTML = "Days: " + days + "  Time: " + hours + " : " + minutes + " : " + seconds;

}, 1000);
<div id="first"></div>

JavaScript 日期对象 - MDN 参考

于 2013-07-23T04:49:37.730 回答