AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Передача параметра в javascrippt 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,
   а, значит, такого элемента в массиве нет */

.

© Copyright 2008-2016 by KDG