3

テキストノードの値を取得/変更する方法はたくさんあります。

  • それは、XULだけのものではありません textnode.value
  • textContent[ mdn ]はIE9までサポートされていません
  • data、インターフェースTextから継承CharacterData
  • nodeValue[ mdn ]Nodeインターフェースから

私は使う傾向があります.data。それらのどれが推奨されます-それらはすべて同じを返しますか?

4

1 に答える 1

1

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 +のみであり、少し遅くなります。

于 2012-06-04T23:33:36.973 に答える