<div id="divid" >
 
<!--sdfdf-->
</div>var nodes=document.getElementsByTagName("divid");
                       for(var i=0;i<nodes.length;i++)
{
  if(nodes[i].nodeType!=Node.ELEMENT_NODE)
{
obj.removeChild(nodes[i]); 

}
                  return nodes;为什么不能把注释节点删掉的呀??求解···

解决方案 »

  1.   

    <!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=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <div id="divid">
     
    <!--sdfdf-->
    </div><script type="text/javascript">
    var nodes = document.getElementById('divid');
    for (var i = 0; i < nodes.childNodes.length; i ++) {
    if (nodes.childNodes[i].nodeType == 8) nodes.removeChild(nodes.childNodes[i]);
    }
    alert(nodes.childNodes);
    </script>
    </body>
    </html>
      

  2.   

    删不掉是因为你的循环方式有问题.
    div有3个子节点,分别是空文本节点、注释节点、空文本节点。
    for(var i=0;i<nodes.length;i++)
    这样的循环,你删第1个子节点之后,nodes.length==2,i==1,这时nodes[0]是注释,nodes[1]是最后的空文本节点,因为i是1,所以跳过注释删了最后的空文本节点。
    正确的做法是从后往前循环。var nodes=document.getElementsByTagName("divid").childNodes;
    for(var i=nodes.length-1;i>=0;i--)
    {
         if(nodes[i].nodeType!=Node.ELEMENT_NODE)
         {    
           obj.removeChild(nodes[i]); 
         } 
    }
    return nodes;