outerHTML в JavaScript — елемент разом із його тегом


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

outerHTML - це властивість об'єкта Element, яка представляє розмітку HTML елемента, включно з самим елементом та його вмістом. Ця властивість дозволяє отримати або встановити HTML-код елемента, що може бути корисним для динамічної маніпуляції вмістом сторінки.

Для отримання HTML-коду елемента достатньо звернутися до властивості outerHTML відповідного об'єкта Element. Наприклад, для елемента з id="myElement" можна використати const html = document.getElementById("myElement").outerHTML;. Це поверне рядок, що містить HTML-код елемента та його вміст.

Властивість outerHTML часто використовується для динамічного оновлення вмісту веб-сторінки без необхідності повного перезавантаження. Наприклад, можна змінити вміст елемента на основі даних, отриманих з серверу:

fetch("/data.json")
  .then(response => response.json())
  .then(data => {
    const element = document.getElementById("myElement");
    element.outerHTML = `<div id="myElement">${data.content}</div>`;
  });

У цьому прикладі ми отримуємо дані з серверу за допомогою fetch, а потім замінюємо весь HTML-код елемента myElement новим вмістом, використовуючи властивість outerHTML.

Крім того, outerHTML можна використовувати для клонування елементів на сторінці. Наприклад, можна створити копію елемента та вставити її в інше місце:

const originalElement = document.getElementById("myElement");
const clone = document.createElement("div");
clone.outerHTML = originalElement.outerHTML;
document.body.appendChild(clone);

У цьому прикладі ми створюємо новий порожній елемент div, копіюємо HTML-код оригінального елемента myElement у властивість outerHTML нового елемента, а потім додаємо його до document.body.

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

Підсумовуючи, outerHTML є потужною властивістю для динамічної маніпуляції HTML-кодом елементів на веб-сторінці. Її можна використовувати для отримання або встановлення HTML-коду елемента, оновлення вмісту сторінки без перезавантаження, клонування елементів та інших операцій, пов'язаних з розміткою.

автор: Bond

Порада

Будь обережним при встановленні outerHTML, оскільки це замінює весь елемент, включно з його обробниками подій. Якщо ти додав обробники подій до елемента, вони будуть втрачені після заміни outerHTML. У такому випадку краще використовувати властивість innerHTML для заміни лише вмісту елемента.

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

Пам'ятай, що outerHTML повертає рядок, що містить HTML-код елемента. Якщо ти плануєш маніпулювати цим рядком або вставляти його в інші частини коду, переконайся, що ти належним чином екрануєш спеціальні символи, щоб уникнути проблем з безпекою або неочікуваної поведінки. Використовуй функції, такі як Node.textContent або Element.innerHTML, якщо тобі потрібно лише отримати або встановити текстовий вміст елемента без розмітки HTML.

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

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

const originalElement = document.getElementById("myElement");
const clone = document.createElement("div");
clone.outerHTML = originalElement.outerHTML;
document.body.appendChild(clone);
автор: Bond

Синтаксис

Element.outerHTML

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 11 1.3 8 12 4
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
1 18 14 1

Приклади

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

У цьому прикладі демонструється використання властивості outerHTML для отримання HTML-коду елемента div з id="myDiv" разом з його вмістом. При натисканні на кнопку "Показати outerHTML" викликається функція showOuterHTML(), яка отримує елемент div за допомогою document.getElementById('myDiv'), зчитує значення властивості outerHTML цього елемента та виводить його у елемент <p> на сторінці. Виведений рядок буде містити повний HTML-код елемента div та його вміст.

HTML

<div id="myDiv">
    <p>Це параграф всередині div.</p>
</div>
<button onclick="showOuterHTML()">Показати outerHTML</button>
<p id="output"></p>

JS

function showOuterHTML() {
    const myDiv = document.getElementById('myDiv');

    // outerHTML — розмітка елемента разом із ним самим
    document.getElementById('output').textContent = myDiv.outerHTML;
}
автор: Bond

У цьому прикладі ми маємо елемент div з id="container", що містить початкову розмітку. Також є текстове поле textarea та кнопка "Оновити розмітку".

При завантаженні сторінки ми встановлюємо початкову розмітку елемента #container в текстове поле за допомогою властивості outerHTML. Коли користувач натискає кнопку "Оновити розмітку", ми оновлюємо розмітку елемента #container, присвоюючи його властивості outerHTML значення з текстового поля. Таким чином, користувач може редагувати розмітку в текстовому полі та бачити результат змін безпосередньо на сторінці після натискання кнопки "Оновити розмітку".

Цей приклад демонструє використання властивості outerHTML для отримання та встановлення розмітки елемента, включно з самим елементом. Користувач може взаємодіяти з прикладом, редагуючи розмітку в текстовому полі та оновлюючи її на сторінці.

HTML

<header>
  <h2 class="title">Element: outerHTML property</h2>
  <p class="description">Отримує або встановлює розмітку елемента, включно з самим елементом.</p>
</header>
<main>
  <div class="result">
    <div id="container">
      <h3>Заголовок</h3>
      <p>Початковий текст</p>
    </div>
    <textarea id="outerHTMLInput" rows="5"></textarea>
    <button id="updateButton">Оновити розмітку</button>
  </div>
</main>

CSS

body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

JS

const outerHTMLInput = document.getElementById('outerHTMLInput');
const updateButton = document.getElementById('updateButton');
const containerElement = document.getElementById('container');

// Встановлюємо початкову розмітку в текстове поле
outerHTMLInput.value = containerElement.outerHTML;

updateButton.addEventListener('click', () => {
  // Оновлюємо розмітку контейнера
  document.getElementById('container').outerHTML = outerHTMLInput.value;
  console.log(outerHTMLInput.value);
});
//# sourceURL=pen.js
автор: Bond

У цьому прикладі демонструється використання властивості outerHTML для зміни HTML-коду елемента списку. На сторінці є невпорядкований список (<ul>) з трьома елементами (<li>). При натисканні на кнопку "Змінити список" викликається функція modifyList(), яка виконує два кроки:

  1. Створюється новий елемент списку (<li>) за допомогою document.createElement('li'), його текстовий вміст встановлюється на "Новий елемент", і він додається до кінця списку за допомогою list.appendChild(newItem).

  2. Отримується другий елемент списку за допомогою list.children[1], і його outerHTML змінюється на нове значення '<li>Змінений елемент</li>'. Це ефективно замінює весь HTML-код другого елемента списку на нове значення.

Після виконання функції modifyList() список буде змінено: до нього буде додано новий елемент у кінці, а другий елемент буде замінено на "Змінений елемент".

HTML

<ul id="list">
    <li>Елемент 1</li>
    <li>Елемент 2</li>
    <li>Елемент 3</li>
</ul>
<button onclick="modifyList()">Змінити список</button>

JS

function modifyList() {
    const list = document.getElementById('list');
    const newItem = document.createElement('li');
    newItem.textContent = 'Новий елемент';

    list.appendChild(newItem);

    // присвоєння outerHTML замінює сам елемент цілком
    const secondItem = list.children[1];
    secondItem.outerHTML = '<li>Змінений другий елемент</li>';
}
автор: Bond

Коментарі

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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