Node 對象提供了 textContent 屬性實現(xiàn)獲取或設(shè)置 HTML 頁面中指定元素的文本內(nèi)容。
## 獲取文本內(nèi)容
textContent 屬性表示 HTML 頁面指定節(jié)點及其后代節(jié)點的文本內(nèi)容。其語法格式如下:
```javascript
var text = element.textContent;
```
在上述語法結(jié)構(gòu)中,返回值 text 表示 element 節(jié)點及其后代節(jié)點的文本內(nèi)容。
需要說明的是,在上述語法結(jié)構(gòu)中,調(diào)用 textContent 屬性的 element 表示元素節(jié)點。元素節(jié)點本身也是一個元素。
> **值得注意的是:** 如果指定節(jié)點是 Document 文檔節(jié)點的話,textContent 返回 null。
我們可以通過如下代碼示例,測試如何通過 textContent 屬性獲取指定節(jié)點的文本內(nèi)容:
```javascript
var pElement = document.getElementById('p');
console.log(pElement.textContent);
```
> **值得注意的是:** 如果指定節(jié)點的后代節(jié)點也包含文本內(nèi)容的話,那該節(jié)點調(diào)用 textContent 屬性時,則會返回該節(jié)點及其所有后代節(jié)點的文本內(nèi)容。
>
> 如下 HTML 頁面結(jié)構(gòu):
>
> ```html
> <p id="content">這是一個<span>段落</span>內(nèi)容。</p>
> ```
>
> 如果我們通過上述 `<p>` 元素調(diào)用 textContent 屬性的話,得到的結(jié)果并不是如下結(jié)果:
>
> ```
> 這是一個內(nèi)容。
> ```
>
> 而是如下結(jié)果:
>
> ```
> 這是一個段落內(nèi)容。
> ```
## 設(shè)置文本內(nèi)容
通過 textContent 屬性不僅可以獲取 HTML 頁面中指定節(jié)點及其后代節(jié)點的文本內(nèi)容,還可以設(shè)置指定節(jié)點的文本內(nèi)容。其語法結(jié)構(gòu)如下:
```javascript
element.textContent = "this is some sample text";
```
> **值得注意的是:** 在節(jié)點上設(shè)置?textContent?屬性的話,會刪除它的所有子節(jié)點,并替換為一個具有給定值的文本節(jié)點。
我們可以通過如下代碼示例,測試如何通過 textContent 屬性設(shè)置指定節(jié)點的文本內(nèi)容:
```javascript
var btn = document.getElementById('btn');
btn.textContent = 'A New Button';
```
## innerText 屬性
IE 引入了?node.innerText 屬性,意圖類似 textContent。但有以下區(qū)別:
- textContent?會獲取所有元素的內(nèi)容,包括?`<script>`?和?`<style>`?元素,然而?innerText?不會。
- innerText 意識到樣式,并且不會返回隱藏元素的文本,而 textContent 會。
- 由于?innerText?受?CSS 樣式的影響,它會觸發(fā)重排(reflow),但 textContent?不會。
- 在 IE (小于等于?IE11 的版本) 中對?innerText 進行修改,不僅會移除當前元素的子節(jié)點,而且還會永久性地破壞所有后代文本節(jié)點。
關(guān)于 innerText 屬性的具體用法請參考 [MSDN社區(qū)的相關(guān)說明](https://msdn.microsoft.com/en-us/library/ms533899(v=vs.85).aspx)。
## 瀏覽器兼容問題解決方案
在實際開發(fā)中,我們需要盡量滿足所有瀏覽器對文本內(nèi)容操作的需求。所以,我們可以使用如下代碼解決瀏覽器之間的兼容問題:
```javascript
function text(elem, text){
if(text){
elem.textContent ? elem.textContent = text : elem.innerText = text;
}else{
if(elem.textContent){
// 表示其他瀏覽器
return elem.textContent;
}else{
// 表示 IE 瀏覽器
return elem.innerText;
}
}
}
```
- 關(guān)于
- 第一章 DOM 是什么
- 第一節(jié) DOM 介紹
- 第二節(jié) DOM 樹結(jié)構(gòu)
- 第二章 Document 對象
- 第一節(jié) Document 對象介紹
- 第二節(jié) 定位頁面元素
- 第三節(jié) 創(chuàng)建頁面元素
- 第三章 Node 對象
- 第一節(jié) Node 對象介紹
- 第二節(jié) 判斷節(jié)點類型
- 第三節(jié) 遍歷節(jié)點
- 第四節(jié) 插入節(jié)點
- 第五節(jié) 刪除節(jié)點
- 第六節(jié) 替換節(jié)點
- 第七節(jié) 復(fù)制節(jié)點
- 第八節(jié) textContent 屬性
- 第四章 Element 對象
- 第一節(jié) Element 對象介紹
- 第二節(jié) DOM 元素樹
- 第三節(jié) 定位頁面元素
- 第四節(jié) 遍歷元素
- 第五節(jié) 屬性操作
- 第六節(jié) innerHTML 屬性
- 第五章 樣式操作
- 第一節(jié) 獲取內(nèi)聯(lián)樣式
- 第二節(jié) 獲取外聯(lián)樣式表
- 第三節(jié) 獲取 class 屬性
- 第四節(jié) 獲取當前有效樣式
- 第五節(jié) 設(shè)置內(nèi)聯(lián)樣式
- 第六節(jié) 設(shè)置 class 屬性
- 第七節(jié) Element 對象的樣式屬性
- 第六章 事件
- 第一節(jié) 什么是事件
- 第二節(jié) 注冊事件
- 第三節(jié) 移除注冊事件
- 第四節(jié) Event 事件對象
- 第五節(jié) 獲取目標元素
- 第六節(jié) 阻止默認行為
- 第七節(jié) 獲取鼠標坐標
- 第八節(jié) 事件流
- 第九節(jié) 事件委托
- 第七章 表單操作
- 第一節(jié) 獲取表單
- 第二節(jié) 表單操作
- 第三節(jié) 表單驗證
- 第四節(jié) 表單提交
- 第八章 BOM
- 第一節(jié) BOM 是什么
- 第二節(jié) Window 對象
- 第三節(jié) Navigator 對象
- 第四節(jié) History 對象
- 第五節(jié) Location 對象
- 第六節(jié) 定時器
