Добавить функцию в обработчик onclick
Подскажите кто сможет
Надо добавить к onclick функцию. Важно именно добавить к уже существующей. Мои эксперименты остановились на следующем коде originalhandler=menunodes[i].getAttribute('onclick'); if(typeof(originalhandler)=='function') { originalhandler.call();//срабатывает menunodes[i].onclick=function() { originalhandler.call(); MenuClick(this); }; originalhandler.call();//срабатывает } else menunodes[i].onclick=function() { MenuClick(this); }; при клике говорит что не знает originalhandler ... |
Цитата:
<html> <script> function setOnClick(){ document.getElementById('1').onclick = function(){onClickBtnOne.call()} } function onClickBtnOne(){ alert('handler one'); } function reformer(){ var f = document.getElementById('1').onclick; document.getElementById('1').onclick = function(){onClickBtnTwo.call(); f.call()} } function onClickBtnTwo(){ alert('handler two'); } </script> <body id="body" onload="setOnClick(); reformer();"> <input type="button" id="1"> </body> </html> ЗЫ getAttribute возвращает строку |
А об addEventListener/attachEvent ничего не слышали?
Цитата:
Цитата:
|
ЗЫ
getAttribute возвращает строку IE возвращает функцию а call я вызывал для проверки что возвращенная функция реально работает и она работает насчет атача не знал спасибо за совет почитаю |
Цитата:
Только я не пойму почему у меня не работает я делаю originalhandler=menunodes[i].getAttribute('onclick'); (и он 100% возвращает функцию) ты делаешь var f = document.getElementById('1').onclick; далее я делаю menunodes[i].onclick=function() { originalhandler.call(); MenuClick(this); }; ты: document.getElementById('1').onclick = function(){onClickBtnTwo.call(); f.call()} но у тебя на f.call не ругается а у меня на originalhandler.call(); ругается гы document.getElementById('1').addEventListener("cli ck", function() {onClickBtnTwo();}, false); повесила IE |
Цитата:
Данный пример, я рассматриваю, как частный от: Element.onEvent = function(){refObject.method.call(refObject, param1, ..., paramN)} |
slayer_tmb,
На все ваши вопросы ответят две статьи: http://javascript.ru/tutorial/basic/...ispol-zovaniia http://javascript.ru/start/events/intro |
Цитата:
имею сказать две вещи 1. я х@ею дорога я редакция :) 2. ИЕ возвращает возвращает не саму функцию обработчик, а некую, созданную автоматически, в которой вызывается функция обработчик....и проблему "почему не работает" надо искать в этом направлении. |
Цитата:
|
Просто не устанавливайте обработчики через setAttribute и не получайте их, через getAttribute. В случае этих функций работа не гарантируется, а по спецификации значением атрибута может быть только примитивное значение.
|
Часовой пояс GMT +3, время: 04:46. |