innerHTML
和 outerHTML
都是 JavaScript DOM API 中用於獲取或設定 HTML 元素內容的屬性,但它們的主要區別在於包含範圍:
-
innerHTML
: 獲取或設定元素內部的 HTML 內容,不包括元素本身的標籤。它指的是元素開始標籤和結束標籤之間的內容。 -
outerHTML
: 獲取或設定元素本身及其內部 HTML 內容的完整 HTML 程式碼,包括元素的標籤。
舉例說明:
假設有以下 HTML 程式碼:
<div id="myDiv">
<p>This is a paragraph.</p>
</div>
JavaScript 程式碼:
const myDiv = document.getElementById('myDiv');
console.log(myDiv.innerHTML); // 輸出: "<p>This is a paragraph.</p>"
console.log(myDiv.outerHTML); // 輸出: "<div id="myDiv"><p>This is a paragraph.</p></div>"
設定內容的區別:
當用於設定內容時,innerHTML
會替換元素的原始內容,而 outerHTML
會替換整個元素,包括其標籤。
myDiv.innerHTML = "New content"; // <div id="myDiv">New content</div>
myDiv.outerHTML = "<span>Replacement</span>"; // <span>Replacement</span> (div 被替換成了 span)
總結:
特性 | innerHTML | outerHTML |
---|---|---|
獲取 | 元素內部的 HTML | 元素及其內部 HTML |
設定 | 替換元素內部的 HTML | 替換整個元素 |
使用場景:
-
innerHTML
常用於修改元素的內容,例如動態更新文字、新增或刪除子元素等。 -
outerHTML
常用於替換整個元素,例如用另一個元素替換當前元素,或者完全移除一個元素。
需要注意的是:
- 使用
innerHTML
設定 HTML 內容時,需要注意潛在的 XSS 攻擊風險。如果設定的內容來自使用者輸入,需要進行適當的轉義或過濾,以防止惡意程式碼注入。 outerHTML
在替換元素時,會重新解析 HTML,這可能會影響效能。 如果只是修改元素內容,使用innerHTML
通常更高效。
希望這個解釋能夠幫助你理解 innerHTML
和 outerHTML
的區別。