createElement() в JavaScript — створити новий елемент


Загальний опис

Метод createElement() є фундаментальним інструментом в об'єктній моделі документа (DOM) мови програмування JavaScript, що відіграє ключову роль у динамічному створенні елементів HTML. Цей метод дозволяє розробникам на льоту генерувати нові елементи, що можуть бути вставлені в DOM документа, дозволяючи тим самим модифікувати структуру веб-сторінки без необхідності повторного завантаження. Основна корисність createElement() полягає у його здатності ефективно реагувати на дії користувача, а також у можливості динамічно змінювати зміст і структуру веб-сторінок, що робить його незамінним інструментом для розробки інтерактивних веб-додатків.

Для використання createElement(), потрібно викликати цей метод на об'єкті document, передаючи в якості аргументу рядок, що вказує на назву тега елемента, який ви бажаєте створити. Наприклад, для створення нового елемента <div>, код буде виглядати так: let div = document.createElement("div");. Створений елемент може бути потім модифікований за допомогою встановлення його атрибутів, таких як id, class або style, і вмісту через властивості, наприклад, textContent або за допомогою методу appendChild(), щоб додати дочірні елементи.

Поглиблюючи використання, можна розглянути додавання складніших елементів у DOM. Припустимо, вам потрібно створити список з кількома елементами. Спочатку створюється елемент <ul>, а потім за допомогою циклу генеруються елементи <li>, кожен з яких додається як дочірній до <ul>:

let ul = document.createElement("ul");
for (let i = 1; i <= 5; i++) {
    let li = document.createElement("li");
    li.textContent = `Елемент ${i}`;
    ul.appendChild(li);
}
document.body.appendChild(ul);

Цей приклад ілюструє, як можна ефективно використовувати createElement() для генерації складних структур HTML. Крім того, метод дозволяє динамічно реагувати на події, наприклад, створюючи нові елементи у відповідь на кліки користувача або інші взаємодії, що значно розширює можливості інтерактивності веб-додатків.

Важливо зауважити, що створені елементи не з'являються на сторінці автоматично. Для їх відображення необхідно вставити елемент у DOM за допомогою методів appendChild() або insertBefore(). Це дозволяє розробникам точно контролювати момент і місце появи елементів на сторінці.

Застосування createElement() відіграє ключову роль у створенні динамічних, взаємодіючих веб-сайтів та веб-додатків, надаючи розробникам могутній інструмент для модифікації веб-сторінок в реальному часі без потреби в перезавантаженні, що сприяє створенню плавного та взаємодіючого користувацького досвіду.

автор: Bond

Порада

Створений елемент залишається в пам'яті і не з'являється на веб-сторінці, доки ви його явно не додасте до DOM за допомогою методів, таких як appendChild() або insertBefore(). Це дозволяє вам спочатку налаштувати атрибути елемента, стилі або додати вміст перед його відображенням на сторінці.

автор: Bond
Порада

Використовуйте createElement() для динамічного створення інтерфейсу користувача відповідно до даних, отриманих з сервера або введених користувачем. Створення елементів "на льоту" дозволяє вашому додатку бути більш відгуковим і адаптивним до змін у даних без необхідності повного перезавантаження сторінки.

автор: Bond
Порада

Для ефективного використання createElement(), розгляньте можливість створення функції-помічника, яка автоматизує створення елементів із заздалегідь визначеними атрибутами та вмістом. Наприклад:

function createCustomElement(tag, content, attributes) {
 const element = document.createElement(tag);
 if (content) element.textContent = content;
 if (attributes) {
   Object.keys(attributes).forEach(attr => element.setAttribute(attr, attributes[attr]));
 }
 return element;
}

Цей підхід спрощує роботу з DOM та робить ваш код чистішим.

автор: Bond

Синтаксис

createElement(tagName)
createElement(tagName, options)

Параметри

tagName

