Javascript 计时器到达零时不结束
我一直在研究这个javascript计时器,不明白为什么它在小时、分钟和秒等于零时不停止 代码:Javascript 计时器到达零时不结束,javascript,timer,intervals,countdown,Javascript,Timer,Intervals,Countdown,我一直在研究这个javascript计时器,不明白为什么它在小时、分钟和秒等于零时不停止 代码: 问题似乎是这一部分的逻辑 if(s == 0 ){ if(m == 0){ h=h-1; // what if h is also 0 here?? this would set it negative s=59; m=59; if(h == 0){ clearInterval(counter); } 我
问题似乎是这一部分的逻辑
if(s == 0 ){
if(m == 0){
h=h-1; // what if h is also 0 here?? this would set it negative
s=59;
m=59;
if(h == 0){
clearInterval(counter);
}
我认为你应该尽快做你的
如果(h==0)
检查。。。在你减少数值之前。因此,您可能希望使用if(s==0&&m==00&&h==0)
启动if-else块,并使用它清除间隔。如果所有值都已为零,则您不想再更改任何值。我在这里看到的问题是,当所有时间变量(时间变量是指h
,m
和s
设置为零时,您将h
变量减1:
if(s == 0 ) {
if(m == 0) {
h=h-1;
s=59;
m=59;
// more code goes here
因此h
将为-1
,计时器将永不停止。我能建议的最好方法是完全重写计时器,在这里只使用几秒钟。每次调用
timer
函数时,检查s
是否等于零-如果等于零,则停止计时器。否则,将s
减1。要更新#timer
元素的内部HTML,可以重新计算小时数,每次调用timer
方法都需要几分钟和几秒钟-此解决方案将比嵌套条件语句链更易于理解和维护。我认为计数器上正好有一小时后,计数器会停止一秒钟。(0:59:59)这是因为你从HB集s到59 c集m到59减去1。如果你把这三行注释掉,并将s设置为初始值10,而不是1800,计时器在10秒后停止。我得到了你说的第一部分。但是为了显示小时、分钟和秒,你是否建议我每秒计算小时、分钟和秒?@crm是的,这就是我的建议。
if(s == 0 ) {
if(m == 0) {
h=h-1;
s=59;
m=59;
// more code goes here