JavaRush /Курсы /Модуль 1: Web Core /Работа с событиями

Работа с событиями

Модуль 1: Web Core
21 уровень , 4 лекция
Открыта

5.1 Основы работы с событиями

События в JavaScript позволяют взаимодействовать с пользователем и реагировать на его действия, такие как клики мышью, нажатия клавиш, изменения в формах и многое другое. Понимание того, как добавлять и удалять обработчики событий — важная часть разработки интерактивных веб-приложений.

Что такое события?

Событие — это сигнал от браузера, который сообщает, что что-то произошло. Например, пользователь кликнул по кнопке или загрузилась страница. События позволяют выполнять определенные действия в ответ на эти сигналы.

Типы событий

Существует множество типов событий. Некоторые из наиболее часто используемых включают:

  • Мышь: click, dblclick, mouseover, mouseout, mousedown, mouseup, mousemove
  • Клавиатура: keydown, keyup, keypress
  • Форма: submit, change, focus, blur
  • Документ/Окно: load, resize, scroll, unload

Обработчики событий

Обработчики событий (или слушатели событий) — это функции, которые выполняются в ответ на определенное событие. Они "слушают" определенные события и запускаются, когда эти события происходят.

5.2 Добавление обработчиков событий

Добавление обработчиков событий с addEventListener

Метод addEventListener позволяет добавлять обработчики событий к элементам. Он предоставляет большую гибкость и контроль по сравнению с традиционными методами добавления событий, такими как использование атрибутов HTML (onclick, onchange и т. д.).

Синтаксис:

    
      element.addEventListener(event, handler, options);
    
  

Где:

  • element: элемент, к которому добавляется обработчик события
  • event: тип события, на которое нужно реагировать (например, click, input, keydown)
  • handler: функция, которая будет вызвана при возникновении события
  • options: дополнительные параметры (необязательный аргумент)

Пример: Добавление обработчика события click

В этом примере обработчик события добавляется к кнопке. Когда пользователь кликает по кнопке, появляется сообщение с уведомлением.

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Event Example</title>
        </head>
        <body>
        <button id="myButton">Click me</button>

        <script>
          const button = document.getElementById('myButton');

          button.addEventListener('click', function() {
            alert('Button clicked!');
          });
        </script>
        </body>
      </html>
    
  

Пример: Добавление нескольких обработчиков событий

С помощью addEventListener можно добавлять несколько обработчиков для одного события.

В этом примере два обработчика события добавляются к кнопке. При клике оба обработчика выполняются последовательно, выводя соответствующие сообщения в консоль.

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Event Example</title>
        </head>
        <body>
          <button id="myButton">Click me</button>

          <script>
            const button = document.getElementById('myButton');

            button.addEventListener('click', function() {
              console.log('First handler');
            });

            button.addEventListener('click', function() {
              console.log('Second handler');
            });
          </script>
        </body>
      </html>
    
  

5.3 Использование параметра options

Параметр options позволяет настроить поведение обработчика событий. Наиболее часто используемые опции:

  • once: если true, обработчик вызовется только один раз, после чего автоматически удалится
  • capture: если true, событие обрабатывается во время фазы захвата вместо фазы всплытия
  • passive: если true, указывает, что обработчик никогда не вызовет preventDefault()

Пример: Обработчик, который выполняется только один раз

В этом примере обработчик события сработает только один раз, после чего будет автоматически удален.

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Event Example</title>
        </head>
        <body>
          <button id="myButton">Click me</button>

          <script>
            const button = document.getElementById('myButton');

            button.addEventListener('click', function() {
              alert('This will be shown only once');
            }, { once: true });
          </script>
        </body>
      </html>
    
  

5.4 Удаление обработчиков событий

Удаление обработчиков событий с removeEventListener

Метод removeEventListener позволяет удалять обработчики событий, которые были добавлены с помощью addEventListener. Для этого необходимо передать те же аргументы, которые использовались при добавлении обработчика.

Синтаксис:

    
      element.removeEventListener(event, handler, options)
    
  

Где:

  • element: элемент, у которого удаляется обработчик события
  • event: тип события, обработчик которого нужно удалить
  • handler: функция, которая была назначена как обработчик события
  • options: дополнительные параметры (должны совпадать с параметрами, использованными при добавлении обработчика)

Пример: Удаление обработчика события click

В этом примере обработчик события click добавляется к кнопке. Нажатие на другую кнопку удаляет обработчик события click.

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Event Example</title>
        </head>
        <body>
          <button id="myButton">Click me</button>
          <button id="removeButton">Remove Click Handler</button>

          <script>
            const button = document.getElementById('myButton');
            const removeButton = document.getElementById('removeButton');

            function clickHandler() {
              alert('Button clicked!');
            }

            button.addEventListener('click', clickHandler);

            removeButton.addEventListener('click', function() {
              button.removeEventListener('click', clickHandler);
              alert('Click handler removed');
            });
          </script>
        </body>
      </html>
    
  
1
Задача
Модуль 1: Web Core, 21 уровень, 4 лекция
Недоступна
Несколько обработчиков
Несколько обработчиков
1
Задача
Модуль 1: Web Core, 21 уровень, 4 лекция
Недоступна
Удаление обработчика
Удаление обработчика
1
Опрос
DOM-элементы, 21 уровень, 4 лекция
Недоступен
DOM-элементы
DOM-элементы
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
No Name Уровень 36
1 июня 2025
+ лекция в копилке
Виктор Рябов Уровень 21
2 апреля 2025
Важно отметить, что в удаляемом слушателе должны быть именно именованные функции. Если попробовать сделать удаление с анонимными функциями, то ничего не получится. Для меня было не очевидно.
wh1telis Уровень 48
19 мая 2025
да, такая же история, с анонимными работает, но не засчитывается. Пришлось переписать.