用dom来不是很方便么。顶高手用正则表达式。

解决方案 »

  1.   

    <script>
    str="<html> <body> <div><div>first</div></div><div>2</div> <div>last</div> </body> </html>";
    var re = new RegExp("<div>[^<]*</div>","ig");var a = str.match(re);
    for ( i=0; i<a.length; i++) {
    alert(a[i]);
    }
    </script>
      

  2.   

    这个问题用DOM才最简单, 用正则实现起来非常麻烦, PS: 楼上的这位兄弟, 你的正则不够严格!!
      

  3.   

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var str = "<html> <body> <div><div>first</div></div> <div>last</div> </body> </html>";
    document.write("<iframe name=mm frameborder=0 height=0 width=0></iframe>");
    mm.document.write(str);
    var nodes = window.frames["mm"].document.body.childNodes;
    var result = new Array();
    for(var i=0; i<nodes.length; i++)
    {
      if(nodes[i].tagName=="DIV") 
        result[result.length] = nodes[i].innerHTML;
    }
    alert(result);
    //-->
    </SCRIPT>
      

  4.   

    re meizz(梅花雪):呵呵,这位兄弟写代码,真是严谨呀。不过这样老的很快呀。PS:这样写是执行速度上会更慢,尤其是页面内容多的时候。
      

  5.   

    re meizz(梅花雪):还是不严格,当iframe页面没有加载完毕的时候呢?
      

  6.   

    用XML分析也比正则强呀!!<SCRIPT LANGUAGE="JavaScript">
    var x=new ActiveXObject("Microsoft.XMLDOM")
    x.loadXML('<html> <body> <div><div>first</div></div> <div>last</div> </body> </html>');
    node=x.selectNodes("/html/body/div");
    var result = new Array();
    for(var i=0; i<node.length; i++)
    {
      result[i] = "";
      for(var k=0; k<node[i].childNodes.length; k++)
      {
        result[i] += node[i].childNodes[k].xml;
      }
    }
    alert(result);
    </SCRIPT>
      

  7.   

    用正则要麻烦的多,用XML简单的多了。
      

  8.   

    xml分析需要满足XML的格式,即严格的标签闭合,现在很多人写HTML还达不到XHTML 1.0Transitional的标准,XML分析会出问题的。