テキストノードの値を取得/変更する方法はたくさんあります。
- それは、XULだけのものではありません
textnode.value
textContent
[ mdn ]はIE9までサポートされていませんdata
、インターフェースText
から継承CharacterData
nodeValue
[ mdn ]Node
インターフェースから
私は使う傾向があります.data
。それらのどれが推奨されます-それらはすべて同じを返しますか?
テキストノードの値を取得/変更する方法はたくさんあります。
textnode.value
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 +のみであり、少し遅くなります。