<script type="text/javascript">
  //<![CDATA[
onload=function(){
var node1;
if (document.layers){
  node1 = document.layers["Layer1"].childNodes;
} else if (document.all){
  node1 = document.all["Layer1"].childNodes;
} else if (document.getElementById){
  node1 = document.getElementById("Layer1").childNodes;
}
var cnt=0;
for (var i=0; i<node1.length; i++){
//alert(node1[i].nodeType);
node1[i].nodeType==3?"":++cnt;
}
alert(cnt)
//alert(node1.length);
}
  //]]>
  </script>
  <body id="www.never-online.net">
<div id="Layer1">
<div id="Layer1_1" ></div>
<div id="Layer1_2" ></div>
</div>
  </body>

解决方案 »

  1.   

    上面的代码可以把nodeType也打印出来看结果再看下面的代码,用removeChild把空白节点和文本节点去掉。var notspace = /\S/;
    cleanWhitespace = function(node){
      for (var x=0; x<node.childNodes.length; x++) {
        var child = node.childNodes[x];
        //if it's a whitespace text node
        if ((child.nodeType == 3) && (!notspace.test(child.nodeValue)))  {
          node.removeChild(node.childNodes[x]);
          //node.childNodes[x].removeNode();
          x--;
        }
        //elements can have text child nodes of their own
        if(child.nodeType == 1) {
          cleanWhitespace(child);
        }
      }
    }
    onload=function(){
    var node1;
    if (document.layers){
      node1 = document.layers["Layer1"].childNodes;
    } else if (document.all){
      node1 = document.all["Layer1"].childNodes;
    } else if (document.getElementById){
      node1 = document.getElementById("Layer1").childNodes;
    }
    var cnt=0;
    cleanWhitespace(document.getElementById("Layer1"))
    alert(node1.length);
    }
      //]]>
      </script>
      

  2.   

    果然是回车换行的问题,不过在写代码的时候为了格式,回车换行还是必要的;
    像BlueDestiny 这样写代码(node1[i].nodeType==3?"":++cnt;)也可以检测出来
    谢谢楼上的两位
      

  3.   

    贴一个nodeType给你ELEMENT_NODE                   = 1;
     
    ATTRIBUTE_NODE                 = 2;
     
    TEXT_NODE                      = 3;
     
    CDATA_SECTION_NODE             = 4;
     
    ENTITY_REFERENCE_NODE          = 5;
     
    ENTITY_NODE                    = 6;
     
    PROCESSING_INSTRUCTION_NODE    = 7;
     
    COMMENT_NODE                   = 8;
     
    DOCUMENT_NODE                  = 9;
     
    DOCUMENT_TYPE_NODE             = 10;
     
    DOCUMENT_FRAGMENT_NODE         = 11;
     
    NOTATION_NODE                  = 12;