Как создать элемент html с помощью js
Перейти к содержимому

Как создать элемент html с помощью js

  • автор:

Метод createElement

Метод createElement позволяет создать новый элемент, передав в параметре имя тега. После создания с элементом можно работать как с обычным элементом, а также его можно добавить на страницу методами prepend , append , appendChild , insertBefore или insertAdjacentElement .

Если записать результат работы createElement в переменную, то в этой переменной будет такой элемент, как будто бы мы получили его через querySelector или getElementById . Единственное отличие — наш элемент не будет размещен на странице. А так мы можем менять ему innerHTML, атрибуты, навешивать обработчики событий и в конце концов разместить его на странице.

Синтаксис

document.createElement(‘имя тега’);

Пример

Давайте создадим абзац, установим ему текст и поместим на страницу в конец блока #parent :

1

2

3

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 :

Добавление элемента на веб-страницу в JavaScript

Стоит отметить, что нам необязательно для определения текста внутри элемента создавать дополнительный текстовый узел, так как мы можем воспользоваться свойством 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

Добавление элемента на веб-страницу в JavaScript с помощью метода insertBefore

Если нам надо вставить новый узел на второе, третье или любое другое место, то нам надо найти узел, перед которым надо вставлять, с помощью комбинаций свойств firstElementChild/lastElementChild и nextSibling/previousSibling.

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

Иногда элементы бывают довольно сложными по составу, и гораздо проще их скопировать, чем с помощью отдельных вызовов создавать из содержимое. Для копирования уже имеющихся узлов у объекта Node можно использовать метод cloneNode() :

    METANIT.COM   

Home Page

Text 1

Text 2

В метод cloneNode() в качестве параметра передается логическое значение: если передается true, то элемент будет копироваться со всеми дочерними узлами; если передается false — то копируется без дочерних узлов. То есть в данном случае мы копируем узел со всем его содержимым и потом добавляем в конец элемента c .

Клонирование элементов веб-страницы в JavaScript

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

Для замены элемента применяется метод replaceChild(newNode, oldNode) объекта Node. Этот метод в качестве первого параметра принимает новый элемент, который заменяет старый элемент oldNode, передаваемый в качестве второго параметра.

    METANIT.COM   

Home Page

Text 1

Text 2

В данном случае заменяем первый элемент — первый параграф заголовком h2:

Замена элемента веб-страницы в JavaScript

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

Для удаления элемента вызывается метод removeChild() объекта Node. Этот метод удаляет один из дочерних узлов:

    METANIT.COM   

Home Page

Text 1

Text 2

В данном случае удаляется первый параграф из блока div

Удаление всех элементов

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

Home Page

Text 1

Text 2

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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *