Javascript—我在while循环中的setTimeOut不';行不通

Javascript—我在while循环中的setTimeOut不';行不通,javascript,Javascript,我想做这样的事情: <p id="sec">5</p> <script> var i = 5; while (i > 0){ setTimeout(i--,1000); document.getElementById("sec").innerHTML = i; } if (i === 0){ window.location = "index.php"; } </script> 5 var i=5; 而(i>0){ 设

我想做这样的事情:

<p id="sec">5</p>
<script>
var i = 5;
while (i > 0){
    setTimeout(i--,1000);
    document.getElementById("sec").innerHTML = i;
}
if (i === 0){
    window.location = "index.php";
}
</script>

5

var i=5; 而(i>0){ 设置超时(i--,1000); document.getElementById(“sec”).innerHTML=i; } 如果(i==0){ window.location=“index.php”; }

没有一秒钟,它就将我重定向到index.php?为什么会这样?如何使其工作?

setTimeout
有时会执行一个函数,并立即返回。将setTimeout替换为:
setTimeout(alert(“hi!”),1000
你就会明白到底发生了什么。PS:删除重定向,只是为了测试。@TheBronx“秒”保持在5?!抱歉,我不明白。您必须明白setTimeout不会停止脚本的执行。它不像“睡眠”功能。一个更简单的例子,两行:
setTimeout(function(){alert(“timeout finished!”)},5000);警惕(“嘿,不要等待”)
查看发生了什么,哪个警报首先出现?
setTimeout
有时会执行一个函数,并立即返回。将setTimeout替换为:
setTimeout(警报(“hi!”),1000
你就会明白到底发生了什么。PS:删除重定向,只是为了测试。@TheBronx“秒”保持在5?!抱歉,我不明白。您必须明白setTimeout不会停止脚本的执行。它不像“睡眠”功能。一个更简单的例子,两行:
setTimeout(function(){alert(“timeout finished!”)},5000);警惕(“嘿,不要等待”)查看发生了什么,哪个警报首先出现?我尝试了,但sec也保持在5。在这里工作正常:+1,这是最好的答案,因为它不会锁定CPU。也因为你的名字叫保罗。这也可以通过使用
window.setInterval
@DanielCheung来实现。请检查javascript控制台中的errors@PaulS. 有些人避开我试过的设置间隔,但sec也保持在5。在这里可以正常工作:+1,这是最好的答案,因为它不会锁定CPU。也因为你的名字叫保罗。这也可以通过使用
window.setInterval
@DanielCheung来实现。请检查javascript控制台中的errors@PaulS. 有些人回避设置间隔
var i = 5;
setTimeout(updateTime,1000);

function updateTime()
{
    document.getElementById("sec").innerHTML = i--;

    if (i === 0)
        window.location = "index.php";
    else
        setTimeout(updateTime, 1000);
}