setTimeout函数不起作用

时间:2014-07-07 21:01:31

标签: javascript

这是从01:00到00:00的基本计时器,当它到达00:00时,我想显示时间已到的警报。

JsFiddle

为了跑得更快,我选择第二个58。 在firebug中我看到jocsecunda1和jocsecunda2有这些值,但我不知道为什么不触发setTimeount。也许我把它放在错误的地方?

谢谢!

//just create html, ignore:
var pentruminut = document.createElement('span');
document.body.appendChild(pentruminut);
pentruminut.setAttribute('id','unminut');
document.getElementById('unminut').innerHTML="01:00";

window.onload=function(){
(function(){
     setInterval(function(){
     cro();
     document.getElementById('unminut').innerHTML="0"+jocminut+":"+jocsecunda1+jocsecunda2;
    },1000);
    }());
}
var jocminut = 1;
var jocsecunda1 = 6;
var jocsecunda2 = 10;
function cro(){
    if(jocsecunda1!=0||jocsecunda2!=0){
        jocsecunda2 -=1;
        while(jocminut==1){
            jocminut-=1;
            jocsecunda1 -=1;
        }   
            while(jocsecunda2==-1){
                jocsecunda1-=1;
                jocsecunda2=9;

            }

    }
}
//here is the issue:
(function(){setTimeout(function(){
    if (jocsecunda1==5&&jocsecunda2==8){
        alert("Time is up");
        }
    },1000);}())

1 个答案:

答案 0 :(得分:1)

您的setTimeout设置为仅运行一次,超时为1000毫秒,因此当计时器为59秒时,仅检查58秒。 更好的解决方案是更改程序的工作方式,然后检查变量jocsecunda1 == 5jocsecunda2 == 8的时间,然后触发警报。

示例fildde:http://jsfiddle.net/L7u26/4/