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);
});
