我遇到了一个小问题。所以我有div名称数组,我想将它们添加为半秒,然后按顺序删除它们。所以首先在一秒钟后显示,在半秒后消失,然后在第二秒后消失等等。我循环通过数组,没有真正发生:/ 请帮我这个功能:/
function showAndRepeat(){
for(var z=0;z<clickNext.length;z++){
console.log(colors[clickNext[z]]);
setTimeout(function(){$(colors[clickNext[z]]).addClass(colorNames[clickNext[z]])},1000);
setTimeout(function(){$(colors[clickNext[z]]).removeClass(colorNames[clickNext[z]])},1500);
}
}
&#13;
答案 0 :(得分:0)
假设jQuery代码工作正常。 试试这个:
function showAndRepeat(){
for(var z=0;z<clickNext.length;z++){
console.log(colors[clickNext[z]]);
(function(zee){
setTimeout(function(){$(colors[clickNext[zee]]).addClass(colorNames[clickNext[zee]])},1000);
setTimeout(function(){$(colors[clickNext[zee]]).removeClass(colorNames[clickNext[zee]])},1500);
})(z);
}
}
简单地说,创建一个闭包。
for
循环是同步操作,而setTimeout
是异步。因此,当setTimeout
执行时,for
循环已经运行,z
的最新值将被输入setTimeout
来电。