我之前制作了几个倒计时器,但需要稍微改动一下。我需要每周星期三倒计时。因此,当它到达星期三时,它会更新,并考虑将来的下周三,即将来的7天。
到目前为止,我使用了一个非常简单的代码块,占用了一些我害怕的空间:
var td = new Date("Sep 16, 2015").getTime();
var days, hrs, mins, secs;
function recalc() {
var curdate = new Date().getTime();
var secsleft = (td - curdate) / 1000;
days = parseInt(secsleft / 86400);
secsleft = secsleft % 86400;
hrs = parseInt(secsleft / 3600);
secsleft = secsleft % 3600;
mins = parseInt(secsleft / 60);
secs = parseInt(secsleft % 60);
}
setInterval(function() {
recalc();
while(days<1 && hrs<1 && mins<1 && secs<1) {td.setDate(td.getDate() + parseInt(7)); recalc();}
$("#countdown").html(days + " Days " + hrs + " Hours " + mins + " Mins " + secs + " Secs");
}, 1000);
我的问题是最后一行代码。我正在检查是否全部达到0或以下。在我目前的情况下,几个数字是负数,线不会触发。尽管如此,我还收到一条错误消息,指出td.getDate()
不是函数。
编辑:我相当肯定我唯一剩下的问题是td.setDate(td.getDate() + parseInt(7));
返回错误的原因:td.getDate()
不是函数。
所有内容都正确触发,所需的只是在td
(target_date)上添加7天,然后重新运行recalc()
函数。
答案 0 :(得分:0)
这不起作用:
if(days<1 && hrs<1 && mins<1 && secs<1) {td.setDate(td.getDate() + 7);}
因为逻辑上不能同时少于一个。一旦它们全部达到零,那一天就会切换到第二天。当天的最后一秒实际上是23:59:59。
你应该选择:
if(days=0 && hrs=0 && mins=0 && secs<2) {td.setDate(td.getDate() + 7);}
我认为这应该有助于部分内容。