САМОСТОЯТЕЛЬНОЕ ОБУЧЕНИЕ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ
×

JS Учебник

JS Главная JS Введение JS Установка JS Вывод JS Синтаксис JS Заявления JS Комментарии JS Переменные JS Операторы JS Арифметика JS Присваивания JS Типы данных JS Функции JS Объекты JS Область JS События JS Строки JS Методы строк JS Числа JS Методы чисел JS Массивы JS Методы массива JS Сортировка массива JS Итерация массива JS Даты JS Формат даты JS Метод получения дат JS Методы набора... JS Математические... JS Случайные числа JS Булевы JS Сравнение... JS Заявления if...else JS Заявление switch JS Цикл for JS Цикл while JS Заявление break... JS Преобразование... JS Битовые... JS Регулярные выражения JS Ошибки JS Отладчик JS Подъемный JS Строгий JS Ключевое слово this JS Руководство стиля JS Практика JS Распространенные ошибки JS Эффективность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS JSON

JS Формы

JS Формы JS Формы API

JS Объекты

Определение объекта Свойства объекта Методы объекта Доступ к объекту Конструкторы объекта Прототипы объекта Объект ECMAScript 5

JS Функции

Определение функции Параметры функции Вызов Функции Вызвать Функцию Применение функции Закрытие Функции

JS HTML DOM

DOM Введение DOM Методы DOM Документы DOM Элементы DOM HTML DOM CSS DOM Анимация DOM События DOM Слушатель события DOM Навигация DOM Узлы DOM Коллекции DOM Список узлов

JS Браузера BOM

JS Окно JS Экран JS Местоположение JS История JS Навигатор JS Всплывающее окна JS Синхронизация JS Cookies

JS AJAX

AJAX Введение AJAX XMLHttp AJAX Запрос AJAX Ответ AJAX XML Файл AJAX PHP AJAX ASP AJAX База данных AJAX Приложения AJAX Примеры

JS JSON

JSON Введение JSON Синтаксис JSON или XML JSON Типы данных JSON Парсинг JSON Строки JSON Объекты JSON Массивы JSON PHP JSON HTML JSON JSONP

JS или jQuery

jQuery Селекторы jQuery HTML jQuery CSS jQuery DOM

JS Примеры

JS Примеры JS HTML DOM JS HTML Ввод


JavaScript HTML DOM Слушатель события



Метод addEventListener()

Пример

Добавьте прослушиватель событий, который срабатывает при нажатии кнопки пользователем:

document.getElementById("myBtn").addEventListener("click", displayDate);
Попробуйте сами »

Метод addEventListener() присоединяет обработчик событий к указанному элементу.

Метод addEventListener() присоединяет обработчик событий к элементу без перезаписи существующих обработчиков событий.

К одному элементу можно добавить множество обработчиков событий.

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

Вы можете добавить прослушиватели событий к любому объекту DOM, а не только к элементам HTML, то есть объект window.

Метод addEventListener(), легче контролировать, когда реагирует на событие клокоча.

При использовании метода addEventListener(), JavaScript отделяется от разметки HTML для лучшей читаемости и позволяет добавлять прослушиватели событий, даже если вы не контролируете разметку HTML.

Вы можете легко удалить прослушиватель событий с помощью метода removeEventListener().


Синтаксис

element.addEventListener(event, function, useCapture);

Первый параметр - это тип события например, ("click" или "mousedown" или любой другой HTML DOM Событие).

Второй параметр - это функция, которую мы хотим вызвать при наступлении события.

Третий параметр - это логическое значение, указывающее, следует ли использовать бурление событий или захват событий. Этот параметр является необязательным.

Обратите внимание, что вы не используете префикс "on" для события; используйте "click" вместо "onclick".


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

Пример

Предупреждение "Привет, Мир!", когда пользователь нажимает на элемент:

element.addEventListener("click", function(){ alert("Привет, Мир!"); });
Попробуйте сами »

Вы также можете ссылаться на внешнюю "именованную" функцию:

