<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>
<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>
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;
}
<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不同是因为你的标签嵌套写的不正确,不同的浏览器容错机制不一样。
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>