Добавить функцию в обработчик 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, время: 09:49. |