Добавление события нескольким элементам
Здравствуй многоуважаемый олл :)
видимо я перегрелся или переработал, но не могу решить скорее всего простую задачку, прошу о помощи :-? дано: несколько элементов, которым надо добавить событие, по которому вызывается функция с разными параметрами. проблема: если перечислять каждый элемент с его параметром для функции, всё работает, но при перечислении в цикле все элементы срабатывают с последним параметром. 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 запоминает последнее значение переменной в которой передаётся параметр для функции и обращается к нему для всех элементов. |
ааа разобрался, замыкания!!! забыл млин:lol:
document.getElementById('a'+n).onmouseover = function(n){ return function(){ alert(n) } }(n) тему удавлять? |
Часовой пояс GMT +3, время: 02:18. |