logo
Vvedenie_v_Veb_programmirovanien_2 / Vvedenie_v_Veb_programmirovanien_2

Свойство элемента innerHtml и outerHtml

Хотя свойства innerHTML и outerHTML не являются официально поддерживаемыми стандартами, однако они поддерживаются практически всеми современными браузерами.

Свойство innerHTML содержит HTML-код между открывающим и закрывающим тегом. С помощью этого свойства можно работать с кодом внутри тега, как со строкой – считывать и записывать. Однако для следующей группы элементов это свойство доступно только для чтения: COL, COLGROUP, HTML, STYLE, TABLE, THEAD, TITLE, TR. Свойство innerHTML не существует у элементов, которые не имеют одновременно открывающего и закрывающего тега (например <br>).

Отличие свойства outerHTML в том, что это свойство включает в себя HTML-код между открывающим и закрывающим тегом, а также открывающий и закрывающий тег этого элемента.

Для следующих элементов это свойство доступно только при чтении: CAPTION, COL, COLGROUP, HTML, TBODY, TD, TH, THEAD, TR. Свойство outerHTML доступно для записи только после того, как весь документ будет загружен, т.е. произойдет событие window.onload.

В качестве иллюстрации ниже приведен пример использования свойства outerHTML. Когда пользователь щелкает по кнопке передачи формы на сервер, вместо кнопки появляется сообщение с благодарностью:

<INPUT TYPE="submit" VALUE="Отправить"

onClick="this.outerHTML='Благодарим Вас за участие в нашем опросе.'">

А вот как это же действие можно реализовать, используя только средства W3C DOM:

<INPUT TYPE="submit" VALUE="Отправить"

onClick="replaceButton(this)">

<script type="text/javascript">

function replaceButton(oButton) {

var oText = document.createTextNode("Благодарим Вас за участие в нашем опросе.")

var oParent = oButton.parentNode

oParent.replaceChild(oParagraph,oButton)

}

</script>

Ниже приведен пример использования свойств innerHTML и outerHTML:

<!-- пример pr31: использование свойств -->

<html><head>

<script type="text/javascript">

function transformBody() {

var myPar = document.getElementById("myP");

myP.innerHTML = "<i>Hello, World!</i>";

myP.outerHTML = "<strong>" + myP.innerHTML

+ "</strong>";

}

</script>

</head>

<body onload="transformBody();">

<p id="myP">sample text</p>

</body>

</html>

<!-- после выполнения функции структура элемента body будет:

<BODY><STRONG><I>Hello, World!</I></STRONG></BODY>

-->