Front-end course

DOM манипуляции

Работа с DOM

С помощью JS мы можем манипулировать элементами, создавать их, менять, удалять и т.д.

Создание элементов

Создать элемент можно воспользовавшись методом объекта document.createElement();

let el = document.createElement('div');

Создать текстовый узел можно воспользовавшись методом объекта document.createTextNode();

let textNode = document.createTextNode('hello');

Можно также создать элементы передавая в уже существующий элемент разметку

Вопрос только в производительности!!

el.innerHTML = '<p>Hello World!</p>';

Замена элементов

Замена одного элемента другим с помощью метода DOM replaceChild():

// выбираем элемент который будет заменен
let el = document.querySelector('div');

// создаем новый элемент
let newEl = document.createElement('p');
newEl.innerHTML = '<b>Hello World!</b>';

// заменяем
el.parentNode.replaceChild(newEl, el);

Удаление элемента

Удаление всех дочерних узлов элемента из DOM.

Используя свойство innerHTML элемента для удаления всех дочерних элементов и, таким образом, для очистки его содержимого

let el = document.querySelector('div');
el.innerHTML = '';

Обработчики событий, связанные с любой частью содержимого элемента также уничтожаются

Удалить элемент из дерева DOM.

Кросс-браузерное безопасное удаление элемента из дерева DOM

let el = document.querySelector('div');
el.parentNode.removeChild(el);

Клонирование элемента

Создание глубокой копии элемента DOM.

let el = document.querySelector('div');

let foo = el.cloneNode(true);

cloneNode(true) создает глубокую копию выбранного элемента DOM, включая атрибуты и дочерние элементы. Чтобы клонировать только узел и его атрибуты, передайте false в качестве аргумента cloneNode().

Добавление элемента

Используя свойство innerHTML элемента можно получить или изменить его содержимое

let el = document.querySelector('div');

// добавление контента в элемент
el.innerHTML += '<p>Hello World!</p>';

el.innerHTML = '<p>Hello World!</p>' + el.innerHTML;

innerHTML - это, по сути, содержимое элемента в виде строки. Однако будьте осторожны: изменение innerHTML уничтожит и перестроит все элементы-потомки контейнера. Обработчики событий, связанные с любым из уничтоженных элементов, теряются в процессе, и при необходимости их необходимо подключать заново.

Кроме того, можно использовать методы DOM для создания, вставки и перемещения элементов:

let el = document.querySelector('div');

// создаем p элемент для в вставки
let newEl = document.createElement('p');

// добавляем текстовый узел для p
newEl.appendChild(document.createTextNode('Hello World!'));

// добавление p как новый дочерний элемент el
el.appendChild(newEl);

// тот же результат с insertBefore()
el.insertBefore(newEl, null);

Получение

Получение текстового содержимого элемента

Получение текстового содержимого элемента, или установка текстового содержимого элемента.

let el = document.querySelector('div');

text = el.textContent || el.innerText;

console.log(text);

Получение родителя элемента

let el = document.querySelector('div');
let parent = el.parentNode;

Получение определенного родителя

let el = document.querySelector('span');
console.log(el.closest('div'));

Получение дочернего элемента

let firstChild = el.firstChild;
let lastChild = el.lastChild;

Классы

Получение списка классов

let el = document.querySelector("div");

el.classList;

Работа с классами

let el = document.querySelector("div");

// Добавление
el.classList.add("test-class");

// Удаление
el.classList.remove("test-class");

// Замена класса
el.classList.replace("test-class", "new-class");

// Перебор классов
el.classList.forEach((item, i, arr) => {});

// Проверка наличия класса
el.classList.contains("new");

Атрибуты

getAttribute, setAttribute, removeAttribute - изменяют атрибуты, такие как id, alt, title и другие.

// получение атрибута title
let el = document.querySelector('img');
console.log(el.getAttribute('title'));

// установка атрибута
let el = document.querySelector('img');
el.setAttribute('alt', 'Hello World!');

// удаление атрибута
el.removeAttribute('alt');

Стили

Элементы содержат объект style, обращаясь к ключам которого, можно добавлять, удалять, изменять стили

let el = document.querySelector('div');

el.style.backgroundColor = 'green';
el.style.display = 'none';
el.style['border-radius'] = '5px';

Материалы для прочтения


Written by Vadim Goloviychuk