Возникла проблема с динамической установкой обработчиков событий.
Напишу сразу код, он простой, вы сразу его поймёте:
Есть некий элемент (например, картинка)
CODE:<img src="picture.jpg" width="400" height="300" id="pic">
Вешаем на него обработчик событий, используя DOM-методы
CODE:function addEvent(obj,evnt,func) {
obj = document.getElementById(obj);
if(typeof obj.addEventListener != "undefined") {
obj.addEventListener(evnt,func,false);
} else if(typeof obj.attachEvent != "undefined") {
obj.attachEvent("on" + evnt,func);
} else {
obj["on" + evnt] = func;
}
}
Ну а теперь сама вешалка
CODE:addEvent("pic","click",function() {
alert(this.id);
});
Простецкий пример - при нажатии на картинку вылезает сообщение с идентификатором этой самой картинки. Работает везде, кроме IE, там выводится undefined... Кто-нибудь с этим сталкивался? Что посоветуете? Собственно, проблема в том, что параметр this там указывает чёрти-знает куда, только не на тот элемент, из которого вызвался обработчик. |