建站学习网,专业提供各类建站教程,网页素材,SEO资讯等建站资源!

网站模板_网站源码_网站素材_建站教程_建站学习网

当前位置:建站学习网 > DIV+CSS教程 > 浏览器兼容 >

IE和FireFox中的childNodes区别

更新时间:2015-12-14整理编辑:建站学习网阅读:0
  Javascript中,相信大家都试过用getElementsByTagName和childNodes来实现对节点的遍历。但是 getElementsByTagName对复杂的DOM结构遍历明显不如用childNodes,因为childNodes能更好的处理DOM的层次结构,建议在需要进行了遍历时首先使用childNodes!!

  但是不幸的是,在IE和FireFox中childNodes有点细微的差别:
  <head>

  <script type="text/javascript">

  function view(){

  var childs1=$('FirstDiv').childNodes;

  var childs2=$('SecondDiv').childNodes;

  ;

  }

  var $=function(id)

  { return document.getElementById(id); }

  </script>

  </head>

  <html >

  <body onload="view();">

  <!--第一个遍历对象,节点之间留有空格和回车-->

  <div id="FirstDiv">

  <div>1</div>

  <div>2</div>

  <div>3</div>

  </div>

  <!--第二个遍历对象,除注释外,节点间无空格回车-->

  <div id="SecondDiv"><div>first</div><div>second</div><div>third</div></div>

  </html>

  用IE和Firefox运行会有两个不同的结果:IE的结果是3:3;而Firefox则是7:3。怎么会有这种情况呢?

  在结构上,对象1和对象2不同的是对象1的子节点间有回车或者空格,而对象2则是一行写到尾。大家都应该想到了吧,IE是将一个完整标签作为一个节点。而 Firefox除了上述的的情况外,也把一个标签的结束符“>“到下一个标签的起始符“<“之间的内容(除注释外,包括任何的文字、空格、回车、制表符)也算是一个节点了。而且这种节点也有它们自己独特的属性和值--nodeName="#text"。

  在实际运用中,Firefox在遍历子节点时,在for循环里不妨加上:

  if(childNode.nodeName=="#text") continue;

  或者nodeType == 1。

  这样,便跳过不需要的操作,使程序运行的更有效率。

  附:

  Node.ELEMENT_NODE == 1

  Node.ATTRIBUTE_NODE == 2

  Node.TEXT_NODE == 3

  Node.CDATA_SECTION_NODE == 4

  Node.ENTITY_REFERENCE_NODE == 5

  Node.ENTITY_NODE == 6

  Node.PROCESSING_INSTRUCTION_NODE == 7

  Node.COMMENT_NODE == 8

  Node.DOCUMENT_NODE == 9

  Node.DOCUMENT_TYPE_NODE == 10

  Node.DOCUMENT_FRAGMENT_NODE == 11

  Node.NOTATION_NODE == 12

  例

  var node = document.documentElement.firstChild;

  if(node.nodeType != Node.COMMENT_NODE)

  ;

本文网址:https://www.dedexuexi.com/divcss/llqjr/525.html

本站部分文章搜集与网络,如有侵权请联系本站,转载请说明出处。

收藏此文 赞一下!() 打赏本站

如本文对您有帮助,就请建站学习网抽根烟吧!

支付宝打赏
微信打赏
谷歌浏览器不支持小于12px的字体大小
« 上一篇2015年12月13日
IE不能主动识别UTF-8编码的问题
2015年12月13日下一篇 »
  • 兼容各浏览器:CSS定义PNG透明效果
    0阅读
    虽然有CSS有很多方法能实现PNG图片透明效果,但在各浏览器中的兼容效果却不好,小编找到了一个能兼容各浏览器用CSS定义PNG透明效果的方法,方法如下: style .mycls{ width: 48px; height: 48px; backg
  • 图片垂直居中css写法兼容ie6
    0阅读
    头胀胀的,看不下东西做不下事,那就写朵随笔吧。 图片垂直居中,原理应该就是,其实我也不知道。 手上两种方法,异曲同工,但是都兼容ie6的。 复制代码 代码如下: div class=imgBox img src=h
  • CSS兼容性问题 && CSS HACK
    0阅读
    以前做网页的时候,只考虑 IE6 和 FF 的兼容性,公司换了,要求也高了,FF和IE 6 7 8 要全兼容了, 碰到要单独Hack IE8的。当然,用注释非常方便,只要添加相应的注释就可以解决。但问题是,为
  • chrome表单自动填充导致input文本框背景变成偏黄色问题解决
    0阅读
    chrome表单自动填充后,input文本框的背景会变成偏黄色的,这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对其赋予以下样式: 复制代码 代码如下: input:-webkit-
  • 完美解决IE兼容模式问题
    0阅读
    IE浏览器从IE8开始添加了兼容模式,开启后会以低版本的IE进行渲染。兼容模式有可能会导致网页显示出问题,于是我们通常在HTML中添加下列代码来使 IE 使用固定的渲染模式: 复制代码 代码如
 
QQ在线咨询