有两个文件,一个HTML,一个JS
HTML简化如下:
<html
<body>
  <img id="placeholder" src="images/placeholder.gif" alt="my image gallery" />
  <script type="text/javascript">
    window.onload=countBodyChildren;
  </script>
</body>
</html>JS如下:
function countBodyChildren() {
var body_element = document.getElementsByTagName("body")[0];
alert (body_element.childNodes.length);
}
弹出窗口的内容是3,删除img标签的话,结果是1,也就是说img等于两个object。想不通这是什么原因,有知道的大大请指点一下,不胜感激!

解决方案 »

  1.   

    可以在多种浏览器下测试看看,结果可能不一样
    1 要看最终浏览器生成的DOM
    2 回车等空字符也作为文本节点
    3 浏览器会根据情况自动插入空的文本节点 可调用firebug 或开发者工具查看DOM结构
    4 保险点的做法是判断节点类型nodeType
      

  2.   

    <html>
    <body>
      <img id="placeholder" src="images/placeholder.gif" alt="my image gallery" />
      <script type="text/javascript">
      function countBodyChildren() {
    var body_element = document.getElementsByTagName("body")[0].childNodes;
       for(var i = 0 ; i < body_element.length ; i ++)
       {
         alert(body_element[i].nodeName)
       }
    }  window.onload=countBodyChildren;
      </script>
    </body>
    </html>
    看一下就知道了
      

  3.   

    这个问题的详细解答你可以看看JQUERY之父写的"精通javascript"一书的第五章DOM 64页..里面做了详细的解答。。
    网上有下的..我可不是卖书的 呵呵!
      

  4.   

    测试和思考的还不全面呢
    1)为什么不是script 等于2个object呢?
    2)吧 img 和 script删除了 比如吧他们变成空格  那么body 还有几个子节点呢?