Передача параметра в JavaScript setTimeout (замыкания)
Не работает:
for (x=0; x<id.length; x++) {
setTimeout(function(){date_del(id[x])},1000);
};
Вариант 1 (не работает для объектов):
date_del = id[x];
var timer = setTimeout("date_del("+date_del+")",1000);
Вариант 2:
function getfunc(x){
return function(){
date_del(id[x]);
}
}
for (x=0; x<id.length; x++) {
setTimeout(getfunc(x),1000);
};
Вариант 3 (замыкания):
for(var x=0;x<id.length;x++){
setTimeout(function(i){
return function(){
date_del(id[i])}
}(x),1000);
}
/* Вы передаете ссылку на переменную x.
После завершения цикла она равна id.length,
а, значит, такого элемента в массиве нет */
.
Прокомментировать/Отблагодарить