问答详情
源自:9-8 访问子节点childNodes

输出结果怎么多了一个子节点个数?

<script type="text/javascript">
 var lists=document.getElementsByTagName("div");
   for(var i=0;i<lists.length;i++){
       var chi=lists[i].childNodes;
       document.write("子节点个数:"+chi.length+"<br>");
       document.write("子节点类型:"+chi[i].nodeType+"<br>");
   }

输出结果:

子节点个数:7
子节点类型:3
子节点个数:1

是把里面的div也计算一次吗?

提问者:魔铃咔咔 2017-03-03 14:05

个回答

  • 慕粉1440489053
    2017-03-28 04:50:51

    3个元素节点+4个换行符 所以是七个

  • Dva_Come_to_web
    2017-03-04 00:10:30

    你肯定有两个div吧。其实你这个循环写的挺乱的,例如:

    <div id="1">7个子节点...<div> 空白也算子节点</div></div>

    那个getElementByTagName确实会把两个div都算进去。不过你后面那个chi[i]又是完全搞错了想要处理的对象

  • 魔铃咔咔
    2017-03-03 14:23:37

    我用的是火狐,我预想的输出结果是:子节点个数:7  子节点类型:3

    但实际上还多了一个:子节点个数:1

    没明白这个

  • 学习js
    2017-03-03 14:18:49

    注意:

    1. IE全系列、firefox、chrome、opera、safari兼容问题

    2. 节点之间的空白符,在firefox、chrome、opera、safari浏览器是文本节点,所以IE是3,其它浏览器是7

    课程左边写的很清楚啊,你可以看看