倒数计时器,setInterval中的setInterval?

时间:2013-12-10 20:58:23

标签: javascript timer setinterval

我在这里是一个JS新手,并且在一段时间后开始倒计时器工作。基本上,当用户单击按钮时,时钟开始,第一个定时器用完时,第二个时钟开始。我知道“setInterval”是实现这一目标的最佳方式。我面临的主要问题是第二个计时器,虽然它在屏幕上弹出,但不会开始倒计时。我相信这是因为我试图在setInterval中运行setInterval,但不确定。引导计时器“发出哔哔声”为1而不是0.以下是代码。按下表单按钮时开始倒计时功能。

<script>

function countdown(form){
    lead = form.leadseconds.value;
    cd = form.cdseconds.value;
    startLeader = setInterval(leadtimer, 1000);
}

function leadtimer(){
    if (lead > 0){
        document.getElementById("leadtime").innerHTML = lead;
        lead--;
    }
    if (lead == 0){
        document.getElementById("leadtime").innerHTML = "beep";
        startTimer = setInterval(cdtimer, 1000);
        clearInterval(startLeader);
    }

}

function cdtimer(){
    if (cd > 0){
        document.getElementById("cdtime").innerHTML = cd;
        lead--;
    }
    if (cd == 0){
        document.getElementById("cdtime").innerHTML = "beepbeep";
        clearInterval(startTimer);
    }

}

 </script>

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

第一个问题:因为lead到达1,第一个if(lead > 0)像往常一样发生,{{1减少了。 lead现在等于零。然后执行移动到第二个if。因为你只是将lead递减到零,所以如果身体也被执行了。你想要一个“else if”,所以只执行两个块中的一个。像这样:

lead

其次,在if ( lead > 0 ) { // Do stuff. lead--; } else if ( lead == 0 ) { // Do other stuff. } 中,您正在递减cdtimer()lead。我猜这是一个错误,当你复制第一个计时器功能并重命名它时,这个错误就会出现。至少,这就是我总是以这样的代码结束的方式。

当然,您也希望使用lead--;中的else if