有许多方法可以检索/更改文本节点的值:
textnode.value
,XUL - 唯一textContent
[mdn]
data
,由Text
接口CharacterData
继承
来自Node
界面的nodeValue
[mdn] 我倾向于使用.data
。推荐哪一个 - 它们都返回相同的颜色?
答案 0 :(得分:1)
如果您有TEXT_NODE [type 3],textContent将返回nodeValue(MDN):
如果节点是CDATA部分,注释,处理指令, 或者是一个文本节点,textContent返回此节点内的文本( 的nodeValue)。
CharacterData与文本节点(MDN)的nodeValue相同。
Text,Comment和CDATASection都实现了CharacterData,它位于 turn也实现了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 +而且有点慢。