Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Добавить функцию в обработчик onclick (https://javascript.ru/forum/events/2795-dobavit-funkciyu-v-obrabotchik-onclick.html)

slayer_tmb 12.02.2009 17:07

Да наверное в этом и был прикол. Я тока начал с DOM-ом разбираться и за неделю читая о понятиях микрософта в этом направлении тоже ушел в ах...й. А getAttribute у меня на самом деле временный был. Сперва присваивал без него. потом решил попробывать. смотрю функцию возвращает. вот и решил что нет разницы. просто этот конкретный момент я таки тока в ие и потестил.

.... блиииин ниче не понимаю уже
сравните плиз два кода оба кода находятся внутри функции вызываемой онлоадом


//этот не работает при нажатии говорит не известный объект f[..] или Null
var f = new Array(menunum);
for(i=0;i<menunum;i++)
{
f[i]=menunodes[i].onclick;
if(typeof(f[i])=='function')
menunodes[i].onclick=function() { MenuClick(this);f[i].call() }
else
menunodes[i].onclick=function() { MenuClick(this); }
}


//а этот работает
var f = menunodes[1].onclick;
for(i=0;i<menunum;i++)
{
...
menunodes[i].onclick=function() { MenuClick(this); };
}
if(typeof(f)=='function')
menunodes[1].onclick=function() { MenuClick(this);f.call() }

slayer_tmb 15.02.2009 11:06

Цитата:

Сообщение от Андрей Параничев (Сообщение 12524)
slayer_tmb,
На все ваши вопросы ответят две статьи:
http://javascript.ru/tutorial/basic/...ispol-zovaniia
http://javascript.ru/start/events/intro

То что надо
добавив статью про замыкания
почитал, разобрался, сделал... спасибо большое
Супер сайт

рабочий вариант получился такой
for(i=0;i<menunum;i++)
{
.....
if(typeof(menunodes[i].onclick)=='function')
{
var f=menunodes[i].onclick;
menunodes[i].onclick=function(x) {
return function() { MenuClick(this); x.call(); } }(f);
}
else
menunodes[i].onclick=function() { MenuClick(this); };

}
Мне показалось это намного убобнее атачивента и аддивентлистнера. во первых кроссбраузерность во вторых порядок выполнения функцию легко задать.
Правда вот об убивании функций не думал но в моей задаче они не нужны

ilromka 02.10.2014 11:43

Добавить функцию в обработчик onclick
 
Допустим есть функция myFunction.
А теперь добавляем в нее новый функционал:

var myOldFunction = myFunction;
function myFunction()
{
...добавляем сюда новый функционал...
myOldFunction();
...или сюда...
}

danik.js 02.10.2014 19:23

Я чета не пойму - это топик мазохистов? Чем addEventListener/attachEvent им не угодил?


Часовой пояс GMT +3, время: 22:59.