有很多方法可以检索/更改文本节点的值:
- 不是
textnode.value
,只有XUL的东西 textContent
[ mdn ]在 IE9 之前不支持data
, 继承Text
自CharacterData
接口nodeValue
[ mdn ]从Node
界面
我倾向于使用.data
. 推荐它们中的哪一个 - 它们都返回相同的值?
有很多方法可以检索/更改文本节点的值:
textnode.value
,只有XUL的东西textContent
[ mdn ]在 IE9 之前不支持data
, 继承Text
自CharacterData
接口nodeValue
[ mdn ]从Node
界面我倾向于使用.data
. 推荐它们中的哪一个 - 它们都返回相同的值?
如果您有 TEXT_NODE [type 3] textContent 将返回 nodeValue ( MDN ):
如果节点是 CDATA 节、注释、处理指令或文本节点,则 textContent 返回此节点内的文本(nodeValue)。
CharacterData 与文本节点 ( MDN )的 nodeValue 相同。
Text、Comment 和 CDATASection 都实现了 CharacterData,而 CharacterData 又实现了 Node。
对于文本节点,它们是相同的。
jQuery (Sizzle) 使用 nodeValue:
/**
* Utility function for retreiving the text value of an array of DOM nodes
* @param {Array|Element} elem
*/
var getText = Sizzle.getText = function( elem ) {
...
if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
// Use textContent || innerText for elements
if ( typeof elem.textContent === 'string' ) {
return elem.textContent;
} else if ( typeof elem.innerText === 'string' ) {
// Replace IE's carriage returns
return elem.innerText.replace( rReturn, '' );
}
...
// TEXT_NODE
} else if ( nodeType === 3 || nodeType === 4 ) {
return elem.nodeValue;
}
return ret;
};
所以使用数据很好,但 textContent 仅是 IE9+ 并且有点慢。