我在这里是一个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>
任何帮助将不胜感激。谢谢!
答案 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
。