Метод createElement
Метод createElement позволяет создать новый элемент, передав в параметре имя тега. После создания с элементом можно работать как с обычным элементом, а также его можно добавить на страницу методами prepend , append , appendChild , insertBefore или insertAdjacentElement .
Если записать результат работы createElement в переменную, то в этой переменной будет такой элемент, как будто бы мы получили его через querySelector или getElementById . Единственное отличие — наш элемент не будет размещен на странице. А так мы можем менять ему innerHTML, атрибуты, навешивать обработчики событий и в конце концов разместить его на странице.
Синтаксис
document.createElement(‘имя тега’);
Пример
Давайте создадим абзац, установим ему текст и поместим на страницу в конец блока #parent :
let parent = document.querySelector(‘#parent’); let p = document.createElement(‘p’); p.textContent = ‘!’; parent.appendChild(p);
Результат выполнения кода:
Пример
Дан ul . Давайте разместим в нем 9 тегов li , при этом их текстом сделаем порядковые номера:
let parent = document.querySelector(‘#parent’); for (let i = 1; i
Результат выполнения кода:
Пример
Давайте при вставке элементов будем привязывать к ним обработчики событий:
let parent = document.querySelector(‘#parent’); for (let i = 1; i ); parent.appendChild(li); >;
Смотрите также
- метод cloneNode ,
с помощью которого можно клонировать элемент
- метод createTextNode ,
с помощью которого можно создать новый текстовый узел
Как добавить элемент в html через js
Добавить элемент в html через js можно с помощью метода document.createElement() . Предположим, что у нас есть следующий html документ:
class="container">
Внутрь данного контейнера мы хотим поместить заголовок первого уровня красного цвета с надписью Hello, World!
// получаем контейнер const container = document.querySelector('.container'); // создаем новый элемент - заголовок первого уровня const h1 = document.createElement('h1'); // добавляем класс .red, в котором указан нужный нам цвет текста h1.classList.add('red'); // добавляем нужный текст h1.textContent = 'Hello, World!'; // кладем заголовок в контейнер container.append(h1);
Как создать элемент html с помощью js
JavaScript предоставляет ряд методов для управления элементами на веб-страницы. В частности, мы можем создавать и добавлять новые элементы или заменять и удалять уже имеющиеся. Рассмотрим эти методы.
Создание элементов
Для создания элементов объект document имеет следующие методы:
- createElement(elementName) : создает элемент html, тег которого передается в качестве параметра. Возвращает созданный элемент
- createTextNode(text) : создает и возвращает текстовый узел. В качестве параметра передается текст узла.
Создадим элемент с помощью createElement :
const header = document.createElement("h1"); // создаем заголовок console.log(header); //
Таким образом, переменная header будет хранить ссылку на элемент h1 .
Создадим текстовый узел с помощью createTextNode :
const headerText = document.createTextNode("Hello World"); // создаем текстовый узел console.log( headerText); // "Hello World"
Добавление элементов
Однако одного создания элементов недостаточно, их еще надо добавить на веб-страницу.
Для добавления элементов мы можем использовать один из методов объекта Node:
- appendChild(newNode) : добавляет новый узел newNode в конец коллекции дочерних узлов
- insertBefore(newNode, referenceNode) : добавляет новый узел newNode перед узлом referenceNode
appendChild
Используем метод appendChild() :
const header = document.createElement("h1"); // создаем заголовок const headerText = document.createTextNode("Hello World"); // создаем текстовый узел header.appendChild( headerText); // добавляем в элемент h1 текстовый узел console.log(header); // Hello World
И чтобы добавить созданный элемент на страницу, его надо добавить в уже имеющийся на странице элемент:
METANIT.COM
Сначала создаем обычный элемент заголовка h2 и текстовый узел. Затем текстовый узел добавляем в элемент заголовка. Затем заголовок добавляем в элемент body :

Стоит отметить, что нам необязательно для определения текста внутри элемента создавать дополнительный текстовый узел, так как мы можем воспользоваться свойством textContent и напрямую ему присвоить текст:
const header = document.createElement("h1"); // создаем заголовок header.textContent = "Hello World"; // определяем текст элемента
В этом случае текстовый узел будет создан неявно при установке текста.
insertBefore
Метод appendChild() добавляет элемент в конец контейнера. Чтобы более конкретизировать место для добавления, можно использовать другой метод — insertBefore() , который добавляет один элемент перед другим элементом. Например, у нас есть следующая страница:
METANIT.COM Text 1
Text 2
Допустим, нам надо добавить в элемент body перед первым параграфом заголовок. Мы можем сделать это так:
METANIT.COM Text 1
Text 2

Если нам надо вставить новый узел на второе, третье или любое другое место, то нам надо найти узел, перед которым надо вставлять, с помощью комбинаций свойств firstElementChild/lastElementChild и nextSibling/previousSibling.
Копирование элемента
Иногда элементы бывают довольно сложными по составу, и гораздо проще их скопировать, чем с помощью отдельных вызовов создавать из содержимое. Для копирования уже имеющихся узлов у объекта Node можно использовать метод cloneNode() :
METANIT.COM
В метод cloneNode() в качестве параметра передается логическое значение: если передается true, то элемент будет копироваться со всеми дочерними узлами; если передается false — то копируется без дочерних узлов. То есть в данном случае мы копируем узел со всем его содержимым и потом добавляем в конец элемента c .

Замена элемента
Для замены элемента применяется метод replaceChild(newNode, oldNode) объекта Node. Этот метод в качестве первого параметра принимает новый элемент, который заменяет старый элемент oldNode, передаваемый в качестве второго параметра.
METANIT.COM
В данном случае заменяем первый элемент — первый параграф заголовком h2:

Удаление элемента
Для удаления элемента вызывается метод removeChild() объекта Node. Этот метод удаляет один из дочерних узлов:
METANIT.COM
В данном случае удаляется первый параграф из блока div
Удаление всех элементов
Иногда возникает необходимость удалить все элементы. Для этого перебираем все элементы контейнера и удаляем их:
const article = document.getElementById(«article»); while(article.firstChild)
document.createElement
В HTML-документах создаёт элемент c тем тегом, что указан в аргументе или HTMLUnknownElement , если имя тега не распознаётся.
В XUL-документах создаёт указанный в аргументе элемент XUL.
В остальных случаях создаёт элемент с нулевым NamespaceURI.
Параметры
var element = document.createElement(tagName, [options]);
- element — созданный объект элемента.
- tagName — строка, указывающая элемент какого типа должен быть создан. nodeName создаётся и инициализируется со значением tagName .
- options — необязательный параметр, объект ElementCreationOptions , который может содержать только поле is , указывающее имя пользовательского элемента, созданного с помощью customElements.define() (см. Веб-компоненты).
Пример
Данный пример создаёт новый элемент и вставляет его перед элементом с идентификатором org_div1 :
div>h1>Привет!h1>div> div id="org_div1">Текст выше сгенерирован автоматически.div>
.body.onload = addElement; var my_div = (newDiv = null); function addElement() // Создаём новый элемент div // и добавляем в него немного контента var newDiv = document.createElement("div"); newDiv.innerHTML = "Привет!
"; // Добавляем только что созданный элемент в дерево DOM my_div = document.getElementById("org_div1"); document.body.insertBefore(newDiv, my_div); >
Примечания
Если существуют атрибуты со значениями по умолчанию, атрибуты узлов предоставляющие их создаются автоматически и применяются к элементу.
Для создания элементов с заданным пространством имён используйте метод createElementNS.
Реализация createElement в Gecko не соответствует DOM спецификации для XUL и XHTML документов: localName и namespaceURI не устанавливаются в null в созданном документе. Смотрите Firefox bug 280692 для подробностей.
Для обратной совместимости с предыдущими версиями спецификации пользовательских элементов некоторые браузеры позволяют передавать здесь строку вместо объекта, где значением строки является имя тега пользовательского элемента.
Спецификации
| Specification |
DOM Standard # ref-for-dom-document-createelement① |
Совместимость с браузерами
BCD tables only load in the browser
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 27 нояб. 2023 г. by MDN contributors.
Your blueprint for a better internet.