在javascript中设置要打印的超时

在javascript中设置要打印的超时,javascript,Javascript,我已经开始学习JavaScript,我想尝试一个简单的倒计时,但我不明白 函数倒计时(){ var count1=10; 而(count1>=0){ setTimeout(函数(){ document.getElementById(“main”).innerHTML=count1; }, 1000); 第1项--; } } 对计时器使用setInterval,然后在倒计时达到0时清除它。确保使用立即调用的匿名函数,或在定义后立即执行命名函数。否则您的函数将不会执行,因此没有计时器 函数倒计时

我已经开始学习JavaScript,我想尝试一个简单的倒计时,但我不明白

函数倒计时(){
var count1=10;
而(count1>=0){
setTimeout(函数(){
document.getElementById(“main”).innerHTML=count1;
}, 1000);
第1项--;
}
}

对计时器使用setInterval,然后在倒计时达到0时清除它。确保使用立即调用的匿名函数,或在定义后立即执行命名函数。否则您的函数将不会执行,因此没有计时器

函数倒计时(){
var count1=10;
var myTimer=setInterval(函数(){
document.getElementById(“main”).innerHTML=count1;
第1项--;
如果(count1==0){
清除间隔(myTimer);
}
}, 1000);
}
倒计时()

您应该改为使用
setInterval
,这样它会被定期调用,并且倒计时(计数器的读写)应该在
setInterval
调用的函数中发生。您可以省略循环,当计数器达到0时,只需调用
clearInterval

只执行一次函数。使用
setInterval
可以在这里提供帮助

但另一点需要注意的是关于变量的作用域。当
setTimeOut
等待1秒时,
While
循环将继续执行,更改
count1
的值

count1
的值始终为-1。需要使用立即调用的函数表达式(IIFE)

function countdown()
{
    var count1 = 10;
    while( count1 >= 0) {
      var myTimer = setInterval((function() {
        console.log(count1);
      }(count1)), 1000);
      count1 = count1 - 1;
    }
}
countdown()

使用
setInterval(function(){…})
为此,我认为
p
元素上的
onLoad
不会起任何作用。我不认为你的页面停止或挂起;一开始它什么都没做。尝试添加
文档。addEventListener('DOMContentLoaded',倒计时),然后您可以调试其余的逻辑。可能重复的代码可能需要对该代码进行一些改进,目前来看,它不会比问题中的原始代码更好。现在好多了;-)你应该重新检查你的代码-考虑到它在一个while循环中立即调用了所有10个
setInterval
s,它肯定没有做OP想要的事情。@Hozefa谢谢你的解释,但是代码是错误的。@psh哦,是的,有一个错误。但我希望能大致了解这个概念