目錄
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 對象的屬性;