Рядок, що вказує тип елемента, який буде створено. nodeName створеного елемента ініціалізується значенням tagName. Не слід використовувати кваліфіковані імена (як-от "html:a") з цим методом. При виклику в HTML-документі createElement() перетворює tagName на малі літери перед створенням елемента. У Firefox, Opera та Chrome, createElement(null) працює так само, як createElement("null").

автор: Bond

options

Об'єкт з наступними властивостями:

  • is: Рядок, що дозволяє вказати ім'я користувацького елемента, який буде створено. Це корисно для визначення елементів Web Components.
автор: Bond

Повернення

element

Повертає новий об'єкт Element, який є екземпляром відповідного класу до заданого тегу. Якщо документ є HTMLDocument, найпоширенішим випадком, повертається новий об'єкт HTMLElement. У випадку, коли метод викликається для інших типів документів, повертається новий об'єкт Element.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 6 12 5
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми використовуємо кнопки для додавання нових елементів (div) до блоку з результатами та видалення останнього елемента з цього блоку. Кожен новий елемент містить текст, що показує його порядковий номер у списку доданих елементів. Цей приклад наглядно демонструє динамічну взаємодію користувача з веб-сторінкою за допомогою JavaScript, використовуючи метод document.createElement() для створення нових елементів DOM.

HTML

<header>
  <h2 class="title">document.createElement()</h2>
  <p class="description">Метод створює новий елемент з вказаним іменем тега.</p>
</header>
<main>
  <div class="controls">
    <button id="addBtn">Додати елемент</button>
    <button id="removeBtn">Видалити останній елемент</button>
  </div>
  <div class="result" id="result">
    <!-- Тут будуть відображатися додані елементи -->
  </div>
</main>

CSS

body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  margin-top: 16px;
}

.controls button {
  margin-right: 10px;
  padding: 5px 10px;
  font-size: 14px;
}

/* Додаткові стилі */
.element {
  margin: 5px 0;
  padding: 10px;
  background-color: #e7e7e7;
  border-radius: 5px;
}

JS

document.getElementById('addBtn').addEventListener('click', function () {
  var result = document.getElementById('result');
  var newElement = document.createElement('div');
  newElement.classList.add('element');
  newElement.textContent = 'Новий елемент ' + (result.childNodes.length + 1);
  result.appendChild(newElement);
});

document.getElementById('removeBtn').addEventListener('click', function () {
  var result = document.getElementById('result');
  if (result.lastChild) {
    result.removeChild(result.lastChild);
  }
});
//# sourceURL=pen.js
автор: Bond

У цьому прикладі ми створимо новий елемент p (абзац) за допомогою методу document.createElement() і додамо його до тіла веб-сторінки. Цей приклад демонструє базове використання методу для динамічного додавання елементів до DOM-дерева.

// Створення нового елемента 'p'
var newParagraph = document.createElement('p');

// Додавання тексту до новоствореного елемента 'p'
newParagraph.textContent = 'Це новий абзац, створений динамічно.';

// Додавання новоствореного елемента 'p' до тіла документа
document.body.appendChild(newParagraph);
автор: Bond

У цьому прикладі ми складемо трохи складніший сценарій, створивши список ul, до якого додамо кілька елементів li, використовуючи цикл. Цей приклад ілюструє можливість використання document.createElement() для створення більш складних структур документа.

// Створення нового елемента 'ul' (ненумерований список)
var newList = document.createElement('ul');

// Масив з текстом для кожного елемента списку 'li'
var listItemsText = ['Перший елемент', 'Другий елемент', 'Третій елемент'];

// Створення та додавання елементів 'li' до 'ul' за допомогою циклу
for (var i = 0; i < listItemsText.length; i++) {
  // Створення нового елемента 'li'
  var listItem = document.createElement('li');
  // Додавання тексту до елемента 'li'
  listItem.textContent = listItemsText[i];
  // Додавання елемента 'li' до 'ul'
  newList.appendChild(listItem);
}

// Додавання скомпонованого списку 'ul' до тіла документа
document.body.appendChild(newList);
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід