Web 开发者可能会使用 jQuery .html() 和 .text() 方法来设置 DOM 内容,但他们的实现仍然依赖于 DOM API。 本文来梳理一下这些用来获取 DOM 内容的 DOM 属性(attribute), 比较它们的区别: innerHTML , outerHTML , innerText , outerText , text , textContent , 以及 jQuery 中 .html() 和 .text() 的实现。
outerHTML 和 innerHTML DOM 属性用来设置 DOM 的 HTML 内容。 其中 innerHTML 返回元素内容的 HTML 片段,而 outerHTML 返回的 HTML 片段则包括元素本身、以及元素内容的。 其中 innerH 常常用于清空元素内容。
document.body.innerHTML = '';
需要注意 innerHTMl 设置的脚本内容将不会被执行,参考 在 DOM 中动态插入并执行脚本 。
与 innerHTML , outerHTML 相同,inner 只会设置内容而 outer 会更改整个元素。 不同的是, innerText 与 outerText 则用来获取和设置渲染后的结果。 例如设置的 HTML 特殊字符会被转义,换行会被解析为
。例如:
document.body.innerText = 'header
\nparagraph'
的渲染结果为:
header
paragraph
利用 innerText 可以方便地进行 HTML 转义:
function escape(str){
var el = document.createElement('div');
el.innerText = str;
return el.innerHTML;
}
// 返回
escape('');
textContent 与 innerText 表现相似,但有一些细节不同: