下面的示例引用以下HTML代码段:
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
以下JavaScript将引用该节点:
var x = document.getElementById('test');
element.innerHTML
设置或获取描述元素后代的HTML语法
x.innerHTML
// => "
// => Warning: This element contains <code>code</code> and <strong>strong language</strong>.
// => "
这是W3C的DOM解析和序列化规范的一部分。请注意,这是Element
对象的属性。
node.innerText
设置或获取对象的开始和结束标签之间的文本
x.innerText
// => "Warning: This element contains code and strong language."
innerText
是由Microsoft引入的,Firefox暂时不支持它。在2016年八月,innerText
是通过了WHATWG,并加入到Firefox中的V45。
innerText
为您提供样式感知的文本表示,试图与浏览器呈现的内容匹配,这意味着:
innerText
适用text-transform
和white-space
规则
innerText
修剪线条之间的空白并在项目之间添加换行符
innerText
将不返回不可见项的文本
innerText
将返回textContent
从未像<style />
和一样呈现的元素
Node
元素属性
node.textContent
获取或设置节点及其后代的文本内容。
x.textContent
// => "
// => Warning: This element contains code and strong language.
// => "
虽然这是W3C标准,但IE <9不支持。
- 不了解样式,因此将返回CSS隐藏的内容
- 不触发重排(因此性能更高)
Node
元素属性
node.value
这取决于您所针对的元素。对于上面的示例,x
返回一个HTMLDivElement对象,该对象value
未定义属性。
x.value // => null
<input />
例如,输入标签()确实定义了一个value
属性,该属性引用了“控件中的当前值”。
<input id="example-input" type="text" value="default" />
<script>
document.getElementById('example-input').value //=> "default"
// User changes input to "something"
document.getElementById('example-input').value //=> "something"
</script>
从文档:
注意:对于某些输入类型,返回的值可能与用户输入的值不匹配。例如,如果用户在中输入了非数字值<input type="number">
,则返回的值可能是空字符串。
样例脚本
这是一个示例,显示了上面显示的HTML的输出:
var properties = ['innerHTML', 'innerText', 'textContent', 'value'];
// Writes to textarea#output and console
function log(obj) {
console.log(obj);
var currValue = document.getElementById('output').value;
document.getElementById('output').value = (currValue ? currValue + '\n' : '') + obj;
}
// Logs property as [propName]value[/propertyName]
function logProperty(obj, property) {
var value = obj[property];
log('[' + property + ']' + value + '[/' + property + ']');
}
// Main
log('=============== ' + properties.join(' ') + ' ===============');
for (var i = 0; i < properties.length; i++) {
logProperty(document.getElementById('test'), properties[i]);
}
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
<textarea id="output" rows="12" cols="80" style="font-family: monospace;"></textarea>
innerText
MSIE的textContext的非标准实现的区别并不容易。