Skip to main content

Що роблять addEventListener() і removeEventListener()?

addEventListener()

Призначення

Додає обробник (функцію), яка буде викликатись при настанні певної події.

Синтаксис:

javascript
element.addEventListener(type, listener, options);
АргументЩо означає
typeрядок - назва події ('click', 'input', 'keydown' тощо)
listenerфункція, яка виконається при події
options (необов'язково)об'єкт з додатковими налаштуваннями (наприклад { once: true })

Приклад:

javascript
<button id="btn">Натисни</button>
javascript
const btn = document.querySelector('#btn'); btn.addEventListener('click', () => { alert('Кнопку натиснуто!'); });

Тепер при кожному кліку на кнопку буде викликатись цей обробник.

Приклад з об'єктом event:

javascript
btn.addEventListener('click', (event) => { console.log(event.type); // "click" console.log(event.target); // елемент, на який клікнули });

Корисні опції:

javascript
btn.addEventListener('click', handler, { once: true, // обробник спрацює лише 1 раз capture: false, // слухати на етапі спливання (типово) passive: true, // повідомляє браузеру, що preventDefault не буде викликано });

removeEventListener()

Призначення

Видаляє раніше доданий обробник події. Використовується, якщо тобі потрібно відключити реакцію на подію.

Синтаксис:

javascript
element.removeEventListener(type, listener, options);

Важливо: Щоб видалити обробник, потрібно передати ту саму функцію, яку ти передавав в addEventListener.

Неправильно:

javascript
btn.addEventListener('click', () => console.log('hi')); btn.removeEventListener('click', () => console.log('hi')); // не спрацює!

Тут створюються дві різні анонімні функції, і браузер не розуміє, яку видаляти.

Правильно:

javascript
function handleClick() { console.log('hi'); } btn.addEventListener('click', handleClick); btn.removeEventListener('click', handleClick);

Тепер видалення спрацює.

Приклад з реальної практики

javascript
function handleScroll() { console.log('Прокрутка!'); } // Починаємо слухати window.addEventListener('scroll', handleScroll); // Через 3 секунди перестаємо слухати setTimeout(() => { window.removeEventListener('scroll', handleScroll); console.log('Слухач знято!'); }, 3000);

Підсумок

МетодЩо робитьОсобливості
addEventListener()Додає обробник подіїМожна навісити кілька слухачів на одну подію
removeEventListener()Видаляє обробникПрацює лише з тим самим об'єктом функції
optionsНалаштування{ once, capture, passive } - керують поведінкою слухача

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.