Показать сообщение отдельно
  #1 (permalink)  
Старый 02.02.2010, 21:50
Новичок на форуме
Отправить личное сообщение для Atreides Посмотреть профиль Найти все сообщения от Atreides
 
Регистрация: 02.02.2010
Сообщений: 2

Меню на javascript, проблемка с созданием обработчика в цикле
Хочу заделать менюшку, при создании пунктов меню сразу создаются обработчики нажатия на каждый пункт, но вместо "запоминания" обработчиками значения "i" на момент создания оных, они берут значение "i" на момент нажатия на пункт, т.е. когда ф-ия построения менюшки уже закончена.
function main_menu()
	  {
	    if(event.type=='click')
		{
	      if(!document.getElementById('menu_frame'))
		  {
	        var menu_frame=document.createElement('div');
	 	    menu_frame.className='menu_frame';
		    menu_frame.id='menu_frame';
			for(i=0;i<5;i++)
			{
			  menu_punkt=document.createElement('span');
			  menu_punkt.className='menu_punkt';
			  menu_punkt.innerHTML='Пункт меню '+i;	
			  menu_frame.onclick=function(){location.href='page'+i+'.html'}
			  menu_frame.appendChild(menu_punkt);			  
			}			
		    document.body.appendChild(menu_frame); 
		  }
		}
	  }

Пример упрощённый, в дальнейшем планируется раздавать обработчикам ссылки на страницы из массива, "i" будет ключом массива (а значит, всем пунктам меню назначится последняя в массиве ссылка), так что просьба не уводить в обходные пути, вариант выбран не случайно.
Ответить с цитированием