Кратко
СкопированоСвойство outer позволяет получить HTML-элемент, включая его содержимое, в виде HTML-строки или заменить элемент на новый HTML.
Новое значение HTML передаётся в виде строки и оно полностью заменит весь элемент. В outer нельзя передать DOM-элемент, только строку.
Пример
Скопировано
<section> <h1>Введение</h1> <p>Параграф с текстом</p> <p>Второй параграф с текстом</p></section>
<section>
<h1>Введение</h1>
<p>Параграф с текстом</p>
<p>Второй параграф с текстом</p>
</section>
const section = document.querySelector('section')console.log(section.outerHTML)
const section = document.querySelector('section')
console.log(section.outerHTML)
В таком случае выведется весь HTML, включая сам элемент:
<section><h1>Введение</h1><p>Параграф с текстом</p><p>Второй параграф с текстом</p></section>
<section><h1>Введение</h1><p>Параграф с текстом</p>
<p>Второй параграф с текстом</p></section>
Теперь заменим старое содержимое новым HTML:
section.outerHTML = '<h2>Второй заголовок</h2>'
section.outerHTML = '<h2>Второй заголовок</h2>'
HTML после изменения:
<h2>Второй заголовок</h2>
<h2>Второй заголовок</h2>
Как понять
СкопированоСвойство outer проще понять в сравнении с другим похожим свойством — inner.
Свойство inner позволяет получить только содержимое элемента как HTML-строку. В то время как outer делает то же самое, но при этом возвращает и HTML самого элемента. Можно сказать, что вывод будет идентичен inner, только в строке будет содержаться открывающий и закрывающий тег самого элемента, у которого было вызвано свойство.
Так же как и inner, если в outer присвоить новое значение, то это приводит к перерисовке страницы.
Как пишется
СкопированоОбращение к свойству outer вернёт элемент и его содержимое виде HTML-строки. Просмотреть можно любой элемент, но изменить можно любой, кроме <html>.
Присвоение нового значения к свойству полностью удалит элемент и заменит его новым HTML:
<header>Название сайта</header>
<header>Название сайта</header>
const header = document.querySelector('header')header.outerHTML = '<span class="logo"></span>'
const header = document.querySelector('header')
header.outerHTML = '<span class="logo"></span>'
HTML после изменения:
<span class="logo"></span>
<span class="logo"></span>
Новый элемент полностью заменит <header>.
document.body.outerHTML = '<h1>Я новое содержимое страницы<h1>'
document.body.outerHTML =
'<h1>Я новое содержимое страницы<h1>'
В результате в документ будет такой HTML:
<body> <h1>Я новое содержимое страницы<h1></body>
<body>
<h1>Я новое содержимое страницы<h1>
</body>
<body> остался на странице, а новое значение стало содержимым элемента.
Если попробовать изменить outer у <html>, то браузер выбросит ошибку.
const html = document.querySelector('html')html.outerHTML = '<div>Я новый HTML</div>'// Uncaught DOMException:// Failed to set the 'outerHTML' property on 'Element'
const html = document.querySelector('html')
html.outerHTML = '<div>Я новый HTML</div>'
// Uncaught DOMException:
// Failed to set the 'outerHTML' property on 'Element'