<body>
<div ID="hh"><a>1234</a><input value="sd"><b>3</b><li>wer</li><span>dsf</span><div>cvd</div><dd>4</dd></div>
<div id="jj">ddddd</div>
</body>
<script>
var qq = document.getElementById("hh");
var gg =qq.childNodes.length;
alert(gg)
</script>
</html>

解决方案 »

  1.   


             function children(dom){
    var children = dom.children||dom.childNodes,
    res = [];
    for(var i=0,j=children.length;i<j;i++)
    if(children[i].nodeType==1)res.push(children[i]);
    return res;
    }
      

  2.   

    你这里问题的主要原因是跟没有正确使用li有关,猜想可能是IE内部实现机制的原因。按规则正确使用,就兼容
      

  3.   

    最神奇的是 ie下 将 li标签 自动作为<span>dsf</span><div>cvd</div><dd>4</dd> 父节点了;藐视这个问题我没有遇见过
      

  4.   

    最近蹭分越来越难了...<!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <div ID="hh"><a>1234</a><input value="sd"><b>3</b><li>wer</li><span>dsf</span><div>cvd</div><dd>4</dd></div>
    <div id="jj">ddddd</div>
    <script>
    function children(dom){
    var children = dom.children||dom.childNodes,
    res = [];
    for(var i=0,j=children.length;i<j;i++)
    if(children[i].nodeType==1)res.push(children[i]);
    return res;
    };
    var qq = document.getElementById("hh");
    var gg = children(qq).length;
    alert(gg)
    </script>
    </body>
    </html>上面的children函数只是过滤掉Firefox的childNodes里面不是DOM元素的节点,至于IE6和IE8下length不同是因为你的标签嵌套写的不正确,不同的浏览器容错机制不一样。
      

  5.   

    跟li标签有关。楼主可以在IE中,弹出hh标签的HTML代码。可以看到是这样的,如:<script>
    var qq = document.getElementById("hh");
    alert(qq.innerHTML);//看看效果</script>运行以上代码后,发现在IE和火狐中处理方式不一样。注意看li结束标签
    IE里面是这样的:
    <a>1234</a>
    <input value="sd" />
    <b>3</b>
    <li>wer<span>dsf</span>
    <div>cvd</div>
    <dd>4</dd>
    </li>firefox中是这样的:
    <a>1234</a>
    <input value="sd" />
    <b>3</b>
    <li>wer</li>
    <span>dsf</span>
    <div>cvd</div>
    <dd>4</dd>
      

  6.   

    http://www.w3school.com.cn/xml/index.asp,楼主看完关于XML部分的话,就知道是怎么回事了