首页 > 解决方案 > JavaScript 1 分钟倒计时无法正常工作

问题描述

我创建了一个简单的 1 分钟倒计时,但它似乎不起作用,我不知道为什么。

IT GIVES EXPIRED作为响应而不是计时器显示。

// Set the date we're counting down to
var setoneminutetime = new Date();
setoneminutetime.setMinutes(1);
var countDownDate = new Date(setoneminutetime).getTime();
//set interval for the actual countdown
var x = setInterval(function() {
    var now = new Date().getTime();
    //end time minus the current time
    var distance = countDownDate - now;
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);
    //show countdown  in div demo
    document.getElementById("demo").innerHTML = days + "d " + hours + "h " + minutes + "m " + seconds + "s ";
    if (distance < 0) {
        clearInterval(x);
        document.getElementById("demo").innerHTML = "EXPIRED";
    }
}, 1000);
p {
    text-align: center;
    font-size: 60px;
    margin-top: 0px;
}
<p id="demo"></p>

标签: javascriptjquery

解决方案


setMinutes将分钟设置为当前小时的 1。现在是下午 5:19,setMinutes(1)时间是下午 5:01。您需要获取当前时间并添加 1 分钟。

// Set the date we're counting down to
var setoneminutetime = new Date();
setoneminutetime.setTime(Date.now() + 1 * 60 * 1000); // Add 1 minutes to current timestamp
var countDownDate = new Date(setoneminutetime).getTime();
//set interval for the actual countdown
var x = setInterval(function() {
    var now = new Date().getTime();
    //end time minus the current time
    var distance = countDownDate - now;
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);
    //show countdown  in div demo
    document.getElementById("demo").innerHTML = days + "d " + hours + "h " + minutes + "m " + seconds + "s ";
    if (distance < 0) {
        clearInterval(x);
        document.getElementById("demo").innerHTML = "EXPIRED";
    }
}, 1000);
p {
    text-align: center;
    font-size: 60px;
    margin-top: 0px;
}
<p id="demo"></p>


推荐阅读