JavaScript textContent
textContent屬性可以返回或者設定指定節點的文字內容。
上述概念闡述不足以完全涵蓋屬性所有特點,後面通過程式碼例項詳細介紹。
此屬性與innerText比較類似,但是區別也是巨大的,參閱如下兩篇文章:
(1).JavaScript innerText一章節。
(2).innerText與textContent區別一章節。
語法結構:
[JavaScript] 純文字檢視 複製程式碼let text = element.textContent; // 返回文字內容 element.textContent = text; // 設定文字內容
瀏覽器支援:
(1).IE9+瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).opera瀏覽器支援此方法。
(5).火狐瀏覽器支援此方法。
(6).safria瀏覽器支援此方法。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let odiv=document.getElementById("ant"); odiv.textContent="螞蟻部落"; } </script> </head> <body> <div id="ant"></div> </body> </html>
程式碼執行效果截圖如下:
通過textContent屬性為div元素設定為本內容,沒有什麼異議。
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let odiv=document.getElementById("ant"); let obt=document.getElementById("bt"); obt.onclick=function(){ odiv.textContent="螞蟻部落"; } } </script> </head> <body> <div id="ant"> <div> <span>青島市南區</span> </div> </div> <input type="button" id="bt" value="檢視效果"/> </body> </html>
點選按鈕執行效果截圖如下:
可以看到,通過textContent屬性設定為本內容會清空元素的所有子節點,使用指定文字替代。
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let odiv=document.getElementById("ant"); let obt=document.getElementById("bt"); obt.onclick=function(){ odiv.textContent="<b>螞蟻部落</b>"; } } </script> </head> <body> <div id="ant">青島市南區</div> <input type="button" id="bt" value="檢視效果"/> </body> </html>
點選按鈕程式碼執行效果截圖如下:
程式碼分析如下:
(1).被設定的文字內容中含有HTML標籤<b>。
(2).但是此標籤並未被解析,而是作為純文字寫入div中。
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> .ant{float:left;} </style> <script> window.onload=function(){ let odiv=document.getElementById("ant"); let obt=document.getElementById("bt"); console.log(odiv.textContent); } </script> </head> <body> <div id="ant">1<span>2</span><span>3</span></div> </body> </html>
程式碼執行效果截圖如下:
textContent不但返回當前元素的文字內容,而且也會返回它後代元素的文字內容。
返回值是一個累積追加效果,但並不是簡單從子元素中取出文字進行追加,再來看一段程式碼:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> .ant{float:left;} </style> <script> window.onload=function(){ let odiv=document.getElementById("ant"); let obt=document.getElementById("bt"); console.log(odiv.textContent); } </script> </head> <body> <div id="ant"> <div>螞蟻部落一</div> <div>螞蟻部落二</div><br/> <div class="ant">螞蟻部落三</div> <div class="ant">螞蟻部落四</div> </div> </body> </html>
程式碼執行效果截圖如下:
上面的textContent屬性的返回值表現可能會讓一些朋友疑惑,分析如下:
(1)."螞蟻部落一"上面的空白行是由於前面的換行導致的。
(2).div中的文字都單獨形成一行,都是由於換行的原因。
(3).<br>換行並沒有起到作用。
(4).雖然最後兩個div通過浮動,瀏覽器解析在一行顯示,但是標籤之間的換行仍然起作用。
通過上面的程式碼表現可以總結如如下結論:
(1).textContent獲取文字是直接量HTML標籤剝離,所以<br>換行不會起作用。
(2).\t、\r、\n與連續的空格效果會生效,雖然我們只演示了\n換行。
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let odiv=document.getElementById("ant"); let attrNode=odiv.getAttributeNode("web"); odiv.innerHTML=attrNode.textContent; } </script> </head> <body> <div id="ant" web="螞蟻部落"></div> </div> </body> </html>
程式碼執行效果截圖如下:
上面的這個例子是為了化解一個誤解,不要以為textContent屬性僅對元素節點有效。
對於屬性節點,註釋節點等都是有效的,比如可以返回<style>和<script>節點的文字內容。
也可以返回隱藏元素的文字內容,如果要返回document文件的文字內容,需要使用document.documentElement.textContent,而不是document.textContent。
相關文章
- innerText與textContent區別
- innerText 和 textContent 的區別?
- innerText和textContent的區別
- get_attribute ('textContent') 和 get_attribute ('value') 有什麼區別
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- javaScript系列[06]-javaScript和thisJavaScript
- [Javascript] How javascript read the property?JavaScript
- javaScript系列[05]-javaScript和JSONJavaScriptJSON
- “This” is For JavaScriptJavaScript
- This in JavaScriptJavaScript
- JavaScript -"this"JavaScript
- JavaScriptJavaScript
- javascript ??JavaScript
- 44 道 JavaScript 難題(JavaScript Puzzlers!)JavaScript
- [Javascript] Understanding JavaScript Proxies with Symbol.toPrimitiveJavaScriptSymbolMIT
- JavaScript 教程之JavaScript常用框架簡介JavaScript框架
- [Javascript] Perform Set Operations using JavaScript Set MethodsJavaScriptORM
- javascript — == vs ===JavaScript
- JavaScript selectedIndexJavaScriptIndex
- JavaScript deleteCell()JavaScriptdelete
- JavaScript lastElementChildJavaScriptAST
- JavaScript hasAttribute()JavaScript
- JavaScript getAttributeNode()JavaScript
- JavaScript replaceChild()JavaScript
- JavaScript remove()JavaScriptREM
- JavaScript appendChild()JavaScriptAPP
- JavaScript deleteRow()JavaScriptdelete
- JavaScript clientYJavaScriptclient
- JavaScript之thisJavaScript
- JavaScript isFinite()JavaScript
- JavaScript toggle()JavaScript
- JavaScript Boolean()JavaScriptBoolean
- JavaScript escape()JavaScript
- JavaScript parseFloat()JavaScript
- JavaScript unescape()JavaScript
- JavaScript call()JavaScript
- JavaScript bind()JavaScript
- JavaScript previousElementSiblingJavaScript