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';Материалы для прочтения
- Document https://learn.javascript.ru/document