# DOM-элементы. События. Часть 2

[![Generic badge](https://img.shields.io/badge/JavaScript-%D0%B4%D0%BB%D1%8F%20%D1%82%D1%83%D0%BF%D1%8B%D1%85-green.svg)](https://img.shields.io/badge/JavaScript-%D0%B4%D0%BB%D1%8F%20%D1%82%D1%83%D0%BF%D1%8B%D1%85-green.svg)

![](https://3367117456-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8VRUyYIp5X-d6oGwV2%2F-M8W2DM9rYDrAzwyXSVO%2F-M8W2YKiOwjNjS_QFU-e%2Fimg-23.png?alt=media\&token=4f6a9237-af0c-4cb3-8c5c-63af1036f5a4)

В предыдущем уроке мы разобрались, как можно **обрабатывать событие клика**, используя методы элемента `onclick` и `addEventListener`.

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

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

Создай на своем компуктере папку, например, с названием `web`. В этой папке создай 3 файла: `index.html`, `script.js`, `style.css`

Содержимое файла `index.html`:

```markup
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Page</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <button class="red-btn" id="btnRed">Большая красная \
    кнопка</button>

    <script src="script.js"></script>
  </body>
</html>
```

Содержимое файла `style.css`:

```css
.red-btn {
    background: red;
    height: 100px;
    width: 250px;
    font-size: 16px;
    color: white;
}
```

Это файл стилей. Все что мы делаем здесь: меняем цвет кнопки на красный, высоту кнопки (`height`) на 100 пикселей, ширину (`width`) на 250 пикселей, устанавливаем размер шрифта (`font-size`) в 16px, и цвет текста (`color`) в кнопке на белый. Если хочешь больше узнать о CSS, то придется гуглить. Здесь мы изучаем **JavaScript** =)

Содержимое файла `script.js`:

```javascript
let btnRed = document.getElementById('btnRed');

console.dir(btnRed);

btnRed.onclick = function() {
    alert('На меня нажали левой кнопкой мыши');
};

btnRed.oncontextmenu = function() {
    alert('На меня нажали правой кнопкой мыши');
};
```

Когда ты создашь все файлы с указанным содержимым открой с помощью своего браузера файл `index.html`. Должно получится следующее:

![](https://3367117456-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8VRUyYIp5X-d6oGwV2%2F-M8W2DM9rYDrAzwyXSVO%2F-M8W2ufLQRK3SHqaa6j4%2Fimg-1.png?alt=media\&token=b12b4811-35c9-4d27-8627-fc94c1d78969)

Как ты понимаешь, нас больше всего интересует файл с **JS-кодом**. Давай его разберем.

Первым делом, как обычно, ты должен выбрать элемент с которым хочешь взаимодействовать с помощью **JavaScript**, в данном случае это кнопка с `id="btnRed"`:

```javascript
let btnRed = document.getElementById('btnRed');
```

Дальше идет строка:

```javascript
console.dir(btnRed);
```

Ты привык видеть `console.log()`, который выводит текстовое сообщение в консоль, а `console.dir()`, в свою очередь, выводит список свойств указанного `JS-объекта` (наша кнопка является `DOM-объектом`).

Итак, чтобы посмотреть, что же выводит в консоль данная команда нам нужно открыть **инструменты разработчика (Developer Tools)**. А для этого делаем следующее:

![](https://3367117456-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8VRUyYIp5X-d6oGwV2%2F-M8W2DM9rYDrAzwyXSVO%2F-M8W397zwMCwO67d_pRW%2Fimg-2.png?alt=media\&token=161824a0-0272-45ba-8d56-6da2b5fbbeb6)

Либо так:

![](https://3367117456-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8VRUyYIp5X-d6oGwV2%2F-M8W2DM9rYDrAzwyXSVO%2F-M8W3FjAbwxITUfaan_T%2Fimg-3.png?alt=media\&token=8fb6a1e2-fdd2-48a1-a97a-c68eae4a70ad)

Либо, горячими клавишами. Но они отличаются от браузера к браузеру, от операционной системы к операционной системе.&#x20;

Как ты заметил у меня все англоязычное и поэтому интуитивно ищи данные менюшки в своем браузере, если он у тебя на русском или любом другом языке. Если не получается найти, то гугли)

После открытия данной панели нам нужно выбрать `консоль`:

![](https://3367117456-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8VRUyYIp5X-d6oGwV2%2F-M8W2DM9rYDrAzwyXSVO%2F-M8W3LONa6C3JEYrQoZd%2Fimg-4.png?alt=media\&token=7d64cbee-0a86-4dfe-ad4a-a06fa17e58c2)

Если ты все сделал правильно, то у тебя там уже будет выведена надпись, но она не простая, а иерархическая. Это означает, что мы можем ее раскрыть нажав на стрелочку слева от нее:

![](https://3367117456-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8VRUyYIp5X-d6oGwV2%2F-M8W2DM9rYDrAzwyXSVO%2F-M8W3QwRpVgCwMTwY6as%2Fimg-5.png?alt=media\&token=3f5a9b2a-2d58-4daa-9679-6cf8829b4c7c)

И здесь открывается огромный список различных свойств и методов. Но мы ищем только те методы, которые начинаются со слова `on`. Дело в том, что методы, которые начинаются с `on`, и являются событиями, можно обрабатывать у данного элемента. Список примерно следующий:

![](https://3367117456-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8VRUyYIp5X-d6oGwV2%2F-M8W2DM9rYDrAzwyXSVO%2F-M8W3ZZCid-s26jB8mqc%2Fimg-6.png?alt=media\&token=a4e1a67e-f5e8-40fd-8201-88ff48b8ada4)

![](https://3367117456-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8VRUyYIp5X-d6oGwV2%2F-M8W2DM9rYDrAzwyXSVO%2F-M8W3edGr_o69fmLdGzP%2Fimg-7.png?alt=media\&token=75828eac-1493-4022-8847-d6c2571abb80)

Как видишь, их огромное множество и разбирать их все со мной – это гиблое дело. Общий прогресс не будет идти. Поэтому, посмотри сам, что они делают, как и зачем. Полный список событий с описанием находится [здесь](https://developer.mozilla.org/ru/docs/Web/Events).

Для примера я обработал 1 событие (`нажатие правой кнопкой по элементу`) разными способами:

```javascript
btnRed.oncontextmenu = function() {
    alert('На меня нажали правой кнопкой мыши');
};

// либо так
btnRed.addEventListener('contextmenu', function() {
   alert('На меня нажали правой кнопкой мыши');
});
```

Как видишь, в первом случае вызывается метод `oncontextmenu`, а во втором в метод `addEventListener` передается название события, но без начальной приставки `on` – `contextmenu`. Это правило касается **всех событий**.

Остальные события пробуй изучать сам. Потому что все обработчики для них пишутся аналогично.

#### **Домашнее задание** <a href="#toc_1" id="toc_1"></a>

Почитай о других событиях и попробуй сделать для них обработчик в соответствии с примером выше.

[Читать о других событиях здесь](https://developer.mozilla.org/ru/docs/Web/Events)
