Javascript 当时间在00h:59m:59s之后到达时,我的小时返回0

Javascript 当时间在00h:59m:59s之后到达时,我的小时返回0,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我在javascript计算小时时遇到了一个问题,当时间达到1小时时,它会返回到00:00:00,然后再次计数。即使我在html上硬编码了它,它也会一直返回到00小时。请帮帮我 代码如下: $('.countup')。每个(函数(){ var targetdate=$(this.children(#targetdate”).html(); //var seconds_left=新日期(targetdate).getTime(); var seconds_left=新日期(targetdate)

我在javascript计算小时时遇到了一个问题,当时间达到1小时时,它会返回到00:00:00,然后再次计数。即使我在html上硬编码了它,它也会一直返回到00小时。请帮帮我

代码如下:

$('.countup')。每个(函数(){
var targetdate=$(this.children(#targetdate”).html();
//var seconds_left=新日期(targetdate).getTime();
var seconds_left=新日期(targetdate).getTime();
var timer=$(this).children('#timer');
var count=$(此值);
var hoursv=“”,
minsv='',
secsv='';
var小时、分钟、秒;
剩余秒数=剩余秒数/1000;
var countdownrefesh=setInterval(函数(){
//加1到2秒
剩余秒数=剩余秒数+1;
//做一些时间计算
天=parseInt(还剩秒/86400);
剩余秒数=剩余秒数%86400;
小时=parseInt(剩余秒/3600);
剩余秒数=剩余秒数%3600;
分钟=parseInt(剩余秒/60);
秒=parseInt(剩余%60秒);
如果(小时<10){
hoursv=“0”+小时;
}否则{
hoursv=小时;
}
如果(分钟<10){
minsv=“0”+分钟;
}否则{
minsv=分钟;
}
如果(秒<10){
secsv=“0”+秒;
}否则{
secsv=秒;
}
//格式化倒计时字符串+设置标记值
s=小时+分钟+秒;
t=hoursv+h:+minsv+h:+secsv+s;
timer.html(t)
如果(分钟数>10&&minutes=0){
count.attr('style','background color:orange');
}否则,如果(分钟>15和小时>=0){
count.attr('style','background color:red');
}否则{
count.attr('style','background color:green');
}
}, 1000);
});

1970年1月1日星期四01:31:51+0000
1970年1月1日星期四00:59:49+0000
1970年1月1日星期四00:10:58+0000
1970年1月1日星期四00:05:58+0000

这是因为当你计算
小时数和
分钟数时,你把剩下的
秒数除以86400和3600。在计算过程中,您需要使用不同的变量,而不是用来保存
setInterval
函数迭代之间的时间的变量

$('.countup')。每个(函数(){
var targetdate=$(this.children(#targetdate”).html();
//var seconds_left=新日期(targetdate).getTime();
var seconds_left=新日期(targetdate).getTime();
var timer=$(this).children('#timer');
var count=$(此值);
var hoursv=“”,
minsv='',
secsv='';
var小时、分钟、秒;
剩余秒数=剩余秒数/1000;
var countdownrefesh=setInterval(函数(){
//加1到2秒
剩余秒数=剩余秒数+1;
//做一些时间计算
天=parseInt(还剩秒/86400);
var cur_seconds=剩余秒数%86400;
小时=parseInt(当前秒/3600);
当前秒数=当前秒数%3600;
分钟=parseInt(当前秒/60);
秒=parseInt(当前秒数%60);
如果(小时<10){
hoursv=“0”+小时;
}否则{
hoursv=小时;
}
如果(分钟<10){
minsv=“0”+分钟;
}否则{
minsv=分钟;
}
如果(秒<10){
secsv=“0”+秒;
}否则{
secsv=秒;
}
//格式化倒计时字符串+设置标记值
s=小时+分钟+秒;
t=hoursv+h:+minsv+h:+secsv+s;
timer.html(t)
如果(分钟数>10&&minutes=0){
count.attr('style','background color:orange');
}否则,如果(分钟>15和小时>=0){
count.attr('style','background color:red');
}否则{
count.attr('style','background color:green');
}
}, 1000);
});

1970年1月1日星期四01:31:51+0000

这是因为当你计算
小时数和
分钟数时,你把剩下的
秒数除以86400和3600。在计算过程中,您需要使用不同的变量,而不是用来保存
setInterval
函数迭代之间的时间的变量

$('.countup')。每个(函数(){
var targetdate=$(this.children(#targetdate”).html();
//var seconds_left=新日期(targetdate).getTime();
var seconds_left=新日期(targetdate).getTime();
var timer=$(this).children('#timer');
var count=$(此值);
var hoursv=“”,
minsv='',
secsv='';
var小时、分钟、秒;
剩余秒数=剩余秒数/1000;
var countdownrefesh=setInterval(函数(){
//加1到2秒
剩余秒数=剩余秒数+1;
//做一些时间计算
天=parseInt(还剩秒/86400);
var cur_seconds=剩余秒数%86400;
小时=parseInt(当前秒/3600);
当前秒数=当前秒数%3600;
分钟=parseInt(当前秒/60);
秒=parseInt(当前秒数%60);
如果(小时<10){
hoursv=“0”+小时;
}否则{
hoursv=小时;
}
如果(分钟<10){
minsv=“0”+分钟;
}否则{
minsv=分钟;
}
如果(秒<10){
secsv=“0”+秒;
}否则{
secsv=秒;
}
//格式化倒计时字符串+设置标记值
s=小时+分钟+秒;
t=hoursv+h:+minsv+h:+secsv+s;
timer.html(t)
如果(分钟数>10&&minutes=0){
count.attr('style','background color:orange');
}否则,如果(分钟>15和小时>=0){
count.attr('style','background color:red');
}否则{
count.attr('style','background color:green');
}
}, 1000);
});

1970年1月1日星期四01:31:51+0000
您的问题在于:

seconds_left = seconds_left % 3600;
因此,在第一次迭代之后,秒数永远不会超过3600

请注意,不建议以这种方式使用setInterval,因为它会缓慢漂移。您使用具有相同ID的多个元素,这是无效的,应为avo