• 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代码

  • 相关阅读:
    使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)又可以正常执行,
    解决RABBITMQ ADMIN账号登陆失败的问题
    Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.
    git 删除远端分支,本地新创建分支推到远程或者 拉取远程分支并创建本地分支
    细品 Spring Boot+Thymeleaf,还有这么多好玩的细节!
    Spring Boot 日志各种使用姿势,是时候捋清楚了!
    SQL多节节点MS SQL中的递归
    支付DLL接口
    (转)ubuntu下查询CPU数,核心数,线程数
    (转)C/C++中计算程序运行时间
  • 原文地址:https://www.cnblogs.com/niujifei/p/11433116.html
Copyright © 2020-2023  润新知