Введение
JavaScript — это важный язык программирования, который позволяет разработчикам создавать динамические и интерактивные веб-страницы. DOM (объектная модель документа) — ключевая функция JavaScript, позволяющая разработчикам эффективно манипулировать веб-страницами и взаимодействовать с ними.
В этом сообщении блога мы рассмотрим различные аспекты манипулирования DOM, такие как выбор и изменение элементов в документе, создание и удаление элементов, управление стилями элементов и обработка событий.
Что такое ДОМ?
Объектная модель документа (DOM) — это интерфейс программирования, который позволяет нам выбирать и изменять элементы, создавать и удалять элементы и управлять стилями элементов в документе.
DOM представляет структуру HTML-документа в виде древовидной структуры. Документ является корнем дерева и содержит один дочерний узел, который является элементом <html>
. Внутри элемента <html>
есть два дочерних элемента: элементы <head>
и <body>
. Элементы <head>
и <body>
содержат своих дочерних элементов.
Выбор элементов в документе
DOM предоставляет следующие методы для выбора элементов.
getElementById()
выбирает элемент по его уникальному идентификатору.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <p id="paragraph">This is paragraph.</p> </body> </html>
Вот код JavaScript:
const paragraph = document.getElementById("paragraph"); console.log(paragraph);
Вывод будет таким, как показано ниже:
getElementsByClassName()
выбирает элементы по имени их класса.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <h1 class="text">This is heading.</h1> <p class="text">This is paragraph.</p> </body> </html>
Вот код JavaScript:
const text = document.getElementsByClassName("text"); console.log(text);
Вывод будет таким, как показано ниже:
getElementsByTagName()
выбирает элементы по имени их тега.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <p>This is paragraph.</p> </body> </html>
Вот код JavaScript:
const paragraph = document.getElementsByTagName("p"); console.log(paragraph);
Вывод будет таким, как показано ниже:
querySelector()
выбирает первый элемент, соответствующий указанному селектору CSS.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <header> <h1 class="heading1">This is first heading.</h1> <h2 id="heading2">This is second heading.</h2> </header> </body> </html>
Вот код JavaScript:
const header = document.querySelector("header"); const heading1 = document.querySelector(".heading1"); const heading2 = document.querySelector("#heading2"); console.log(header); console.log(heading1); console.log(heading2);
Вывод будет таким, как показано ниже:
querySelectorAll()
выбирает все элементы, соответствующие указанному селектору CSS.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <h1 class="text">This is first heading.</h1> <h2 class="text">This is second heading.</h2> </body> </html>
Вот код JavaScript:
const text = document.querySelectorAll(".text"); console.log(text);
Вывод будет таким, как показано ниже:
Изменение атрибутов выбранных элементов
DOM предоставляет следующие методы для изменения атрибутов выбранных элементов.
getAttribute()
возвращает значение указанного атрибута.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <h1 class="heading">This is heading.</h1> <img src="image.jpg" > </body> </html>
Код JavaScript:
const heading = document.querySelector(".heading") const img = document.querySelector("img"); const className = heading.getAttribute("class"); const imgSrc = img.getAttribute("src"); console.log(className); console.log(imgSrc);
Выход:
hasAttribute()
возвращает истину или ложь.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <h1>This is heading.</h1> <img src="image.jpg" > </body> </html>
Код JavaScript:
const heading = document.querySelector("h1") const img = document.querySelector("img"); const className = heading.hasAttribute("class"); const imgSrc = img.hasAttribute("src"); console.log(className); console.log(imgSrc);
Выход:
setAttribute()
устанавливает значение указанного атрибута.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <img src="image.jpg" > </body> </html>
Код JavaScript:
const img = document.querySelector("img"); //syntax for setAttribute: //setAttribute(name,value); const imgAlt = img.setAttribute("alt","picture"); const altText = img.getAttribute("alt"); console.log(altText);
Выход:
removeAttribute()
удаляет указанный атрибут.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <img src="image.jpg" alt="picture"> </body> </html>
Код JavaScript:
const img = document.querySelector("img"); const removeAlt = img.removeAttribute("alt"); const altText = img.getAttribute("alt"); console.log(altText);
Выход:
Изменение классов выбранных элементов
DOM предоставляет следующие методы для изменения классов выбранных элементов.
classList.add()
добавляет класс.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div>Div</div> <!-- No class present here --> </body> </html>
Код JavaScript:
const div = document.querySelector("div"); div.classList.add("active"); //Adds 'active' class console.log(div);
Выход:
classList.toggle()
включает или выключает класс.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div>Div</div> </body> </html>
Код JavaScript:
const div = document.querySelector("div"); console.log(div);
Выход:
classList.contains()
проверяет, существует ли значение класса.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div>Div</div> </body> </html>
Код JavaScript:
const div = document.querySelector("div"); const containClass = div.classList.contains("active"); console.log(containClass);
Выход:
classList.replace()
заменить существующее значение класса новым значением класса.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div class="active">Div</div> </body> </html>
Код JavaScript:
const div = document.querySelector("div"); const replaceClass = div.classList.replace("active","hidden"); console.log(div);
Выход:
classList.remove()
удалить значение класса.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div class="active box">Div</div> <!-- two classes present here --> </body> </html>
Код JavaScript:
const div = document.querySelector("div"); const removeClass = div.classList.remove("box"); //removes the 'box' class console.log(div);
Выход:
Добавление новых элементов
Вот основная структура HTML-документа.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <h1>Hello World!</h1> </body> </html>
createElement()
method создает новый элемент, указанный именем тега.
const newElement = document.createElement('div');
Метод appendChild()
добавляет в документ только что созданный элемент.
const newElement = document.createElement('div'); document.body.appendChild(newElement);
Свойство innerHTML
устанавливает HTML-содержимое элемента.
const newElement = document.createElement('div'); document.body.appendChild(newElement); newElement.innerHTML = '<h1>This is newly created div heading.</h1>';
Давайте создадим еще один элемент в документе.
const newElement2 = document.createElement('p');
Теперь добавьте этот элемент в div перед созданием.
newElement.appendChild(newElement2);
Свойство textContent
используется для добавления текста к элементу.
newElement2.textContent = 'This is second created element.';
Собираем все вместе:
const newElement = document.createElement('div'); document.body.appendChild(newElement); newElement.innerHTML = '<h1>This is newly created div heading.</h1>'; const newElement2 = document.createElement('p'); newElement.appendChild(newElement2); newElement2.textContent = 'This is second created element.';
Это будет вывод:
Удаление элементов
Вот основная структура HTML-документа.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <h1>Hello World!</h1> <div> <h2>This is heading inside div.</h2> <p>This is paragraph inside div.</p> </div> </body> </html>
Метод remove()
полностью удаляет элемент из DOM.
const element = document.querySelector("h2"); element.remove();
Метод removeChild()
удаляет дочерний элемент из его родительского элемента.
const parentElement = document.querySelector("div"); const childElement = document.querySelector("p"); parentElement.removeChild(childElement);
Управление стилями элементов
Вы можете изменить стиль любого элемента, используя свойство style
.
Вот основная структура HTML-документа.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <h1>Hello World!</h1> <button>Click me!</button> </body> </html>
Код JavaScript:
const heading = document.querySelector("h1"); heading.style.color = "red"; //This will change the color from black to red.
Выход:
Код JavaScript:
const button = document.querySelector("button"); button.style.backgroundColor = "green"; button.style.color = "white";
Выход:
Точно так же вы можете изменить другие стили элементов, используя свойство стиля.
При изменении стиля элементов с помощью DOM всегда помните, что имена свойств следует использовать в верхнем регистре. Например, вместо «размер шрифта» используйте «размер шрифта», а вместо «цвет фона» используйте «цвет фона».
Обработка событий
Вот основная структура HTML-документа.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <button class="button">Click me!</button> </body> </html>
Получите кнопку методом querySelector()
(вы можете использовать любой метод на ваш выбор).
const button = document.querySelector(".button");
Метод addEventListener()
используется для присоединения функции обработчика событий к элементу HTML.
Метод addEventListener()
принимает тип события и функцию.
const button = document.querySelector(".button"); button.addEventListener("click", () => { alert("I'm clicked!"); });
Вот еще один пример:
const button = document.querySelector(".button"); button.addEventListener("mouseover", () => { button.style.color = "red"; //This will change the color of the text on mouse over });
Заключение
Объектная модель документа (DOM) — ключевая функция JavaScript, позволяющая разработчикам эффективно манипулировать веб-страницами и взаимодействовать с ними. Манипулирование DOM имеет различные аспекты, такие как выбор и изменение элементов в документе, создание и удаление элементов, управление стилями элементов и обработка событий.
Вы можете выбрать элементы, используя методы getElementById()
, getElementsByClassName()
, getElementsByTagName()
, querySelector()
и querySelectorAll()
.
Для изменения атрибутов выбранных элементов вы можете использовать методы getAttribute()
, hasAttribute()
, setAttribute()
и removeAttribute()
.
Чтобы изменить классы выбранных элементов, вы можете использовать методы classList.add()
, classList.toggle()
, classList.contains()
, classList.replace()
и classList.remove()
.
Вы можете создавать новые элементы с помощью метода createElement()
и добавлять их в документ с помощью метода appendChild()
.
Чтобы удалить элементы, вы можете использовать метод remove()
и метод removeChild()
.
Чтобы изменить стиль любого элемента, используйте свойство style
.
Вы можете обрабатывать события, используя метод addEventListener()
.
Продолжайте кодировать!!
Чтобы получить больше контента, подобного этому, нажмите здесь!