JS метод Element.insertAdjacentElement()


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

insertAdjacentElement() - це метод об'єкту Element в JavaScript, який дозволяє вставляти вказаний елемент відносно поточного елементу. Цей метод є корисним при динамічній маніпуляції з DOM (Document Object Model) та вставці нових елементів на веб-сторінку. Він надає більший контроль над позицією вставки порівняно з іншими методами, такими як appendChild() або insertBefore().

Метод insertAdjacentElement() приймає два аргументи: перший - рядок, який визначає позицію вставки відносно поточного елементу, а другий - елемент, який потрібно вставити. Можливі значення для позиції вставки:

  • 'beforebegin' - вставляє елемент безпосередньо перед поточним елементом.
  • 'afterbegin' - вставляє елемент як перший дочірній елемент поточного елементу.
  • 'beforeend' - вставляє елемент як останній дочірній елемент поточного елементу.
  • 'afterend' - вставляє елемент безпосередньо після поточного елементу.

Наприклад, припустимо, що у нас є такий HTML-код:

<div id="parent">
  <p>Початковий вміст</p>
</div>

Ми можемо використати insertAdjacentElement() для вставки нового елементу відносно елементу <div>:

const parent = document.getElementById('parent');
const newElement = document.createElement('span');
newElement.textContent = 'Новий елемент';

// Вставляє елемент перед поточним елементом
parent.insertAdjacentElement('beforebegin', newElement);

// Вставляє елемент після поточного елементу
parent.insertAdjacentElement('afterend', newElement.cloneNode(true));

Після виконання цього коду, HTML-структура буде такою:

<span>Новий елемент</span>
<div id="parent">
  <p>Початковий вміст</p>
</div>
<span>Новий елемент</span>

Метод insertAdjacentElement() також корисний при вставці елементів всередину інших елементів. Наприклад:

const parent = document.getElementById('parent');
const newElement = document.createElement('div');
newElement.textContent = 'Новий дочірній елемент';

// Вставляє елемент як перший дочірній елемент
parent.insertAdjacentElement('afterbegin', newElement);

// Вставляє елемент як останній дочірній елемент
parent.insertAdjacentElement('beforeend', newElement.cloneNode(true));

Після виконання цього коду, HTML-структура буде такою:

<div id="parent">
  <div>Новий дочірній елемент</div>
  <p>Початковий вміст</p>
  <div>Новий дочірній елемент</div>
</div>

Загалом, insertAdjacentElement() є потужним інструментом для динамічної вставки елементів на веб-сторінку. Він надає більше гнучкості та контролю над позицією вставки порівняно з іншими методами маніпуляції DOM.

автор: Bond

Порада

Якщо потрібно вставити кілька елементів в одну позицію, використовуй цикл або створюй фрагмент документа за допомогою document.createDocumentFragment() для кращої продуктивності.

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

Пам'ятай, що insertAdjacentElement() вставляє елемент як вузол DOM, тому перед використанням потрібно створити екземпляр Element за допомогою document.createElement() або отримати існуючий вузол.

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

Для досвідчених розробників: при роботі з великими об'ємами даних або частими оновленнями вмісту, використання insertAdjacentElement() може призвести до зниження продуктивності. У таких випадках розгляньте можливість використання більш ефективних методів маніпуляції DOM, таких як appendChild(), insertBefore() або бібліотек для роботи з DOM, наприклад, React або Vue.js.

автор: Bond

Синтаксис

insertAdjacentElement(position, element)

Параметри

position

Рядок, що представляє позицію відносно цільового елемента.

автор: Bond

element

Елемент, який потрібно вставити у дерево.

автор: Bond

Повернення

element

Повертає вставлений елемент або null у разі невдачі вставки.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
1 48 3 8 17
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 48 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
- -

Приклади

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

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

HTML

<ul id="productList">
    <li>перший пункт</li>
    <li>другий пункт</li>
</ul>
<input type="text" id="productInput" value="текст для прикладу" placeholder="Введи щось">
<button id="addBeforeBtn">Додати</button>
<button id="addAfterBtn">Додати</button>
<button id="addAfterPositionBtn">Додати</button>

JS

// Отримуємо посилання на список та поле введення
const productList = document.getElementById('productList');
const productInput = document.getElementById('productInput');

// Функція для додавання нового товару
function addProduct(position) {
  const newProduct = document.createElement('li');
  newProduct.textContent = productInput.value.trim();

  if (position === 'beforebegin') {
    productList.insertAdjacentElement(position, newProduct);
  } else {
    const targetProduct = productList.querySelector(`li:nth-child(${position})`);
    targetProduct.insertAdjacentElement('beforebegin', newProduct);
  }

  productInput.value = '';
}

// Додаємо обробники подій для кнопок
document.getElementById('addBeforeBtn').addEventListener('click', () => addProduct('beforebegin'));
document.getElementById('addAfterBtn').addEventListener('click', () => addProduct(1));
document.getElementById('addAfterPositionBtn').addEventListener('click', () => {
  const position = parseInt(prompt('Введіть позицію для вставки (1, 2, 3, ...)'), 10);
  addProduct(position);
});
автор: Bond

У цьому прикладі ми використовуємо метод insertAdjacentElement() для додавання нового елемента до DOM-дерева відносно існуючого елемента. Це дозволяє вставляти елементи в різні позиції щодо вихідного елемента.

HTML

<div id="target">Демонстраційний елемент</div>

JS

// Отримуємо посилання на вихідний елемент
const targetElement = document.getElementById('target');

// Створюємо новий елемент
const newElement = document.createElement('div');
newElement.textContent = 'Новий елемент';

// Вставляємо новий елемент перед вихідним елементом
targetElement.insertAdjacentElement('beforebegin', newElement);
автор: Bond

У цьому прикладі ми використовуємо метод insertAdjacentElement() для динамічного додавання нових товарів до списку. Користувач може вводити назву товару в текстове поле, а потім вибрати одну з трьох кнопок для вставки нового товару в різні позиції відносно існуючого списку.

При натисканні на кнопку "Додати перед першим", новий товар буде вставлений перед першим елементом списку за допомогою insertAdjacentElement('beforebegin', newProduct).

При натисканні на кнопку "Додати після першого", новий товар буде вставлений після першого елемента списку за допомогою insertAdjacentElement('beforebegin', newProduct) для першого елемента списку.

При натисканні на кнопку "Додати після вказаної позиції", користувачеві буде запропоновано ввести номер позиції, після якої буде вставлений новий товар. Ця функціональність реалізована за допомогою методу querySelector для знаходження цільового елемента списку та вставки нового товару перед ним за допомогою insertAdjacentElement('beforebegin', newProduct).

Цей приклад демонструє гнучкість методу insertAdjacentElement() у вставці елементів у різні позиції відносно цільового елемента. Він також ілюструє використання методів createElement() для створення нових елементів та querySelector() для вибору існуючих елементів у DOM-дереві.

автор: Bond

Коментарі

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

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

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

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

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