For循环中的setTimeout问题
Issues with setTimeout within For Loops
我有一个for
循环,循环通过数组的元素,构造一个jQuery目标,应用一个类,然后删除它。
类remove
触发css3 @keyframes
动画,耗时0.2秒。然后继续实际删除DOM元素。这在理论上可行。
for (var i = playerBuffs.length - 1; i >= 0; i--) {
var target = '#bufflist-' + playerBuffs[i][5];
$(target).addClass('remove');
setTimeout(function(){$(target).remove();},200);
};
有一些条件必须为真才能删除元素(为了简单起见,我没有将代码粘贴在这里),所以有时会有多个元素需要删除。
但是,在这种情况下,循环运行此代码一次,设置超时,然后立即重新运行代码。所以在timeout
触发的时间点上,target
变量已经改变了。我怎么解决这个问题?
target
被封闭在带有循环的函数周围,而不是循环本身。
for (var i = playerBuffs.length - 1; i >= 0; i--) {
var target = '#bufflist-' + playerBuffs[i][5];
(function(target) {
$(target).addClass('remove');
setTimeout(function(){$(target).remove();},200);
})(target);
};
相关文章:
- 使setInterval和setTimeout工作时出现问题
- setTimeout调用自身的任何问题
- javascript 中的 setTimeout 问题
- 正在清除setTimeout问题
- 奇怪的setTimeout问题
- Javascript setTimeout问题w/ for循环
- 点击()和setTimeout问题
- iOS设备上HTML5 canvas中的Javascript setTimeout问题
- jQuery记忆技巧游戏setTimeout()问题
- 在setTimeout问题中更新JSON对象
- Node.js中的SetTimeout问题
- AngularJS加载图像指令setTimeout问题
- For循环中的setTimeout问题
- 有人可以帮助我一个小的JavaScript setTimeout问题
- 如何解决ie浏览器setTimeout问题?
- setTimeout问题,则没有超时
- 循环和setTimeout问题的Javascript
- FireFox 插件 / javascript setTimeout 问题
- 简单的javascript settimeout问题
- 试图等待async执行的setTimeout问题