zoukankan      html  css  js  c++  java
  • 兼容IE与FF的childNodes问题(ff childNodes)

    js操作document时,试图使用childNodes取得Div节点的Div子节点,IE浏览器中没有任何问题,
    FF浏览器会将TEXT_NODE类型的节点同样计入子节点,这样就会操作到错误的对象。

    解决方法一般有两种,
    一种是使用nodenodeType属性判断结点的类型,然后进行操作。
    这种方法意味着,使用var childnodelist=document.getElementById("mydiv").childNodes;得到的 childnodelist在两个浏览器下并不是相同的list,而这种方法是通过nodeType对该列表进行了筛选,过滤出ELEMENT_NODE 类型的节点,然后进行操作。
    另一种方法,则是不使用childNodes来实现该功能,可以使用var childnodelist=document.getElementById("mydiv").getElementsByTagName("div"); 这种方法,直接会取得Div下的div类型的标签。在两种浏览器下,这种方法得到的list是相同的。

    比较:使用第一种方法,借助了nodeType属性来完成该操作,表现在js代码上是if...else...筛选目标,第二种方法借助标签得到了该子节点,表现在js代码上,会有childnodelist[i*n+j]取得子节点。

    节点类型指定常量

    NodeType
    节点类型

    Named Constant
    指定常量

    1

    ELEMENT_NODE

    2

    ATTRIBUTE_NODE

    3

    TEXT_NODE

    4

    CDATA_SECTION_NODE

    5

    ENTITY_REFERENCE_NODE

    6

    ENTITY_NODE

    7

    PROCESSING_INSTRUCTION_NODE

    8

    COMMENT_NODE

    9

    DOCUMENT_NODE

    10

    DOCUMENT_TYPE_NODE

    11

    DOCUMENT_FRAGMENT_NODE

    12

    NOTATION_NODE

    ff下不支持 getElementById("xx").MMM的属性取值,因此要用getAttribute来替代。

    =========================================

    可以在循环中添加if(obj.nodeType==3){continue;}else{do something...}来兼容

  • 相关阅读:
    JavaScript判断移动端及pc端访问不同的网站
    详情点击文字展开,再点击隐藏
    让IE6/IE7/IE8浏览器支持CSS3属性
    随机输入两位数,并将其交换位置输出
    100-999的水仙花数
    C++读取文件
    求n项阶乘之和并求出和的后六位
    n的阶乘
    3*n+1问题
    完全平方数的判断
  • 原文地址:https://www.cnblogs.com/yuzhongwusan/p/1905271.html
Copyright © 2011-2022 走看看