Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
metodi_js_dlja_roboti_z_dom [2023/11/26 10:16] tro |
metodi_js_dlja_roboti_z_dom [2023/12/28 19:32] (текущий) tro [removeEventListener] |
||
|---|---|---|---|
| Строка 4: | Строка 4: | ||
| < | < | ||
| const categoriesList = document.getElementById(' | const categoriesList = document.getElementById(' | ||
| + | </ | ||
| + | ===== querySelectorAll ===== | ||
| + | Метод querySelectorAll() Document повертає статичний (не динамічний) NodeList, що містить усі знайдені елементи документа, | ||
| + | < | ||
| + | const categoriesList = document.getElementById(' | ||
| + | const categoryItems = categoriesList.querySelectorAll(' | ||
| + | console.log(`Number of categories: ${categoryItems.length}`); | ||
| </ | </ | ||
| ===== element.querySelector===== | ===== element.querySelector===== | ||
| Строка 86: | Строка 93: | ||
| містить псевдомасив, | містить псевдомасив, | ||
| ===== elem.firstChild ===== | ===== elem.firstChild ===== | ||
| - | містить посилання на перший дочірній вузол (вузол-елемент або текстовий вузол) вузла elem | + | містить посилання на перший дочірній вузол (вузол-елемент або текстовий вузол) вузла elem. |
| + | УВАГА - першим майже завжди буде текстовим вузлом бо між тегами є пробіл та перенос строки. | ||
| ===== elem.firstElementChild ===== | ===== elem.firstElementChild ===== | ||
| містить посилання на перший дочірній вузол-елемент усередині elem, тобто той, що відповідає тегу | містить посилання на перший дочірній вузол-елемент усередині elem, тобто той, що відповідає тегу | ||
| Строка 109: | Строка 117: | ||
| </ | </ | ||
| ==== dataset ==== | ==== dataset ==== | ||
| - | Для отримання значення data-атрибута використовується властивість dataset, після якої через крапку пишеться ім' | + | **Зберігає користувацькі дата-атрибути**. Зручніше працювати через **dataset**. |
| < | < | ||
| const saveBtn = document.querySelector(' | const saveBtn = document.querySelector(' | ||
| Строка 120: | Строка 128: | ||
| Для видалення data-атрибута | Для видалення data-атрибута | ||
| ===== Створення елементів у DOM ===== | ===== Створення елементів у DOM ===== | ||
| + | ==== createDocumentFragment ==== | ||
| + | Створює новий порожній DocumentFragment, | ||
| + | < | ||
| + | const fragment = document.createDocumentFragment(); | ||
| + | </ | ||
| + | |||
| ==== createElement ==== | ==== createElement ==== | ||
| створює елемент з ім' | створює елемент з ім' | ||
| Строка 147: | Строка 161: | ||
| ==== Читання innerHTML ==== | ==== Читання innerHTML ==== | ||
| Властивість innerHTML зберігає вміст елемента, | Властивість innerHTML зберігає вміст елемента, | ||
| + | Він затира структуру що була і заміняє собою нову | ||
| < | < | ||
| - | const link = document.querySelector(" | + | const = '< |
| - | console.log(link.innerHTML); | + | const myNewHtml |
| + | link.innerHTML(myNewHtml); | ||
| </ | </ | ||
| ==== Зміна innerHTML ==== | ==== Зміна innerHTML ==== | ||
| Строка 174: | Строка 190: | ||
| * **handler** — колбек-функція, | * **handler** — колбек-функція, | ||
| * **options** — необов' | * **options** — необов' | ||
| + | < | ||
| + | const myBtn = doucument.querySelector(' | ||
| + | myBtn.addEventListener(' | ||
| + | |||
| + | function onButtonClick (){ | ||
| + | console.log(' | ||
| + | } | ||
| + | </ | ||
| + | або | ||
| < | < | ||
| const button = document.querySelector(" | const button = document.querySelector(" | ||
| Строка 195: | Строка 220: | ||
| видаляє слухача події з елемента. | видаляє слухача події з елемента. | ||
| < | < | ||
| - | element.removeEventListener(event, | + | element.removeEventListener(event, |
| + | </ | ||
| + | |||
| + | < | ||
| + | element.removeEventListener(' | ||
| </ | </ | ||
| ====== Об' | ====== Об' | ||
| Строка 236: | Строка 265: | ||
| </ | </ | ||
| ====== Події елементів форм ====== | ====== Події елементів форм ====== | ||
| + | ===== reset ===== | ||
| + | Очистка данних полів на формі | ||
| + | < | ||
| + | const registerForm = document.querySelector(" | ||
| + | registerForm.reset(); | ||
| + | </ | ||
| ===== submit ===== | ===== submit ===== | ||
| Відправлення форми відбувається: | Відправлення форми відбувається: | ||
| * при кліку на кнопку з атрибутом type=" | * при кліку на кнопку з атрибутом type=" | ||
| * Або при натисканні клавіші Enter під час перебування в будь-якому її текстовому полі форми | * Або при натисканні клавіші Enter під час перебування в будь-якому її текстовому полі форми | ||
| + | |||
| + | < | ||
| + | const form = document.querySelector(" | ||
| + | |||
| + | form.addEventListener(" | ||
| + | |||
| + | function handleSubmit(event) { | ||
| + | event.preventDefault(); | ||
| + | console.log(event.elements.email.value); | ||
| + | . | ||
| + | . | ||
| + | . | ||
| + | } | ||
| + | | ||
| + | | ||
| + | |||
| + | </ | ||
| + | або | ||
| < | < | ||
| const form = document.querySelector(" | const form = document.querySelector(" | ||
| Строка 247: | Строка 300: | ||
| }); | }); | ||
| </ | </ | ||
| + | або | ||
| + | < | ||
| + | const registerForm = document.querySelector(" | ||
| + | |||
| + | registerForm.addEventListener(" | ||
| + | |||
| + | function handleSubmit(event) { | ||
| + | event.preventDefault(); | ||
| + | cont form = event.target; | ||
| + | const login = form.elements.login.value; | ||
| + | const password = form.elements.password.value; | ||
| + | | ||
| + | if (login === "" | ||
| + | return console.log(" | ||
| + | } | ||
| + | </ | ||
| + | **event.preventDefault()** - відключення подіій браузер за замовченням. Наприклад перезавантаження сторінки при події submit | ||
| ===== preventDefault ===== | ===== preventDefault ===== | ||
| Для скасування дії браузера за замовчуванням в об' | Для скасування дії браузера за замовчуванням в об' | ||
| Строка 257: | Строка 327: | ||
| </ | </ | ||
| ===== change ===== | ===== change ===== | ||
| - | Подія відбувається після зміни значення елемента форми | + | Подія відбувається після зміни значення елемента форми |
| ===== input ===== | ===== input ===== | ||
| Подія input відбувається тільки на текстових полях і textarea. | Подія input відбувається тільки на текстових полях і textarea. | ||
| Строка 295: | Строка 365: | ||
| </ | </ | ||
| Поточний елемент, | Поточний елемент, | ||
| + | ===== stopPropagation ===== | ||
| + | Так як подія від дочерного обїекта сплаивє до батьківського і може бути перехоплена дсь " | ||
| + | * Зупиняє " | ||
| + | * Не заважає іншим обробникам подій виконуватися на тому ж самому елементі. | ||
| + | < | ||
| + | const descendant = document.querySelector("# | ||
| + | descendant.addEventListener(" | ||
| + | event.stopPropagation(); | ||
| + | alert(" | ||
| + | }); | ||
| + | </ | ||
| + | ===== stopImmediatePropagation() ===== | ||
| + | * Зупиняє " | ||
| + | * Також зупиняє виконання всіх інших обробників подій, які слухають цю ж подію на даному елементі, | ||
| + | |||
| + | ===== nodeName (перевірка відповідности типу єлементу) ===== | ||
| + | < | ||
| + | function selectColor(event) { | ||
| + | if (event.target.nodeName !== " | ||
| + | return; // користувач клікнув між кнопками | ||
| + | } | ||
| + | |||
| + | const selectedColor = event.target.dataset.color; | ||
| + | } | ||
| + | </ | ||
| + | |||