首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >倒计时器,setInterval在setInterval?

倒计时器,setInterval在setInterval?
EN

Stack Overflow用户
提问于 2013-12-10 20:58:22
回答 1查看 1.4K关注 0票数 2

我是这里的JS新手,我在做一个倒数计时器,这个计时器是在给定的时间段后开始的。基本上,当用户单击按钮时,时钟就开始了,当第一个计时器用完时,第二个时钟就开始了。我知道"setInterval“是实现这一目标的最佳方法。我面临的主要问题是,第二个计时器,虽然它弹出屏幕上,没有开始计数。我相信这是因为我试图在一个setInterval中运行一个setInterval,但不确定。此外,领头计时器“嘟嘟”在1而不是0。下面是密码。倒计时功能从按下窗体按钮开始。

代码语言:javascript
复制
<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>

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-10 21:13:33

第一个问题:您提前一秒钟收到“哔”声,因为当lead到达1时,第一个if (lead > 0)会像往常一样发生,而lead会减少。lead现在等于零。然后执行转移到第二个if。因为您刚刚将lead降为零,所以如果body也被执行的话。您需要一个"else“,因此只有两个块中的一个执行。就像这样:

代码语言:javascript
复制
if ( lead > 0 ) {
    //  Do stuff. 
    lead--;
} else if ( lead == 0 ) {
    //  Do other stuff. 
}

其次,在cdtimer()中,您正在减少leadlead--;。当您复制第一个计时器函数并将其重命名时,我想这是一个错误。至少,这就是我最终得到这样的代码的原因。

当然,您也希望在else if中使用cdtimer()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20505066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档