2012-02-27 3 views
0

javascriptを使用してHTMLドキュメントから「プレーン」テキスト値を含むHTMLコンテンツ要素をすべて取得する可能性はありますか?例えばjavascriptを使用してHTMLドキュメントから「プレーン」テキスト値を含むHTMLコンテンツ要素をすべて取得する可能性はありますか?

<html> 
    <body> 
     <div> 
      Text1 
      <p> 
       Text2 
      </p> 
     </div> 
    </body> 
</html> 

私は[テキスト1]と[テキスト2]を取得したいです。

答えて

4

確かに、あなたは、単にDOMノードを反復処理することができます。

function getTextNodes(node) { 
    var result = []; 
    for(var child = node.firstChild; child; child = child.nextSibling) { 
     if(child.nodeType === 3) { // text node 
      result.push(child); 
     } 
     else if(child.nodeType === 1) { // element node 
      result = result.concat(getTextNodes(child)); 
     } 
    } 
    return result; 
} 

var textNodes = getTextNodes(document.body); 

これは再帰的なアプローチで、あなたはまた、最初にすべての要素ノードを選択し、自分の子テキストノードを取得することができます。

おそらく、空白を含むテキストノードだけを除外したい場合もあります。

DEMO

関連する問題