Ребята, помогите пожалуйста – необходимо в кнопке button сделать регистрацию двух обработчиков события click.
Подскажете с кодом?!
Попробуйте этот вариант:
<button id="mybutton">Щелкните меня!</button>
<script>
var b = document.getElementById("mybutton");
b.onclick = function() {
alert("Спасибо, что щелкнули на мне!");
};
b.addEventListener("click", function() {alert('Еще раз спасибо!')}, false);
</script>
Могли бы немного объяснить пожалуйста – буду признателен!
Вызов метода addEventListener() со строкой «click» в первом аргументе никак не влияет на значение свойства onclick. Во фрагменте, приведенном выше, щелчок на кнопке приведет к выводу двух диалоговых окон alert(). Но важнее то, что метод addEventListener() можно вызвать несколько раз и зарегистрировать с его помощью несколько функций-обработчиков для одного и того же типа события в том же самом объекте. При появлении события в объекте будут вызваны все обработчики, зарегистрированные для этого типа события, в порядке их регистрации.
Многократный вызов метода addEventListener() для одного и того же объекта с теми же самыми аргументами не дает никакого эффекта - функция-обработчик регистрируется только один раз и повторные вызовы не влияют на порядок вызова обработчиков.
Парным к методу addEventListener() является метод removeEventListener(), который принимает те же три аргумента, но не добавляет, а удаляет функцию-обработчик из объекта. Это часто бывает удобно, когда необходимо зарегистрировать временный обработчик события, а затем удалить его в какой-то момент.
А почему не сделать так
<button id="btn1">Test</button>
<script>
var b = document.getElementById("btn1");
b.addEventListener("click", function() {alert('Еще раз спасибо!')}, false);
b.addEventListener("click", function() {alert('Еще раз спасибо!')}, false);
</script>
addEventListener как раз и нужен чтобы добавить несколько обработчиков на одно и то же событие
Это не верное утверждение
Если вызвать функцию addEventListener() несколько раз для регистрации нескольких функций обработчиков одного типа события в одном объекте, то при возникновении события этого типа в данном объекте (или при всплывании к данному объекту, или при перехвате этого события данным объектом) будут вызваны все зарегистрированные вами функции.
Вот цитата из "Дэфида Флэнагана JavaScript. Подробное руководство"