JS之innerHTML,innerText,outerHTML,textContent的用法与区别
示例html代码:
<div id="test"> <span style="color:red">test1</span> test2 </div>
获得id为test的DOM对象,下面就不一一获取了。
var test = document.getElementById('test');
test.innerHTML
描述:也就是从对象的起始位置到终止位置的全部内容,包括Html标签。
上例中的test.innerHTML的值也就是“<span style="color:red">test1</span> test2 ”。
test.innerText
描述:从起始位置到终止位置的内容, 但它去除Html标签 。
上例中的test.innerText的值也就是“test1 test2”
, 其中span
标签去除了。
test.outerHTML
描述:除了包含innerHTML的全部内容外, 还包含对象标签本身。
上例中的test.outerHTML的值也就是<div id="test"><span style="color:red">test1</span> test2</div>
完整示例:
<div id="test"> <span style="color:red">test1</span> test2 </div> <a href="javascript:alert(test.innerHTML)">innerHTML内容</a> <a href="javascript:alert(test.innerText)">inerText内容</a> <a href="javascript:alert(test.outerHTML)">outerHTML内容</a>
结果:
//test.innerHTML结果:<span style="color:red">test1</span> test2 //test.innerText结果:test1 test2 //test.outerHTML结果:<div id="test"><span style="color:red">test1</span> test2</div>
test.textContent
描述:textContent 属性设置或返回指定节点的文本内容,以及它的所有后代。
提示:有时,此属性可用于取代 nodeValue 属性,但是请记住此属性同时会返回所有子节点的文本。
得到的结果跟innerText的结果是一样的。
注释:Internet Explorer 8 以及更早的版本不支持此属性。
兼容性
innerHTML
所有浏览器兼容;innerText
与outerHTML
虽然主流浏览器,如谷歌,火狐,IE7-IE11,QQ等都已支持(这里提到的谷歌火狐等都是最新浏览器的版本),但是W3C
的标准属性就是innerHTML
,因此,尽可能地去使用innerHTML
,而少用innerText
与outerHTML
。