zoukankan      html  css  js  c++  java
  • JavaScript 之 节点操作

    一、文档树结构

       DOM 可以将任何 HTML 或 XML 描绘成一个由多层节点构成的结构。

       节点(Node)构成 HTML 文档最基本的的单元。

       节点分为不同的类型,每种类型分别表示文档中不同的信息。每个节点都拥有各自的特点、数据和方法,另外也与其他节点存在某种关系。

       节点之间的关系构成了层次,而所有页面标记则表现为一个以特定节点为根节点的树形结构。

       节点类型:文档节点、元素节点、属性节点、文本节点、注释节点

        整个文档是一个文档节点

        每个HTML元素是元素节点

        每个HTML元素是属性节点

        HTML元素内的文本是文本节点

        注释是注释节点

       文档树:

    二、节点层级

       节点层级:

              

         

       节点层次常用方法

    parentNode: 获取当前元素的父节点(只有一个)
    childNodes: 获取当前元素的所有子节点(有多个)
    children:      获取当前元素的子元素节点
    firstChild :     获取第一个子节点
    lastChild:       获取最后一个子节点
    nextSibling:   获取下一个兄弟节点
    previousSibling: 获取上一个兄弟节点
    nextElementSibling: 获取下一个兄弟元素节点
    previousElementSibling: 获取上一个兄弟元素节点
    

        注意

        nextElementSibling和previousElementSibling有兼容性问题,IE9 以后才支持

        firstElementChild 和 lastElementChild 有兼容性问题,IE9 以后才支持

        处理浏览器兼容性:

     1 // 处理浏览器兼容性
     2 // 获取第一个子元素
     3 function getFirstElementChild(element) {
     4     var node, nodes = element.childNodes, i = 0;
     5     while (node = nodes[i++]) {
     6         if (node.nodeType === 1) {
     7             return node;
     8         }
     9     }
    10     return null;
    11 }
    12 
    13 // 处理浏览器兼容性
    14 // 获取下一个兄弟元素
    15  function getNextElementSibling(element) {
    16     var el = element;
    17     while (el = el.nextSibling) {
    18       if (el.nodeType === 1) {
    19           return el;
    20       }
    21     }
    22     return null;
    23   }

       节点操作常用方法

    appendChild()
    insertBefore()
    removeChild()
    replaceChild()
    

      

    三、节点属性

      1、nodeType 节点类型属性

        返回一个整数,这个数值代表这给定节点的类型,只读类型。

      •  1  代表  元素节点
      •    2  代表  属性节点
      •    3  代表  文本节点

      2、nodeName 节点名称属性(标签名称)

        代表当前节点的名字,只读属性。如果给定节点是一个文本节点,nodeName 属性将返回内容为 #text 的字符串。

      3、nodevalue 节点值

           返回给定节点的当前值(字符串),可读写的属性

          (1)元素节点的 nodeValue 始终是 null

          (2)属性节点:返回值是这个属性的值

          (3)文本节点:返回值是这个文本节点的内容

      

     四、节点操作

      1、DOM查询

    功能

    API

    返回值

    ●在整个文档范围内查询元素节点

    根据id值查询

    document.getElementById(“id值”)

    一个具体的元素节点

    根据标签名查询

    document.getElementsByTagName(“标签名”)

    元素节点数组

    根据name属性值查询

    document.getElementsByName(“name值”)

    元素节点数组

     

    ●在具体元素节点范围内查找子节点

    查找全部子节点

    element.childNodes【W3C考虑换行,IE≤8不考虑】

    节点数组

    查找第一个子节点

    element.firstChild【W3C考虑换行,IE≤8不考虑】

    节点对象

    查找最后一个子节点

    element.lastChild【W3C考虑换行,IE≤8不考虑】

    节点对象

    查找指定标签名的子节点

    element.getElementsByTagName(“标签名”)

    元素节点数组

     

    ●查找指定元素节点的父节点:element.parentNode

     

    ●查找指定元素节点的兄弟节点

    查找前一个兄弟节点

    node.previousSibling【W3C考虑换行,IE≤8不考虑】

    节点对象

    查找后一个兄弟节点

    node.nextSibling【W3C考虑换行,IE≤8不考虑】

    节点对象

      2、DOM 增删改

    API

    功能

    document.createElement(“标签名”)

    创建元素节点并返回,但不会自动添加到文档中

    document.createTextNode(“文本值”)

    创建文本节点并返回,但不会自动添加到文档中

     

    element.appendChild(ele)

    将ele添加到element所有子节点后面

    parentEle.insertBefore(newEle,targetEle)

    将newEle插入到targetEle前面

     

     

    parentEle.replaceChild(newEle, oldEle)

    用新节点替换原有的旧子节点

    parentEle.removeChild(childNode)

    删除指定的子节点

     

     

    element.innerHTML

    读写HTML代码

  • 相关阅读:
    HTB-靶机-Charon
    第一篇Active Directory疑难解答概述(1)
    Outlook Web App 客户端超时设置
    【Troubleshooting Case】Exchange Server 组件状态应用排错?
    【Troubleshooting Case】Unable to delete Exchange database?
    Exchange Server 2007的即将生命周期,您的计划是?
    "the hypervisor is not running" 故障
    Exchange 2016 体系结构
    USB PE
    10 months then free? 10个月,然后自由
  • 原文地址:https://www.cnblogs.com/niujifei/p/11433116.html
Copyright © 2011-2022 走看看