Пример

Предупреждение "Привет, Мир!", когда пользователь нажимает на элемент:

element.addEventListener("click", myFunction);

function myFunction() {
  alert ("Привет, Мир!");
}
Попробуйте сами »


Добавление множества обработчиков событий к одному элементу

Метод addEventListener(), позволяет добавлять множество событий в один и тот же элемент, не перезаписывая существующие события:

Пример

element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);
Попробуйте сами »

В один элемент можно добавлять события разных типов:

Пример

element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);
Попробуйте сами »

Добавьте обработчик событий для объекта window

Метод addEventListener() позволяет добавлять прослушиватели событий в любой объект HTML DOM, такой как HTML элементы, HTML документ, объект window или другие объекты, поддерживающие события, такие как объект xmlHttpRequest.

Пример

Добавьте прослушиватель событий, который срабатывает при изменении размера окна пользователем:

window.addEventListener("resize", function(){
  document.getElementById("demo").innerHTML = sometext;
});
Попробуйте сами »

Передача параметров

При передаче значений параметров используйте "анонимную функцию", которая вызывает указанную функцию с параметрами:

Пример

element.addEventListener("click", function(){ myFunction(p1, p2); });
Попробуйте сами »

Бурление событий или захват событий?

Существует два способа распространения событий в HTML DOM: бурление и захват.

Распространение событий - это способ определения порядка элементов при возникновении события. Если у вас есть элемент <p> внутри элемента <div>, и пользователь нажимает на элемент <p>, какое событие "click" элемента должно быть обработано в первую очередь?

В бурлящем режиме сначала обрабатывается событие самого внутреннего элемента, а затем внешнего: сначала обрабатывается событие щелчка элемента <p>, а затем событие щелчка элемента <div>.

При захвате внешнего элемента сначала обрабатывается событие, а затем внутреннее: сначала обрабатывается событие щелчка элемента <div>, а затем событие щелчка элемента <p>.

С помощью метода addEventListener(), можно указать тип распространения с помощью параметра "useCapture":

addEventListener(event, function, useCapture);

Значение по умолчанию - false, которое будет использовать распространение бурление, когда значение установлено в true, событие использует распространение захвата.

Пример

document.getElementById("myP").addEventListener("click", myFunction, true);
document.getElementById("myDiv").addEventListener("click", myFunction, true);
Попробуйте сами »

Метод removeEventListener()

Метод removeEventListener(), удаляет обработчики событий, присоединенные с помощью метода addEventListener():

Пример

element.removeEventListener("mousemove", myFunction);
Попробуйте сами »

Поддержка браузеров

Цифры в таблице указывают первую версию браузера, которая полностью поддерживает эти методы.

Метод
addEventListener() 1.0 9.0 1.0 1.0 7.0
removeEventListener() 1.0 9.0 1.0 1.0 7.0

Примечание: Методы addEventListener() и removeEventListener() не поддерживаются в IE 8 и более ранних версиях. Однако для этих конкретных версий браузера можно использовать метод attachEvent(), чтобы присоединить обработчики событий к элементу, и метод detachEvent(), чтобы удалить его:

element.attachEvent(event, function);
element.
detachEvent(event, function);

Пример

Кроссбраузерное решение:

var x = document.getElementById("myBtn");
if (x.addEventListener) {     // Для всех основных браузеров, кроме IE8 и более ранних версий
  x.addEventListener("click", myFunction);
} else if (x.attachEvent) {   // Для IE 8 и более ранних версий
  x.attachEvent("onclick", myFunction);
}
Попробуйте сами »

HTML DOM Ссылка на объект события

Для получения списка всех событий HTML DOM, посмотрите на нашем полном HTML DOM Справочник объект событий.


Проверьте себя с помощью упражнений

Упражнение:

Используйте eventListener, чтобы назначить событие onclick элементу <button>.

<button id="demo"></button>
<script>
document.getElementById("demo").("", myFunction);
</script>

Начните упражнение