Об'єкт document
Об'єкт document у JavaScript це основна точка доступу до DOM (Document Object Model): він представляє всю HTML-сторінку, завантажену в браузері, і дає змогу читати, змінювати та керувати її вмістом з коду. Браузер створює цей об'єкт автоматично, і саме він відповідає кореневому вузлу DOM-дерева.
Теорія
TL;DR
documentце глобальний об'єкт, який браузер створює автоматично при завантаженні сторінки.- Він представляє документ цілком і є коренем DOM-дерева.
- Через нього шукають, створюють, змінюють і видаляють вузли, а також слухають події.
- Ключові властивості:
documentElement,head,body,title,URL,cookie,forms. - Ключові методи:
querySelector,querySelectorAll,getElementById,createElement,appendChild,addEventListener. documentлежить усерединіwindow:window.document === document.
Швидкий приклад
Якщо HTML виглядає так:
<!DOCTYPE html>
<html>
<body>
<h1>Привіт, світ!</h1>
</body>
</html>то в пам'яті браузера створюється DOM-структура, а document це об'єкт, через який до неї можна звернутися:
console.log(document.title); // prints the page title
console.log(document.body); // <body>...</body>
console.log(document.URL); // the page address
console.log(document.getElementById); // the function that looks elements upЩо дає document
document це головний інтерфейс для роботи з усією сторінкою. Через нього можна:
- шукати елементи (
getElementById,querySelector,getElementsByClassName); - змінювати їхній вміст (
textContent,innerHTML); - створювати нові вузли (
createElement); - видаляти або переміщати елементи (
remove,appendChild); - реагувати на події (
addEventListener); - працювати з атрибутами, стилями і класами.
Приклади використання
Отримати елемент:
const heading = document.querySelector('h1');
console.log(heading.textContent); // "Привіт, світ!"Змінити текст:
heading.textContent = 'Вітаю!';Створити і додати елемент:
const p = document.createElement('p');
p.textContent = 'Це новий абзац';
document.body.appendChild(p);Змінити стиль:
heading.style.color = 'red';Повісити обробник події:
document.querySelector('button').addEventListener('click', () => {
alert('Кнопку натиснуто!');
});Основні властивості об'єкта document
| Властивість | Що робить |
|---|---|
document.documentElement | <html>, кореневий елемент |
document.head | <head> |
document.body | <body> |
document.title | Заголовок сторінки |
document.URL | Поточний URL |
document.cookie | Доступ до cookie |
document.forms | Усі форми на сторінці |
document.images | Усі зображення |
document.links | Усі посилання (<a>) |
Основні методи document
| Метод | Опис |
|---|---|
getElementById(id) | Знайти елемент за ID |
getElementsByClassName(name) | Усі елементи з класом |
getElementsByTagName(name) | Усі елементи з тегом |
querySelector(selector) | Перший елемент за CSS-селектором |
querySelectorAll(selector) | Усі елементи за CSS-селектором |
createElement(tag) | Створити елемент |
createTextNode(text) | Створити текстовий вузол |
append() / appendChild() | Додати елемент |
remove() | Видалити елемент |
addEventListener(event, fn) | Слухати події |
Зв'язок із window
Об'єкт document міститься всередині глобального об'єкта window:
console.log(window.document === document); // truewindowце все вікно браузера: вкладка,localStorage, історія, таймери і таке інше.documentце лише вміст поточної сторінки.
Коротко:
| Питання | Відповідь |
|---|---|
| Що це таке | Об'єкт, що представляє HTML-документ |
| Де створюється | Автоматично при завантаженні сторінки |
| Що робить | Дає керування DOM |
| Кому належить | window.document |
| Основні методи | querySelector, createElement, appendChild, addEventListener |
Типові помилки
- Плутати
documentіwindow.windowце все вікно і глобальна область видимості,documentце лише документ у ньому. - Звертатися до
document.bodyзі скрипта в<head>безdefer. На той моментbodyще не розібрано, і ви отримаєтеnull. - Вважати, що
document.getElementsByClassNameповертає масив. Це «жива» HTMLCollection: методів масиву в неї немає, а її вміст змінюється разом із DOM.querySelectorAllповертає статичний NodeList. - Використовувати
document.writeпісля завантаження сторінки. Виклик перезапише весь документ, це застарілий API. - Думати, що
documentдоступний будь-де. У Node.js і всередині Web Worker чи Service Worker його немає, там треба перевірку середовища. - Вставляти користувацький текст через
innerHTML. Це відкриває XSS, для тексту єtextContent.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.