innerHTML與outerHTML有什麼區別?

王铁柱6發表於2024-12-05

innerHTMLouterHTML 都是 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 通常更高效。

希望這個解釋能夠幫助你理解 innerHTMLouterHTML 的區別。

相關文章