我是这里的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>任何帮助都将不胜感激。谢谢!
发布于 2013-12-10 21:13:33
第一个问题:您提前一秒钟收到“哔”声,因为当lead到达1时,第一个if (lead > 0)会像往常一样发生,而lead会减少。lead现在等于零。然后执行转移到第二个if。因为您刚刚将lead降为零,所以如果body也被执行的话。您需要一个"else“,因此只有两个块中的一个执行。就像这样:
if ( lead > 0 ) {
// Do stuff.
lead--;
} else if ( lead == 0 ) {
// Do other stuff.
}其次,在cdtimer()中,您正在减少lead:lead--;。当您复制第一个计时器函数并将其重命名时,我想这是一个错误。至少,这就是我最终得到这样的代码的原因。
当然,您也希望在else if中使用cdtimer()。
https://stackoverflow.com/questions/20505066
复制相似问题