var s=0;
for(var i=0;nn!=null&&i<nn.length;i++){//长度为10
alert(i+"test");
setInt=setTimeout((function(node){return function(){
if(s==i){
alert(s+"s"+i+"i");//这里的s和i为什么弹出10次10啊,怎么不是从0开始到10
var node=new Node();
node=mixIn(nn[i],node);
node.type=typeToNum(node.type);
node.position=new Position(node.position.top,node.position.left);
nodes[node.index]=node;
createNode(node);
}else{
clearTimeout(setInt);
}
}})(node),3000);
s=s+1;
}谁会指点一下
for(var i=0;nn!=null&&i<nn.length;i++){//长度为10
alert(i+"test");
setInt=setTimeout((function(node){return function(){
if(s==i){
alert(s+"s"+i+"i");//这里的s和i为什么弹出10次10啊,怎么不是从0开始到10
var node=new Node();
node=mixIn(nn[i],node);
node.type=typeToNum(node.type);
node.position=new Position(node.position.top,node.position.left);
nodes[node.index]=node;
createNode(node);
}else{
clearTimeout(setInt);
}
}})(node),3000);
s=s+1;
}谁会指点一下
接着第二次循环,以此类推,当循环完10次后,s=10,i=10,还没有经过3秒,故等到三秒中后alert(‘10s10i’)才第一次打印,接着很快就打印其余9次了。
for (var i = 0; i < 10; i++) {
(function(){
var index = i;
setInt = setTimeout(function(){
if (s === index) {
alert("success! i: " + index);
}
else {
alert("error! i: " + index);
clearTimeout(setInt);
}
}, 3000);
})();
}
for (var i = 0; i < 10; i++) {//长度为10
setInt = setTimeout((function(){
var _i = i;
return function(){
if (s == _i) {
alert("s: " + s + ", i: " + _i);//这里的s和i为什么弹出10次10啊,怎么不是从0开始到10
s++;
}
else {
clearTimeout(setInt);
}
}
})(), 3000);
}
var a = 10;
var b = 0;function test(){
b++;
if(b < a){
setTimeout("test()",5000);
}
alert(b);
}test();
要实现这种需求,从没有在FOR里用setTimeout的,都是把FOR去掉,把setTimeout作为FOR的功能,在setTimeout里面进行计数。
for(var i=0;i<10;i++){
(function(i){
setTimeout(function(){
alert(i)
},i*3000)
})(i)};这个意思?