2016-06-13 2 views
-1

У меня вопрос о событии onchange для выпадающего списка. Я делал некоторое чтение и обнаружили, что предпочтительный способ обработать событие изменения:Назначение функций событиям в javascript

select.onchange = function(){animateMarker()}; 

мне было просто интересно, почему это не может быть просто:

select.onchange = animateMarker(); 

Что такое function() перед выполнением animateMarker()?

Спасибо.

+0

Возможный дубликат [назначить событие onclick для работы] (http://stackoverflow.com/questions/3740761/assign-onclick-event-to-function) – Rajesh

ответ

3

Вы можете сделать это:

select.onchange = animateMarker; 

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

И для ответа на последнюю часть: функция() {}, которая обертывает animateMarker, не нужна, это просто анонимная функция, которая выполняет функцию animateMarker при ее вызове.

+1

* «..., удаление их означает« * - что вы назначаете функцию обработчику событий, так что она будет выполнена в конечном итоге. Вероятно, это лучший способ выразить это. – deceze

+0

Спасибо @deceze Я обновил ваше предложение. – MrWillihog

0

Как @mrwillihog сказал, что вы можете назначить его непосредственно с ее определением как select.onchange = animateMarker; однако это разумно использовать функцию-оболочку, как рекомендуется, так как при этом вы можете добавить больше функций, затем в onchange случае, вставив в функцию обертки. В противном случае вы будете ограничены только animateMarker событием ... или ... вам может потребоваться переопределить animateMarker и сделать некоторые уродливые патчи для обезьян. Поэтому лучше использовать функцию обертки.

+0

1) Если и когда вы хотите добавить больше прослушивателей событий, тогда вы можете добавить оболочку функции. 2) В любом случае вы должны использовать 'addEventListener', а не напрямую переписывать свойство обработчика событий именно по этой причине. – deceze

Смежные вопросы