gpt4 book ai didi

javascript倒计时显示天数?

转载 作者:行者123 更新时间:2023-12-02 18:53:03 24 4
gpt4 key购买 nike

我有一个 javascript 倒计时,可以显示秒数。我需要知道如何在计数器中显示天而不是秒。

即还剩 1 天 2 小时。

这是代码:

    <script type="text/javascript">
var MAX_COUNTER = 1000;
var counter = null;
var counter_interval = null;

function setCookie(name,value,days) {
var expires;
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = "; expires="+date.toGMTString();
}
else {
expires = "";
}
document.cookie = name+"="+value+expires+"; path=/";
}

function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1,c.length);
}
if (c.indexOf(nameEQ) === 0) {
return c.substring(nameEQ.length,c.length);
}
}
return null;
}

function deleteCookie(name) {
setCookie(name,"",-1);
}

function resetCounter() {
counter = MAX_COUNTER;
}

function stopCounter() {
window.clearInterval(counter_interval);
deleteCookie('counter');
}

function updateCounter() {
var msg = '';
if (counter > 0) {
counter -= 1;
msg = counter;
setCookie('counter', counter, 1);
}
else {
counter = MAX_COUNTER;

}
var el = document.getElementById('counter');
if (el) {
el.innerHTML = msg;
}
}

function startCounter() {
stopCounter();
counter_interval = window.setInterval(updateCounter, 1000);
}

function init() {
counter = getCookie('counter');
if (!counter) {
resetCounter();
}
startCounter();
}

init();
</script>

目前它只显示秒数,一旦达到 0 就会重新启动。

最佳答案

http://jsfiddle.net/h2DEr/1/

function updateCounter() {
var msg = '';
if (counter > 0) {
counter -= 1;
msg = convertSecondsToDays(counter);
setCookie('counter', counter, 1);
}
else {
counter = MAX_COUNTER;
}
var el = document.getElementById('counter');
if (el) {
el.innerHTML = msg;
}
}

这是将秒转换为天的函数

function convertSecondsToDays(sec) {
var days, hours,rem,mins,secs;
days = parseInt(sec/(24*3600));
rem = sec - days*3600
hours = parseInt(rem/3600);
rem = rem - hours*3600;
mins = parseInt(rem/60);
secs = rem - mins*60;
return days +" days " + hours +" hours "+mins + " mins "+ secs + " seconds";
}

更新:在 @sanya_zol 的回答和 David Smith 的评论之后

由于 setInterval 不应该每秒运行,因此您需要稍微改变一下策略。我也为此修改了 fiddle

  1. 当您希望 MAX_COUNTER 过期时,将其设置为一个值。
  2. 不要将计数器减 -1,而是检查当前时间,从到期日期中减去它并显示它。

      EXPIRY_SECONDS = 24*60*60;
    MAX_COUNTER = parseInt(new Date().getTime()/(1000)) + EXPIRY_SECONDS;

    function updateCounter() {
    var msg = '',curTime = parseInt(new Date().getTime()/1000);

    if (curTime < MAX_COUNTER) {
    msg = convertSecondsToDays(MAX_COUNTER- curTime);
    setCookie('counter', MAX_COUNTER- curTime, 1);
    }
    else {
    MAX_COUNTER = parseInt(new Date().getTime()/1000) + EXPIRY_SECONDS;
    }

    var el = document.getElementById('counter');
    if (el) {
    el.innerHTML = msg
    }
    }

关于javascript倒计时显示天数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15634575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com