设置/获取textNode值的方法

时间:2012-06-04 22:21:45

标签: javascript dom textnode

有许多方法可以检索/更改文本节点的值:

我倾向于使用.data。推荐哪一个 - 它们都返回相同的颜色?

1 个答案:

答案 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 +而且有点慢。