2010-12-06 8 views

答えて

2

以下は、あなたにマッチする要素内に含まれているすべてのテキストノードを取得します:

function getTextNodes(root, tagNamesArray) { 
    var textNodes = []; 
    var regex = new RegExp("^(" + tagNamesArray.join("|") + ")$", "i"); 
    var insideMatchingElement = false; 

    function getNodes(node, insideMatchingElement) { 
     if (node.nodeType == 3 && insideMatchingElement) { 
      textNodes.push(node); 
     } else if (node.nodeType == 1) { 
      var childrenInsideMatchingElement = insideMatchingElement || regex.test(node.nodeName); 
      for (var child = node.firstChild; child; child = child.nextSibling) { 
       getNodes(child, childrenInsideMatchingElement); 
      } 
     } 
    } 

    getNodes(root); 
    return textNodes; 
} 

var textNodes = getTextNodes(document.body, ["blockquote","em","h4","h6","p"]); 
+0

ありがとうTim ....まさに私が必要とした.. :) –

0

使用jQueryの

$('blockquote,em,h4,h6,p').each(function(i, v) { alert(v); }) 

UPDATE、要素のテキストを取得する

$('blockquote,em,h4,h6,p').each(function(i, v) { alert(v.text()); }) 
+0

返すこと要素、テキストノードではありません –

関連する問題