过滤掉某个节点,则该节点下的所有子节点都被过滤掉,如下代码,但是,我的页面怎么运行不出效果呢?提示NodeFilter未定义。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>遍历DOM—NodeIterator</title>
<script type="text/javascript">
//
var iterator=null;
function makeList()
{
var oDiv=document.getElementById("div1");
var oFilter=new Object;
oFilter.acceptNode=function(oNode){
return (oNode.tagName=="p")?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT;
};
iterator=document.createNodeIterator(oDiv,NodeFilter.SHOW_ELEMENT,oFilter,false);
var oOutPut=document.getElementById("text1");
var oNode=iterator.nextNode();
while(oNode){
oOutPut.value+=oNode.tagName+"\n";
oNode=iterator.nextNode();
}
alert("asdf");
return;
}
</script>
</head><body>
<div id="div1">
<p>Hello <b>World</b></p>
<ul>
<li>List Item 1
</li>
<li>List Item 2
</li>
<li>List Item 3
</li>
</ul>
</div>
  <textarea name="textarea" cols="40" rows="10" id="text1"></textarea><br/>
  <input id="BtnMakeList" type="button" value="Make List" onclick="makeList()"/></body>
</html>
请大侠们及时指教。谢谢了。

解决方案 »

  1.   

    以上代码要在firefox下运行才正确,IE不支持NodeFilter
      

  2.   

    <html>
    <head>
    <title>Are you a man?</title>
    <style type="text/css">
    html
    {
     background-color:lightblue;
    }.content
    {
     background-color:white;
     padding:10px;
    height: 100px;
     width 200px;
    font: Arial 10px ;
    float : top;
    }
    </style><script type="text/javascript">
    var  iterator=null;
    function makeList()
    {
     var oDiv=document.getElementById("div1");
    var oFilter=new Object;
    oFilter.acceptNode=function(oNode)
    {
      return (oNode.tagName=="p")?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT;
    };
    iterator=document.createNodeIterator(oDiv,NodeFilter.SHOW_ELEMENT,oFilter,false);var oOutput=document.getElementById("text1");
    var oNode=iterator.nextNode();
    while(oNode)
    {
     oOutput.value+=oNode.tagName+"\n";
    oNode=iterator.nextNode(); 
    }
    }</script>
    </head>
    <body>
    <div id="div1" class="content">
    <p>Hello <b>World!</b></p>
    <ul>
                    <li>List item 1</li>
                       <li>List itme 2</li>
                      <li>List itme 3</li>
    </ul>
    <textarea row="10" cols="40" id="text1"></textarea><br />
    <input type="button" value="Make List" onclick="makeList()" />
    </body>
    </html>
    这个程序显然没有什么错 但在ie和firefox中都没有什么效果  无语啊