textContent 與 innerText、innerHTML 的區(qū)別

目錄

1. 語法
2. 描述
3. 與innerText的區(qū)別
4. 與innerHTML的區(qū)別
5. 歸屬區(qū)別

內(nèi)容


Node.textContent 屬性表示一個節(jié)點及其后代的文本內(nèi)容。

1. 語法

let text = element.textContent;
element.textContent = "this is some sample text";

2. 描述

  • 如果 element 是 Document,DocumentType 或者 Notation 類型節(jié)點,則 textContent 返回 null。如果你要獲取整個文檔的文本以及CDATA數(shù)據(jù),可以使用 document.documentElement.textContent。
  • 如果節(jié)點是個CDATA片段,注釋,ProcessingInstruction節(jié)點或一個文本節(jié)點,textContent 返回節(jié)點內(nèi)部的文本內(nèi)容(即 nodeValue)。
  • 對于其他節(jié)點類型,textContent 將所有子節(jié)點的 textContent 合并后返回,除了注釋、ProcessingInstruction節(jié)點。如果該節(jié)點沒有子節(jié)點的話,返回一個空字符串。
  • 在節(jié)點上設(shè)置 textContent 屬性的話,會刪除它的所有子節(jié)點,并替換為一個具有給定值的文本節(jié)點。

3. 與innerText的區(qū)別

Internet Explorer 引入了 node.innerText。意圖類似,但有以下區(qū)別:

  • textContent 會獲取所有元素的內(nèi)容,包括 <script><style> 元素,然而 innerText 不會。
  • innerText意識到樣式,并且不會返回隱藏元素的文本,而textContent會。
  • 由于 innerText 受 CSS 樣式的影響,它會觸發(fā)重排(reflow),但textContent 不會。
  • 與 textContent 不同的是, 在 Internet Explorer (對于小于等于 IE11 的版本) 中對 innerText 進(jìn)行修改, 不僅會移除當(dāng)前元素的子節(jié)點,而且還會永久性地破壞所有后代文本節(jié)點(所以不可能再次將節(jié)點再次插入到任何其他元素或同一元素中)。

4. 與innerHTML的區(qū)別

正如其名稱,innerHTML 返回 HTML 文本。通常,為了在元素中檢索或?qū)懭胛谋荆藗兪褂胕nnerHTML。但是,textContent通常具有更好的性能,因為文本不會被解析為HTML。此外,使用textContent可以防止 XSS 攻擊。

5. 歸屬區(qū)別

  • textContent 是 Node 對象的屬性;
  • innerHTML 是 Element 對象的屬性;
  • innerText 是 HTMLElement 對象的屬性;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容