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.
- Порада
-
Будьте обережні при використанні
автор: BondinsertAdjacentHTML()з даними, введеними користувачем, оскільки вставлений HTML-код буде інтерпретовано браузером. Для безпечного введення користувачем рекомендується належним чином обробляти вхідні дані перед вставкою в DOM. - Порада
-
Якщо потрібно вставити великий обсяг HTML-вмісту, використовуйте
автор: BondinsertAdjacentHTML()замістьinnerHTMLдля кращої продуктивності, оскільки при використанніinsertAdjacentHTML()браузеру не потрібно повторно розбирати та перебудовувати весь вміст елементу. - Порада
-
Для досвідчених розробників: при роботі з великими об'ємами даних або частими оновленнями вмісту, використання
автор: BondinsertAdjacentHTML()може призвести до зниження продуктивності. У таких випадках розгляньте можливість використання більш ефективних методів маніпуляції DOM, таких якcreateElement(),createDocumentFragment()або бібліотек для роботи з DOM, наприклад, React або Vue.js.
Синтаксис
insertAdjacentHTML(position, text)
Параметри
position-
Рядок, що представляє позицію відносно елемента.
автор: Bond text-
Рядок, який буде розібраний як HTML або XML і вставлений у дерево.
автор: Bond
Повернення
none-
Повертає значення
автор: Bondundefined.
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 1 | 8 | 4 | 8 | 17 |
| Переглядач | ||||
|---|---|---|---|---|
| 37 | 18 | 8 | 4 |
| Переглядач | ||
|---|---|---|
| - | - |
Приклади
+ запропонувати свій приклад у пісочниці
У цьому прикладі ми використовуємо метод insertAdjacentHTML() для вставки HTML-розмітки у відносну позицію до існуючого елемента. Це дозволяє динамічно створювати та додавати нові елементи до DOM-дерева.
HTML
<div id="target">Демонстраційний елемент</div>
JS
// Отримуємо посилання на цільовий елемент
const targetElement = document.getElementById('target');
// Вставляємо HTML-розмітку після цільового елемента
const newHTML = '<div>Новий елемент</div>';
targetElement.insertAdjacentHTML('afterend', newHTML);
У цьому прикладі ми використовуємо метод insertAdjacentHTML() для створення динамічного інтерфейсу для редагування списку елементів. Користувач може додавати нові елементи, а також вставляти їх у різні позиції відносно існуючих елементів.
HTML
<ul id="itemList">
<li>перший пункт</li>
<li>другий пункт</li>
</ul>
<input type="text" id="itemInput" value="текст для прикладу" placeholder="Введи щось">
<button id="addBeforeBtn">Додати</button>
<button id="addAfterBtn">Додати</button>
<button id="addAfterPositionBtn">Додати</button>
JS
// Отримуємо посилання на список та поле введення
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);
});
Цей приклад демонструє використання методу insertAdjacentHTML() для додавання нових елементів у список покупок. Користувач може ввести новий елемент у текстове поле та натиснути кнопку "Додати", щоб додати його до списку. Метод insertAdjacentHTML('beforeend', ...) вставляє новий елемент списку (<li>) у кінець батьківського елемента <ul>.
Також є кнопка "Очистити список", яка викликає функцію clearList(), що встановлює властивість innerHTML батьківського елемента <ul> у порожній рядок, видаляючи всі елементи списку.
Користувач може взаємодіяти з прикладом, додаючи нові елементи до списку покупок та очищаючи список за потреби.
Коментарі
Коментарів ще немає — будьте першим!