Метод document.createElement() в JavaScript: добавление элементов

В этом руководстве вы узнаете, как использовать JavaScript document.createElement() для создания  нового элемента HTML и добавления его к дереву DOM.

Чтобы создать элемент HTML, используйте метод document.createElement() :

let element = document.createElement(htmlTag);

document.createElement() принимает имя тега HTML и возвращает новый Node с Element.

1) Пример создания нового div

Предположим, у вас есть следующий HTML-документ:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>JS CreateElement Demo</title>
</head>
<body>

</body>
</html>

В следующем примере document.createElement() используется для создания нового элемента <div> :

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

И добавьте фрагмент HTML в div :

div.innerHTML = '<p>CreateElement example</p>';

Чтобы прикрепить div к документу, вы используете метод appendChild() :

document.body.appendChild(div);

Соединим все это вместе:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>JS CreateElement Demo</title>
</head>
<body>
    <script>
        let div = document.createElement('div');
        div.id = 'content';
        div.innerHTML = '<p>CreateElement example</p>';
        document.body.appendChild(div);
    </script>
</body>
</html>

Добавление идентификатора

Если вы хотите добавить идентификатор к div, вы устанавливаете id элемента в значение, например:

let div = document.createElement('div');
div.id = 'content';
div.innerHTML = '<p>CreateElement example</p>';

document.body.appendChild(div);

Добавление класса

В следующем примере задается класс CSS для нового div note :

let div = document.createElement('div');
div.id = 'content';
div.className = 'note';
div.innerHTML = '<p>CreateElement example</p>';

document.body.appendChild(div);

Новый текст в div

Чтобы добавить фрагмент текста в <div>, вы можете использовать свойство innerHTML, как в приведенном выше примере, или создать новый узел Text и добавить его к div :

// create a new div and set its attributes
let div = document.createElement('div');
div.id = 'content';
div.className = 'note';

// create a new text node and add it to the div
let text = document.createTextNode('CreateElement example');
div.appendChild(text);

// add div to the document
document.body.appendChild(div);

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

Чтобы добавить элемент в div, вы создаете элемент и добавляете его в div используя метод appendChild() :

let div = document.createElement('div');
div.id = 'content';
div.className = 'note';

// create a new heading and add it to the div
let h2 = document.createElement('h2');
h2.textContent = 'Add h2 element to the div';
div.appendChild(h2);

// add div to the document
document.body.appendChild(div);

2) Пример создания новых элементов списка( li )

Допустим, у вас есть список элементов:

<ul id="menu">
    <li>Home</li>
</ul>

Следующий код добавляет два элемента li к ul :

let li = document.createElement('li');
li.textContent = 'Products';
menu.appendChild(li);

li = document.createElement('li');
li.textContent = 'About Us';

// select the ul menu element
const menu = document.querySelector('#menu');
menu.appendChild(li);

Выход:

<ul id="menu">
    <li>Home</li>
    <li>Products</li>
    <li>About Us</li>
</ul>

3) Создание элемента script

Иногда может потребоваться динамическая загрузка файла JavaScript. Для этого вы можете использовать document.createElement(), чтобы создать элемент script и добавить его в документ.

В следующем примере показано, как создать новый элемент script и загрузить в документ файл /lib.js :

let script = document.createElement('script');
script.src = '/lib.js';
document.body.appendChild(script);

Сначала вы можете создать новую вспомогательную функцию, которая загружает файл JavaScript из URL-адреса:

function loadJS(url) {
    let script = document.createElement('script');
    script.src = url;
    document.body.appendChild(script);
}

Затем используйте вспомогательную функцию для загрузки файла /lib.js :

loadJS('/lib.js');

Чтобы загрузить файл JavaScript асинхронно, установите для атрибута script async элемента c2NyaXB0 значение true :

function loadJSAsync(url) {
    let script = document.createElement('script');
    script.src = url;
    script.async = true;
    document.body.appendChild(script);
}

Заключение

  • document.createElement() создает новый элемент HTML.
  • element.appendChild() добавляет элемент HTML к существующему элементу.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript