在DOM操做中,咱们若是要获取和修改节点的的文本,就离不开textContent
或innerText
属性。其中textContent
做为标准方法,但无奈要IE8+;而innerText
属性最近也被火狐支持了,已经成了不是标准的标准(参考)。也就是说,若是只考虑最新浏览器的话这两个方法都是能够使用的,那他们到底使用时有何不一样呢?先上代码:javascript
<div id="test" class="test">test<div style="display:none"><span>test</span></div><style>hi</style></div> <script type="text/javascript"> var testDiv = document.getElementById('test'); console.log(testDiv.textContent); console.log(testDiv.innerText); </script>
运行上述代码,结果为:html
可看到存在两个差别:java
textContent
会获取style
元素里的文本(如有script
元素也是这样),而innerText
不会浏览器
textContent
会获取display:none
的节点的文本;而innerText
好像会感知到节点是否呈现同样,不做返回spa
也就是说,textContent
可以获取元素的全部子节点上的文本,无论这个节点是否呈现;而innerText
只返回呈现到页面上的文本。code
固然,除了获取文本,这两个元素也能够设置元素的文本内容,不过要注意设置文本时被替换的可不仅是文本了;这时,两个属性做用至关于innerHTML
属性,会把指定节点下的全部子节点也一并替换掉。htm