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 do
i
= 当前循环的变量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-->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 循环的主要内容,如果未能解决你的问题,请参考以下文章