JavaScript 中的 for 循环

Posted

技术标签:

【中文标题】JavaScript 中的 for 循环【英文标题】:For loops in JavaScript 【发布时间】:2011-03-13 03:46:48 【问题描述】:

这是我的代码

function countdown(integer)

    for i = integer, 0, -1 do
    
        document.write(i);
    

我想做的是让一个循环做我想要它做的事情,而我想要它做的是..

for i = integer, 0, -1 doi = 当前循环的变量integer = 从用户调用的整数开始循环0 = 循环结束-1 = 循环的增量*

上面解决了,现在的问题是只显示“->1

function countdown(integer)

    for( var i = integer; i > 0 ; i-- ) 
    
        setTimeout(document.getElementById("cds").value="->"+i+"<-",1000);
    

【问题讨论】:

这只是随便!当您第一次提交问题时,您根本没有提到 setTimeOut !你说答案没有用。您遇到的第二个问题是您在选择第一个“最佳答案”后发布的代码。 查看我的更新以获取setTimeout的解决方案 【参考方案1】:
for( var i = integer; i > 0 ; i-- ) 

    document.write(i);

【讨论】:

【参考方案2】:

根据你的更新,我猜你不需要for循环,你需要这个,

demo

function countdown(integer) 
   var time = setInterval(function()
        document.getElementById("cds").value="->"+(integer--)+"<-"
        if (integer == 0) clearInterval(time);
    ,1000);
​

【讨论】:

@Anonymous the Great:正如我所说,这不公平! Psychotik 对此给出了正确的答案。你改变了问题!【参考方案3】:

for 循环立即执行(无需等待setTimeout 触发),因此您的代码将同时设置integer 定时器数量(以微秒为间隔),并且只有最后一个一个(其中 i 为 1)对用户可见。你应该这样做:

var counter = integer;
setTimeout("update();", 1000);
function update()

    document.getElementById("cds").value= "->" + counter + "<-";
    if(--counter == 0)
        return;
    setTimeout("update();", 1000);

【讨论】:

【参考方案4】:

更快(我检查过)并且更容易阅读......

var i = 100;
while(i--) 
   document.write(i);

【讨论】:

我并不是说它不快,我是说它是一个不明显的 hack。如果您是唯一会看到此代码的人,那就去吧。但如果有人在维护它,为什么不说清楚呢? @Aircule:对初学者来说不太容易理解,但是一旦他们理解了,我认为下次他们看代码时很容易阅读。我并不是说这是最好的方法,但对我来说它是首选。 如果我决定现在我只想从 100 变为 2 怎么办? 我只是将 i 的初始值更改为 2。开玩笑 :) 是的,我明白你的意思,我不是说你错了,我是对的。我刚刚写了这个答案,我看到了一些答案,所以决定发表我的看法。 啊哈! @Aircule - 当然最多可以使用2个,就像这样while(i--&gt;2) document.write(i);​让我们玩这个演示jsfiddle.net/XbX9S【参考方案5】:

我猜你想在指定的输入框中显示一个数字倒计时。让我试一试。

<html>
  <head>
    <script type="text/javascript">
    function countdown(count) 
      document.getElementById("cds").value = count;
      if (count > 0) 
        setTimeout("countdown(" + (count - 1) + ")", 1000);
      
    
    </script>
  </head>
  <body onload="countdown(10)">
    <input type="text" id="cds" value="0" />
  </body>
</html>

诀窍是将递归调用放在 setTimeout 函数中,并用达到 0 时停止倒计时的条件包围它。

【讨论】:

【参考方案6】:

你可以使用下面的脚本。

for( var i = integer; i > 0 ; i-- ) 

    document.write(i);

【讨论】:

与psychotik 的回答有何不同?如果不是,它增加了什么价值?

以上是关于JavaScript 中的 for 循环的主要内容,如果未能解决你的问题,请参考以下文章

javascript中的for循环是如何执行的?

javascript中的for循环变体

JavaScript 中的 for 循环

深入了解 JavaScript 中的 for 循环

深入了解 JavaScript 中的 for 循环

深入了解 JavaScript 中的 for 循环