Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

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.

Порада:

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

Порада:

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

Порада:

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

Синтаксис

insertAdjacentElement(position, element)

Параметри

*position

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

*element

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

Return

element

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

Переглядачі

Переглядач

1

48

3

8

17

Переглядач

4.4

18

48

1

Переглядач

-

-

Приклади


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

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

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

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

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

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

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

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

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

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

// Отримуємо посилання на список та поле введення
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);
});