程序开发 > 正文

实例比较childNode在ie和ff中的异同

亮术网 2013-04-27 本网原创

  childNode 在 ie 和 firefox 中有着不同的处理方式,ie 只会把 html 标签算作孩子结点,而 firefox 除了把 html 标签算作孩子结点外,还会把“文字、空格、换行符和制表符”算作孩子结点,也有属性和值(nodeName = "#text")。实例如下:

  <ul id="test1">
   <li>网页打不开</li>
   <li>ie网页打不开</li>
   <li>safari网页打不开</li>
    <li>360网页打不开</li>
    <li>火狐网页打不开</li>
  </ul>

  <ul id="test2"><li>网页打不开</li><li>ie网页打不开</li><li>safari网页打不开</li><li>360网页打不开</li><li>火狐网页打不开</li></ul>

  <script type="text/javascript">
   function showChildNodes(){
    var t1 = document.getElementById("test1").childNodes;
    var t2 = document.getElementById("test2").childNodes;

    alert("test1 的孩子结点数: " + t1.length + ";test2 的孩子结点数: " + t2.length);
   }
   showChildNodes();
  </script>

  运行结果显示:

  test1 和 test2 ie显示都是5个孩子结点;

  而 firefox 不同,test1 有 11 个孩子结点,test2 有 5 个孩子结点。

  上面说了,firefox 把换行符也算作孩子结点,test1 有6个换行符,所示加起来是11个孩子结点;而 test2 除了 html 标签(<li>)外什么也没有,所以只有5个孩子结点。

  值得注意的是:注释(<!--说明文字-->)不是 firefox 的孩子结点。

 

  在编写遍历 childNode 程序过程中,通常要加上

  if(childNode.nodeName == "#text") continue; 或者 nodeType == 1。

  排除不是 html 标签的结点,以保证 javascript 程序在 firefox 也能正常运行。

本文浓缩标签:实例比较childNode异同