Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

JS addEventListener - способ указания функции.

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> JS addEventListener - способ указания функции.
Имя
Сообщение << Старые топики   Новые топики >>
JS addEventListener - способ указания функции. - 2009-12-30 08:58:27.023333   
mr_Anderson

Сообщений: 140
Оценки: 0
Присоединился: 2008-11-29 19:52:02.186666
Если я хочу прикрутить к элементу обработчик события(например нажатия кнопочки), то я могу написать так:
//Способ 1) input.addEventListener('keypress', navigation, false); function navigation(){ //... } Могу написать вот так:
//Способ 2) input.addEventListener('keypress', function(event){navigation(event)}, false); function navigation(){ //... } Раньше я думал, что это одно и то же. Оказывается - нет.
Дело в том, что я что то где то накрутил в своём коде и теперь, при событии keypress у меня не запускается исполняющая функция navigation.
Но не запускается она если я указал её в addEventListener первым способом. При указании вторым способом она нормально отрабатывает.
Так значит в этих двух способах есть какое то принципиальное различие. Хотелось бы знать - какое…


Post #: 1
RE: JS addEventListener - способ указания функции. - 2009-12-30 09:34:17.720000   
Papa James

Сообщений: 438
Оценки: 0
Присоединился: 2009-12-07 13:36:18.370000
Если в javascript ты пишешь название функции со скобками - то возвращается результат выполнения этой функции. Если без - то не возвращается. Ну это я упрощенно описал. Допустим, в jquery
$('input').keypress(function(e){ test(e)}) где test(e), допустим, проверяет код введенной клавиши и возвращает истину или ложь (можно или нет вводить символ) будет срабатывать, но будут печататься все символы.
$('input').keypress(function(e){return test(e)}) Будет работать верно.
Кстати, попробуй в первом примере поставить скобки у названия функции - будет работать?

Объяснил, как смог )
Post #: 2
RE: JS addEventListener - способ указания функции. - 2009-12-30 13:47:07.156666   
mr_Anderson

Сообщений: 140
Оценки: 0
Присоединился: 2008-11-29 19:52:02.186666
quote:

Если в jаvаsсript ты пишешь название функции со скобками - то возвращается результат выполнения этой функции….

Ну дык моя же функция - она и не возвращает ни чего. Её предназназение оперировать стилем следующей/предыдущей строчки, допустим, некоторой таблицы…

Я конечно попробовал первый пример со скобками, но, как и ожидалось, ни чего не вышло.

Кстати, в IE функция срабатывает нормально. Определяю я её обычным первым способом:input.attachEvent('onkeydown', navigation);
Post #: 3
RE: JS addEventListener - способ указания функции. - 2009-12-30 14:12:59.953333   
mr_Anderson

Сообщений: 140
Оценки: 0
Присоединился: 2008-11-29 19:52:02.186666
…Да, ЯваСкрипт не перестаёт удивлять своей ухищрённостью и излишней(для меня-новичка) мудрёностью.
Не успел я до конца разобраться с установкой обработчиков событий, как вляпался в проблему с так называемыми замыканиями. Оказывается переменные отработавшей функции, если на них ссылались вложеные ф-ии, - они не умерают и при повторном вызове этой ф-ии могут ещё дать о себе знать. При чём весьма неожиданно… А что бы этого не происходило, я должен это учитывать, не допускать такие "незаконные связи" в будущем и отловить уже существующие…
Неужели мне когда то всё это будет нравиться и за сегодняшними проблемами я буду видеть потенциал, мощьность и неисчерпаемые возможности великого и могучего JS?!….

И при всём при этом тут ещё и это… слово ругательное - не хочется называть… кроссбраузерность!

Обалдеть, товарищи!.. Лучше б я на скрипке играл…)))
Post #: 4
RE: JS addEventListener - способ указания функции. - 2009-12-30 23:10:43.980000   
Papa James

Сообщений: 438
Оценки: 0
Присоединился: 2009-12-07 13:36:18.370000
ну замыкания всегда надо учитывать - это факт, и не использовать в функциях глобальных переменных без надобности… А кроссбраузерность… IE давно надо запретить использовать
Post #: 5
RE: JS addEventListener - способ указания функции. - 2010-01-01 05:04:42.456666   
YellowRiver

Сообщений: 214
Оценки: 0
Присоединился: 2007-09-02 20:34:27.313333
Ничего в этом нет сложного, переменные можно создать везде, где тебе угодно, даже внутри функции
Отработанная функция - это просто код, который работает на своём уровне и создаёт переменные у себя

Одинажды созданная переменная, где бы она не находилась, будет существовать всегда, можно менять её значение, и т д…
Функции в жабаскрипте - это объекты, которые содержат код, который может быть исполнен и всё
Если исполнить код, то объект же не удалиться, а значит и переменные внутри него

Кстати, нифтыкаю, а почему бы просто не сделать
input.onkeydown=function(event){
// код
}

Намного проще и никаких дополнительных методов
Post #: 6
RE: JS addEventListener - способ указания функции. - 2010-01-08 16:10:21.190000   
mr_Anderson

Сообщений: 140
Оценки: 0
Присоединился: 2008-11-29 19:52:02.186666
quote:

input.onkeydown=function(event){…
- А что, и так можно?… А зачем тогда вообще addEventListener?…..[:-]
Post #: 7
Страниц:  [1]
Все форумы >> [Веб-программинг] >> JS addEventListener - способ указания функции.







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.