javascript的childNodes函数在firefox和ie下不一致的解决方法
在JavaScript中,使用childNodes属性可以返回一个数组,这个数组包含给定元素节点的全体子节点,在下面的例子里面我们想要获得一个div下面的所有子div元素的个数:
html代码如下:
<div id="father">
1
2
3
获取子div并alert出子div数量的js代码:
结果发现在ie下面能正确得到3,在firefox下面却得到的是7,而且在ie9下面得到的也和firefox一样为7.
先来看解决办法,将代码改为:
这样子就正确了。
造成这样的原因是 IE是将一个完整标签作为一个节点。而Firefox除了上述的的情况外,也把一个标签的结束符“>”到下一个标签的起始符“<”之间的内容(除注释外,包括任何的文字、空格、回 车、制表符)也算是一个节点了。而且这种节点也有它们自己独特的属性和值--nodeName="#text"。在新版本的ie里面也和firefox的解析是一样的了,说明firefox这样解析是有一定根据的。
其实假如我们把刚刚的html代码改成
1
2
3