【发布时间】:2014-02-13 21:20:59
【问题描述】:
我遇到了循环间隔的问题。 这是我的代码:
for(i=0;i<=10;i++){
(function(i){
set = setInterval(function(){
alert("hello, world.") // for example.
},1000);
})(i);
};
我希望这会在任何 1000 毫秒内发生,但是当它启动时,它会等待 1000 毫秒,然后像往常一样执行循环; 我可以这样处理:
var i = 0;
set = setInterval(function(){
alert("hello, world.");
i++;
if(i == 10){
clearInterval(set);
};
},1000);
但我真的不想以这种方式规划我的代码。 我必须使用循环。 提前致谢。
为什么这不起作用:
<div id="lbl"></div><br>
<script>
function fun(){
var text = "in the name of god";
var lbl = document.getElementById("lbl");
var arr = new Array("a","b","c","d","e","f","g","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"," ",0,1,2,3,4,5,6,7,8,9);
for(x in text){
var spn = document.createElement("span");
lbl.appendChild(spn);
for(i=0;i<=arr.indexOf(text[x]);i++){
(function(i){
setTimeout(function(){
spn.innerHTML = arr[i];
},i*200);
})(i);
};
};
};
fun();
</script>
【问题讨论】:
-
你到底想做什么?
-
Scripter - 我很难理解为什么你想以这种方式在循环中使用 setInteval。您能否就您要完成的工作提供更多解释?
-
你需要 setTimeout(fn, i*1000),而不是 setInterval... 如果你不关闭“i”,你就不需要范围安全套
-
你期望这会做什么?您正在启动 10 个计时器,它们都将在大约同一时间(1000 毫秒)触发。然后它们都将等待 1000 毫秒并再次触发。
-
我看不出需要计时器来实现类似的功能。您为什么不发布您拥有的实际代码?
标签: javascript html loops