JS метод Element.insertAdjacentHTML()
Загальний опис
insertAdjacentHTML()
- це метод об'єкту Element
в JavaScript, який дозволяє вставляти HTML-вміст у вигляді рядка відносно поточного елементу. Цей метод є корисним при динамічному створенні та вставці HTML-вмісту на веб-сторінку, оскільки він забезпечує більший контроль над позицією вставки порівняно з властивістю innerHTML
.
Метод insertAdjacentHTML()
приймає два аргументи: перший - рядок, який визначає позицію вставки відносно поточного елементу, а другий - рядок з HTML-вмістом, який потрібно вставити. Можливі значення для позиції вставки:
'beforebegin'
- вставляє HTML-вміст безпосередньо перед поточним елементом.'afterbegin'
- вставляє HTML-вміст як перший дочірній вміст поточного елементу.'beforeend'
- вставляє HTML-вміст як останній дочірній вміст поточного елементу.'afterend'
- вставляє HTML-вміст безпосередньо після поточного елементу.
Наприклад, припустимо, що у нас є такий HTML-код:
<div id="parent">
<p>Початковий вміст</p>
</div>
Ми можемо використати insertAdjacentHTML()
для вставки нового HTML-вмісту відносно елементу <div>
:
const parent = document.getElementById('parent');
// Вставляє HTML-вміст перед поточним елементом
parent.insertAdjacentHTML('beforebegin', '<span>Новий елемент</span>');
// Вставляє HTML-вміст після поточного елементу
parent.insertAdjacentHTML('afterend', '<span>Ще один новий елемент</span>');
Після виконання цього коду, HTML-структура буде такою:
<span>Новий елемент</span>
<div id="parent">
<p>Початковий вміст</p>
</div>
<span>Ще один новий елемент</span>
Метод insertAdjacentHTML()
також корисний при вставці HTML-вмісту всередину інших елементів. Наприклад:
const parent = document.getElementById('parent');
// Вставляє HTML-вміст як перший дочірній вміст
parent.insertAdjacentHTML('afterbegin', '<div>Новий дочірній вміст</div>');
// Вставляє HTML-вміст як останній дочірній вміст
parent.insertAdjacentHTML('beforeend', '<div>Ще один новий дочірній вміст</div>');
Після виконання цього коду, HTML-структура буде такою:
<div id="parent">
<div>Новий дочірній вміст</div>
<p>Початковий вміст</p>
<div>Ще один новий дочірній вміст</div>
</div>
Слід бути обережним при використанні insertAdjacentHTML()
з даними, введеними користувачем, оскільки вставлений HTML-код буде інтерпретовано браузером. Це може призвести до ризиків безпеки, таких як Cross-Site Scripting (XSS) атаки. Для безпечного введення користувачем рекомендується належним чином обробляти вхідні дані перед вставкою в DOM.
Порада: | Будьте обережні при використанні |
Порада: | Якщо потрібно вставити великий обсяг HTML-вмісту, використовуйте |
Порада: | Для досвідчених розробників: при роботі з великими об'ємами даних або частими оновленнями вмісту, використання |
Синтаксис
insertAdjacentHTML(position, text)
Параметри
- *
position
Рядок, що представляє позицію відносно елемента.
- *
text
Рядок, який буде розібраний як HTML або XML і вставлений у дерево.
Return
none
Повертає значення
undefined
.
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
8 |
4 |
8 |
17 |
Переглядач | ||||
---|---|---|---|---|
37 |
18 |
8 |
4 |
Переглядач | ||
---|---|---|
- |
- |
Приклади
Цей приклад демонструє використання методу insertAdjacentHTML()
для додавання нових елементів у список покупок. Користувач може ввести новий елемент у текстове поле та натиснути кнопку "Додати", щоб додати його до списку. Метод insertAdjacentHTML('beforeend', ...)
вставляє новий елемент списку (<li>
) у кінець батьківського елемента <ul>
.
Також є кнопка "Очистити список", яка викликає функцію clearList()
, що встановлює властивість innerHTML
батьківського елемента <ul>
у порожній рядок, видаляючи всі елементи списку.
Користувач може взаємодіяти з прикладом, додаючи нові елементи до списку покупок та очищаючи список за потреби.
У цьому прикладі ми використовуємо метод insertAdjacentHTML()
для вставки HTML-розмітки у відносну позицію до існуючого елемента. Це дозволяє динамічно створювати та додавати нові елементи до DOM-дерева.
// Отримуємо посилання на цільовий елемент
const targetElement = document.getElementById('target');
// Вставляємо HTML-розмітку після цільового елемента
const newHTML = '<div>Новий елемент</div>';
targetElement.insertAdjacentHTML('afterend', newHTML);
У цьому прикладі ми використовуємо метод insertAdjacentHTML()
для створення динамічного інтерфейсу для редагування списку елементів. Користувач може додавати нові елементи, а також вставляти їх у різні позиції відносно існуючих елементів.
// Отримуємо посилання на список та поле введення
const itemList = document.getElementById('itemList');
const itemInput = document.getElementById('itemInput');
// Функція для додавання нового елемента
function addItem(position) {
const newItem = `<li>${itemInput.value.trim()}</li>`;
if (position === 'beforebegin') {
itemList.insertAdjacentHTML(position, newItem);
} else {
const targetItem = itemList.querySelector(`li:nth-child(${position})`);
targetItem.insertAdjacentHTML('beforebegin', newItem);
}
itemInput.value = '';
}
// Додаємо обробники подій для кнопок
document.getElementById('addBeforeBtn').addEventListener('click', () => addItem('beforebegin'));
document.getElementById('addAfterBtn').addEventListener('click', () => addItem(1));
document.getElementById('addAfterPositionBtn').addEventListener('click', () => {
const position = parseInt(prompt('Введіть позицію для вставки (1, 2, 3, ...)'), 10);
addItem(position);
});