-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
53 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# События | ||
|
||
Когда пользователь совершает какое-то действие на веб-странице, считается, что произошло событие. Существует множество типов событий, например `click` — пользователь нажал на элемент, `mouseover` — пользователь навёл курсор на элемент, `keydown` — пользователь нажал клавишу на клавиатуре и т.д. | ||
|
||
Для создания интерактивных страниц нужно, чтобы при возникновении определённого события выполнялся определённый код. Для этого у каждого элемента есть метод `addEventListener`, который позволяет зарегистрировать обработчик события. Метод в качестве аргументов принимает тип события и функцию-обработчик, которую браузер будет вызывать каждый раз, когда на данном элементе будет происходить событие данного типа. | ||
|
||
Например, ниже показано, как добавить кнопке обработчик события `click`, чтобы при каждом её нажатии браузер показывал диалоговое окно. | ||
|
||
```html | ||
<button>Click me</button> | ||
``` | ||
|
||
```js | ||
function handleButtonClick() { | ||
alert("The button was clicked"); | ||
} | ||
|
||
const button = document.querySelector("button"); | ||
button.addEventListener("click", handleButtonClick); | ||
``` | ||
|
||
Функция-обработчик может принимать параметр, в который будет передан объект с информацией о событии. Чаще всего у этого объекта используется свойство `target`, которое содержит объект элемента, на котором событие произошло. | ||
|
||
Это может быть полезно, когда один и тот же обработчик используется сразу на нескольких элементах. Например, ниже показана страница, на которой уже несколько кнопок, а в диалоговом окне показывается, какая именно из них была нажата. | ||
|
||
```html | ||
<button>Button 1</button> | ||
<button>Button 2</button> | ||
<button>Button 3</button> | ||
``` | ||
|
||
```js | ||
function handleButtonClick(event) { | ||
alert(event.target.innerText + " was clicked"); | ||
} | ||
|
||
const buttons = document.querySelectorAll("button"); | ||
|
||
for (let i = 0; i < buttons.length; i++) { | ||
buttons[i].addEventListener("click", handleButtonClick); | ||
} | ||
``` | ||
|
||
## Упражнения | ||
|
||
1. Реализуй страницу, на которой отображается число, изначально `0`. При каждом клике на число оно должно увеличиваться на единицу. | ||
|
||
1. Реализуй страницу, на которой отображаются два числа, изначально оба `0`. При каждом клике на число это число должно увеличиваться на единицу. | ||
|
||
1. Реализуй страницу, на которой отображается несколько символов стрелочек. Стрелочка может указывать в одном из восьми направлений: `↑`, `↗`, `→`, `↘`, `↓`, `↙`, `←` или `↖`. Изначально все стрелочки указывают вверх. При каждом клике на любую стрелочку эта стрелочка должна "поворачиваться" на 45° по часовой стрелке. | ||
|
||
1. Реализуй страницу с игрой в крестики-нолики. На странице отображается квадратное поле размером 3 на 3 ячейки. При клике на пустую ячейку в ней появляется либо крестик `X`, либо нолик `O`, в зависимости от того, кто из двух игроков делает ход. Игроки ходят по очереди, первым ходит игрок с крестиками. |