Доступ к DOM-элементам

Основы фронтенд разработки

Доступ к DOM-элементам

Продолжительность: 20 мин

В прошлом уроке мы познакомились с объектом document. Теперь разберёмся, как именно через него получить доступ к конкретным элементам страницы.

Что такое DOM

DOM (Document Object Model) — это программное представление HTML-документа. Браузер читает HTML и строит из него дерево объектов, где каждый тег превращается в узел (node). Именно с этим деревом и работает JavaScript.

Возьмём простой HTML:

<body> <header> <h1>Санкт-Петербург</h1> </header> <main> <p class="description">Культурная столица России.</p> </main> </body>
html

Браузер строит из него такое дерево:

body
├── header
│   └── h1 — «Санкт-Петербург»
└── main
    └── p.description — «Культурная столица России.»

Каждый узел этого дерева — полноценный JavaScript-объект со своими свойствами и методами. Получив такой объект, мы можем читать его содержимое, менять стили, удалять его или добавлять внутрь новые элементы.

Поиск элементов

document предоставляет несколько методов для поиска элементов в DOM-дереве.

document.getElementById

Возвращает элемент по его уникальному id. Если элемента с таким id нет — вернёт null:

const header = document.getElementById('main-header'); console.log(header); // <header id="main-header">...</header>
js

document.getElementsByClassName

Возвращает коллекцию всех элементов с указанным классом. Это не массив, а HTMLCollection — похожий объект, но без методов map, filter и т.д.:

const cards = document.getElementsByClassName('card'); console.log(cards.length); // количество найденных элементов
js

document.querySelector

Возвращает первый элемент, соответствующий CSS-селектору. Это самый гибкий метод — в качестве аргумента принимает любой валидный CSS-селектор:

const title = document.querySelector('h1'); const firstCard = document.querySelector('.card'); const featuredCard = document.querySelector('.card.featured'); const navLink = document.querySelector('nav a');
js

Если ничего не нашлось — вернёт null. Это важно помнить: попытка обратиться к свойствам null приведёт к ошибке.

document.querySelectorAll

Возвращает все элементы, соответствующие CSS-селектору, в виде NodeList. В отличие от HTMLCollection, NodeList поддерживает forEach:

const allCards = document.querySelectorAll('.card'); allCards.forEach((card) => { console.log(card); });
js

Если нужны map или filter — преобразуйте в массив через Array.from:

const cardsArray = Array.from(document.querySelectorAll('.card')); const texts = cardsArray.map((card) => card.textContent);
js

Какой метод выбрать

На практике чаще всего используют querySelector и querySelectorAll — они гибкие и принимают любые CSS-селекторы. getElementById тоже встречается часто: он чуть быстрее по производительности и явно показывает, что ищем по уникальному идентификатору.

// Современный подход const hero = document.querySelector('#hero'); const cards = document.querySelectorAll('.attractions .card');
js

Поиск внутри элемента

Методы querySelector и querySelectorAll можно вызывать не только на document, но и на любом найденном элементе. В таком случае поиск ведётся только внутри него:

const section = document.querySelector('.features'); const title = section.querySelector('h2'); // ищет h2 только внутри .features
js

Это удобно и делает код более надёжным — вы точно знаете, в каком контексте ищете.

Навигация по DOM-дереву

Иногда удобнее не искать элемент с нуля, а перейти к нему от уже найденного. Для этого у каждого DOM-узла есть несколько свойств:

const item = document.querySelector('.feature'); item.parentElement; // родительский элемент item.children; // дочерние элементы (только элементы, не текстовые узлы) item.firstElementChild; // первый дочерний элемент item.lastElementChild; // последний дочерний элемент item.nextElementSibling; // следующий сосед на том же уровне item.previousElementSibling; // предыдущий сосед
js

В следующем уроке научимся изменять найденные элементы — менять текст, стили, классы и атрибуты.

Это платный урок

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

Основы фронтенд разработки

Полный курс по основам веб-разработки с нуля: HTML, CSS и JavaScript. Вы сверстаете адаптивный лендинг, освоите анимации и работу с DOM, а в финале соберёте самостоятельный проект — интерактивный путеводитель по Санкт-Петербургу.

4990 Скидка 20%
3990

Безопасные платежи обрабатываются сервисом Юкасса

Комментарии

Войдите, чтобы оставить комментарий