прослушиватель событий в javascript не срабатывает, за исключением случаев, когда страница загружается

Я пытаюсь это:

//this represents all of the select tags on the page
var select = document.getElementsByTagName("select");

//Listener for when the option changes
select.addEventListener("change", hi(), false);

function hi() {
  alert("hi");
}
<select>
  <option>one</option>
  <option>two</option>
</select>

но прослушиватель событий, похоже, не работает, в jsfiddle он работает при загрузке страницы, но не при изменении параметра...


person user2405469    schedule 07.01.2014    source источник
comment
Прослушиватели будут работать нормально, если вы просто прикрепите их к чему-то другому, кроме HTMLCollection, которая возвращается из getElementsByTagName()< /а>. Обратите также внимание на ответ Джонникарди.   -  person Teemu    schedule 07.01.2014


Ответы (1)


Убираем скобки из имени функции:

select.addEventListener("change", hi, false);

Вы вызываете функцию и прикрепляете ее результат, а не прикрепляете саму функцию.

Редактировать: Кроме того, как указывает Теему, вы пытаетесь подключиться к коллекции, а не к отдельному элементу select. Попробуйте var select = document.getElementsByTagName("select")[0]; или, еще лучше, используйте getElementById.

person johnnycardy    schedule 07.01.2014