Який обробник запуститься?
У змінній button
знаходиться кнопка. Спочатку на ній немає обробників.
Який з обробників запуститься? Що буде виведено під час кліку після виконання коду?
button.addEventListener("click", () => alert("1"));
button.removeEventListener("click", () => alert("1"));
button.onclick = () => alert(2);
Відповідь: 1
і 2
.
Перший обробник спрацює, тому що він не був вилучений методом removeEventListener
. Щоб видалити обробник, необхідно передати саме ту функцію, яка була призначена як обробник. Попри те, що код ідентичний, в removeEventListener
передається нова, інша функція.
Щоб видалити функцію-обробник, потрібно десь зберегти посилання на неї, наприклад:
function handler() {
alert(1);
}
button.addEventListener("click", handler);
button.removeEventListener("click", handler);
Обробник button.onclick
спрацює все одно. Разом з addEventListener
.