Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.08.2010, 22:32
Новичок на форуме
Отправить личное сообщение для Askhsiv Посмотреть профиль Найти все сообщения от Askhsiv
 
Регистрация: 23.10.2009
Сообщений: 9

Добавление события нескольким элементам
Здравствуй многоуважаемый олл

видимо я перегрелся или переработал, но не могу решить скорее всего простую задачку, прошу о помощи

дано: несколько элементов, которым надо добавить событие, по которому вызывается функция с разными параметрами.

проблема: если перечислять каждый элемент с его параметром для функции, всё работает, но при перечислении в цикле все элементы срабатывают с последним параметром.

HTML:
<style> div {width:50px; height:50px; margin:10px; background:#036} </style>

<div id="a1"></div>
<div id="a2"></div>
<div id="a3"></div>

<input type="button" value="Add Event" onclick="add_event()" />


javascript:
function add_event()
{
	for(n=1; n<4; n++)
	{
			document.getElementById('a'+n).onmouseover = function(){ alert(n); }
	}
	
	//document.getElementById('a1').onmouseover = function(){ alert(1); }
	//document.getElementById('a2').onmouseover = function(){ alert(2); }
	//document.getElementById('a3').onmouseover = function(){ alert(3); }
}


если расслешить три строчки в функции, то всё работает правильно, а так алертает цифру 4. очевидно javascript запоминает последнее значение переменной в которой передаётся параметр для функции и обращается к нему для всех элементов.

Последний раз редактировалось Askhsiv, 13.08.2010 в 22:40.
Ответить с цитированием
  #2 (permalink)  
Старый 13.08.2010, 22:58
Новичок на форуме
Отправить личное сообщение для Askhsiv Посмотреть профиль Найти все сообщения от Askhsiv
 
Регистрация: 23.10.2009
Сообщений: 9

ааа разобрался, замыкания!!! забыл млин

document.getElementById('a'+n).onmouseover = function(n){ return function(){ alert(n) } }(n)


тему удавлять?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление события Skipp Events/DOM/Window 23 29.06.2010 10:09
Добавление события Google-календарь InviS Серверные языки и технологии 0 04.05.2010 04:48
Как заставить this в обработчике события указывать на объект? Dmitryk Events/DOM/Window 3 16.03.2009 08:45
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47
Явный вызов процедуры обработки события. supchik Общие вопросы Javascript 18 27.01.2009 13:16