Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замыкания и drop-down меню (https://javascript.ru/forum/misc/10133-zamykaniya-i-drop-down-menyu.html)

KOLANICH 21.06.2010 00:15

Замыкания и drop-down меню
 
сначала был так:
function dropDown(){
	menuBody.style.display="block";
	menuState=true;
	var i;

	for(i in menuItems){
		setTimeout(function(){itemDropDown(menuItems[i]);},menuDelay*i);

		//i++;
	}
	//setTimeout(function(){menuBody.style.display="block";},menuDelay*i);
}

работало криво

потом стало так:
function dropDown(){
	menuBody.style.display="block";
	menuState=true;
	var i;
function addItemDropDown(i){setTimeout(function(){itemDropDown(menuItems[i]);},menuDelay*i);}

	for(i in menuItems){
		addItemDropDown(i);
		//i++;
	}
	setTimeout(function(){menuBody.style.display="block";},menuDelay*i);
}

и это таже работает криво!!!
в чём подвох?

exec 21.06.2010 07:42

Сделай все нужные переменные глобальными. Ф-ция в setTImeout/setInterval вызывается в контексте window.

Kolyaj 21.06.2010 08:19

http://javascript.ru/basic/closure#p...-ispolzovaniya

KOLANICH 21.06.2010 14:12

как поправить
с возвращаемой функцией результат такой-же

Kolyaj 21.06.2010 14:14

Цитата:

Сообщение от KOLANICH
как поправить

Там всё написано.

KOLANICH 21.06.2010 14:39

с возвращаемой функцией результат такой-же

Kolyaj 21.06.2010 15:05

Значит плохо прочитали. Тоже могу повторить
Цитата:

Сообщение от Kolyaj
Там всё написано.



Часовой пояс GMT +3, время: 06:46.