Как сменить обработчик события у элемента?

Ямерт

The Old One
Как сменить обработчик события у элемента?

Есть элемент <IMG>. У него есть имя myImageName. И аргумент - к примеру, "onClick=alert('foo')".
Я пытаюсь через JS присвоить другой обработчик событию onClick:
PHP:
myImg = document.all.myImageName;
alert (myImg); // [object]
alert (myImg.onClick); // function anonymous() {alert('foo');}
myImg.onClick = "alert('here');";
alert (myImg.onClick); // alert('here');
Ошибка не выдаётся (проверяю в IE 5.5), но обработчик остаётся старый :(
Самое обидное, что последний алерт свидетельствует о том, что обработчик-то уже новый! :(

Уж в IE-то это должно работать, по идее...
Может я где-то что-то упустил?
 

Андрей М.

Guest
object.onclick="func()" присваивает не обработчик, а результат выполения функции.
Чтобы присвоить обработчик, надо написать:
object.onclick=func //без скобок и кавычек
или просто не объявляя функцию заранее
object.onclick=function(){
код
}
 

Андрей М.

Guest
по поводу светлой мечты:
http://www.ecma-international.org/publications/standards/ECMA-262.htm
эта спецификация в принципе соблюдается всеми современными браузерами. Современными, я сказал, а не всеми ;-)
 

Андрей М.

Guest
Ямерт, как не получается? значит ошибка в другом месте.
 

Андрей М.

Guest
а ну ясно - js в отличие от HTML регистрозависимый: on_c_lick!!!

вот работающий пример:
Код:
<html>
<head>
<script>
function func2(){
	alert('he-he');
}
function func(x){
	alert('clicked');
        x.onclick=func2;
}
</script>
</head>
<body>
<img src="test.gif" onclick="func(this)">
</body>
</html>
 

Ямерт

The Old One
:D
Заработало!!

Оказывается, у меня было 2 ошибки:
1) <object>.<event> = <function>(); //надо только имя функции, если таковая есть, либо function() {<code>}
2) onClick вместо onclick.
Поочерёдно я исправлял каждую из них, оставляя другую :D

Андрей, спасибо! :)
 
Сверху