zoukankan      html  css  js  c++  java
  • DOM-DOMTree-查找

    1. 什么是DOM: Document Object Model

     专门操作网页内容的API

     js=ES+DOM+BOM

     DOM是由W3C指定的API标准

      为什么: 为了统一各个浏览器操作网页内容的API标准

        用DOM标准操作网页内容,几乎100%兼容

     能做什么: 增删改查,事件绑定

    2. DOM Tree:

     什么是: 内存中保存所有网页内容的树型结构

      为什么: 树型结构是最灵活,最直观保存层级关系的结构

     何时: 当浏览器读到一个网页文件时,会从上到下顺序读取文件中的内容(元素,属性,文本)

      并在内存中,构建树结构,保存网页中所有内容

      DOM只有唯一的一个根节点: document 指代整个网页

      网页中所有内容都是DOM树上的节点对象

       节点对象的公共父类型: Node

         三个公共属性:

          .nodeType: 节点类型:

           值是一个数字:

            1   element

            2   attribute

            3   text

            9   document

           何时: 区分节点的类型时

           问题: 无法进一步区分元素的名称

          .nodeName: 节点名

           值是一个字符串

            element  全大写标签名

            attribute  属性名

            text      #text

            document  #document

           何时: 只要精确区分元素的名称时

          .nodeValue: 节点值

           几乎不用:

            element  null

            attribute   属性值

            text      文本内容

            document  null

    3. 查找: 4种:

     1. 不需要查找就可直接获得的元素: 4种:

       document.documentElement     html

       document.head                head

       document.body                body

       document.forms[i/id]            form

     2. 按节点间关系查找:

      节点树: 包含所有网页内容的树结果

       2大类:

       1. 父子关系: 4个

        .parentNode  父节点  返回一个节点

        .childNodes   直接子节点  返回多个节点的类数组对象

        .firstChild     第一个直接子节点

        .lastChild     最后一个直接子节点

       2. 兄弟关系:

        .previousSibling 前一个兄弟

        .nextSibling 后一个兄弟

      问题: 受看不见的空字符的干扰

      解决: 元素树:

      元素树: 仅包含元素节点的树结构

       2大类:

       1. 父子关系: 4个

        .parentElement  父元素

        .children   直接子元素

        .firstElementChild     第一个直接子元素

        .lastElementChild     最后一个直接子元素

       2. 兄弟关系:

        .previousElementSibling 前一个兄弟元素

        .nextElementSibling 后一个兄弟元素

      说明: 元素树不是一棵新树,只是节点树的子集

           元素树有兼容性问题

     问题: 只能在先获得一个节点对象的情况下,找周围附近的节点

     解决: 用HTML特征查找

     3. 按HTML特征查找: 4种:

      1. 按id查找1个元素

       var elem=document.getElementById(id);

        强调: ById只能用document调用

      2. 按标签名查找多个元素:

       var elems=parent.getElementsByTagName(标签名)

        强调:可用任意父元素调用

             不仅查找直接子元素,且在所有后代中查找

      3. 按name属性查找多个元素:

       var elems=document.getElementsByName(name)

        强调: 只能用document调用

      4. 按class查找多个元素:

       var elems=parent.getElementsByClassName(class)

        强调: 可在任意父元素上调用

              只要一个class与之匹配,就选择该元素

      动态集合(live collection):

       什么是: 不实际存储数据,每次访问集合,都重新查找DOM树。

       为什么: 首次查找不必准备完整数据,就可快速返回

         缺点: 如果反复访问集合,会导致反复查找DOM树

       何时: childNodes, children, getElementsByXX()都返回动态集合

       不好的遍历: for(var i=0;i<children.length;i++)

       好的遍历: for(var i=0,len=children.length;i<len;i++)

  • 相关阅读:
    Linux sed命令实例详解
    hadoop2.0 和1.0的区别
    linux如何修改主机名
    hadoop主节点(NameNode)备份策略以及恢复方法
    Hadoop 添加删除数据节点(datanode)
    Hadoop常见错误及处理方法
    【转】ImageView.ScaleType属性
    MonoBehaviour.print和Debug.Log是同样的作用
    unity自带寻路Navmesh入门教程
    前向渲染路径细节 Forward Rendering Path Details
  • 原文地址:https://www.cnblogs.com/QiliPING9/p/9002446.html
Copyright © 2011-2022 走看看