gpt4 book ai didi

javascript - 倒数计时器,setInterval 内的 setInterval?

转载 作者:行者123 更新时间:2023-11-30 05:41:37 27 4
gpt4 key购买 nike

我是这里的 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>

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

第一个问题:你会提前一秒听到“哔”声,因为当 lead 到达 1 时,第一个 if (lead > 0) 照常发生,并且 lead 递减。 lead 现在等于零。然后执行移动到第二个 if。由于您刚刚将 lead 递减为零,因此 if body 也被执行了。你想要一个“else if”,所以两个 block 中只有一个执行过。像这样:

if ( lead > 0 ) {
// Do stuff.
lead--;
} else if ( lead == 0 ) {
// Do other stuff.
}

其次,在 cdtimer() 中,您正在递减 lead:lead--;。我猜这是你复制第一个定时器函数并重命名时出现的一个错误。至少,这就是我总是以这样的代码结束的方式。

此外,当然,您还想在 cdtimer() 中使用 else if

关于javascript - 倒数计时器,setInterval 内的 setInterval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20505066/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com