• JS—DOM节点的使用知识整理


    目录

    一、获取元素的通常使用方法

             1、利用DOM提供的方法获取元素

    2、利用节点的层次关系来获取元素

    二、节点的概述

    三、节点的类型

            1、获取父级节点:node.parentNode

    2、获取子级节点:

    方法一:parentNode.childNodes(标准)

    方法二:parsentNode.childern(非标准) 

    3、获取第一个元素和最后一个元素

    4、获取兄弟节点

    四、创建和添加节点

    1、创建节点

    2、添加节点:

    3、删除节点

    4、复制节点(克隆节点)


    一、获取元素的通常使用方法

     1、利用DOM提供的方法获取元素

            document.getElementByld()

            document.getElementsBtTagName()

            document.querySeletor等

            逻辑性不强且繁琐

    2、利用节点的层次关系来获取元素

        利用父子兄弟节点关系获取元素

        逻辑性强,但是兼容性稍差

    二、节点的概述

            网页中的所有内容都是节点(标签、属性、文本、注释等),在DOM中,节点使用node来表示

    HTML DOM 树种的所有节点均可通过JavaScript进行访问,所有HTML元素(节点)均可被修改

     也可以创建删除。 一般情况下,节点至少拥有nodeType(节点类型)、nodeName(节点名称)nodeVaule(节点值)这三个基本属性

            元素节点    nodeTpye 为 1

            属性节点    nodeTpye 为 2

            文本节点    nodeType 为 3 (文本节点包含文字、空格、换行等)

            在我们实际开发中,节点操作主要操作的是元素节点

    三、节点的类型

    利用DOM 树可以把节点划分为不同的层级关系,常见的是父子兄层级关系

            1、获取父级节点:node.parentNode

    1. //获取erweima的父元素
    2. var erweima = document.querySelector('.erweima')
    3. console.log(erweima.parentNode);

    注意:

    得到是离元素最近的父级节点(类似于它的亲爸爸)   如果找不到父节点就返回为null

    2、获取子级节点:

    方法一:parentNode.childNodes(标准)

    返回包含指定节点的子节点的集合,该集合为即时更新的集合,childNodes 所有子节点 包含 元素节点 文本节点等等

     如果只想要获得里面的元素节点,则需要专门处理。所以我们一般不提倡使用childNodes

    代码展示:

    1. var ul = document.querySelector('ul')
    2. for(var i = 0; i < ul.childNodes.length; i++){
    3. if(ul.childNodes[i].nodeType == 1){
    4. // ul.childNodes[i]是元素节点
    5. console.log(ul.childNodes[i]);
    6. }
    7. }

    结果展示:

    方法二:parsentNode.childern(非标准) 

    获取所有的子元素节点 实际开发常用。

    parsentNode.childern是一个只读属性,返回所以的子元素节点。它只返回子元素节点,其余节点不返回(这个是我们重点掌握的)。虽然children是一个非标准,但是得到了各个浏览器的支持,因此我们可以放心使用。

    3、获取第一个元素和最后一个元素

      方法一:

        parentNode.firstChild

            返回parentNode第一个子节点,找不到则返回null。同样,也是包含所有的节点

        parentNode.lastChild

            返回parentNode最后一个节点,找不到则返回null。同样,也是包含所有的节点

    方法二:

    parentNode.firstElementChild        返回parentNode第一个子节点

     parentNode.lastElementChild        返回parentNode最后一个节点

    这两个方法友兼容性问题,IE9以上才支持

    方法三:

    parentNode.chilren[0]        返回parentNode的第一个元素节点

    parentNode.children[parentNode.children.length-1]      返回parentNode的最后一个元素节点

    这是我们在实际开发中所用的写法,它既没有兼容性问题又返回第一个子元素或者最后一个元素

    4、获取兄弟节点

      方法一:

    node.nextSibling

    返回当前元素的下一个兄弟节点,找不到则返回null。同样,也是包含所有的节点

    node.previousSibling

    返回当前元素的上一个兄弟节点,找不到则返回null。同样,也是包含所有的节点

    方法二:

    node.nextElementSibling        返回当前元素的下一个兄弟元素节点,找不到则返回null。

    node.previousElementSibling        返回当前元素的上一个兄弟元素节点,找不到则返回null。  

     注意:这两个方法友兼容性问题,IE9以上才支持

    如何解决兼容性问题:封装一个兼容性的函数

    代码展示:

    获取element的下一个兄弟元素节点的函数

    1. //获取element的下一个兄弟元素节点的函数
    2. function getNextElementSibliing(element) {
    3. var el = element;
    4. while (el = el.nextSibling) {
    5. if(el.nodeType === 1) {
    6. return el;
    7. }
    8. }
    9. return null;
    10. }

    获取element的上一个兄弟元素节点的函数

    1. //获取element的上一个兄弟元素节点的函数
    2. function getpreviousElementSibling(element){
    3. var el = element;
    4. while(el=el.previousSibling){
    5. if(el.nodeType===1){
    6. return el;
    7. }
    8. }
    9. return null;
    10. }

    四、创建和添加节点

    1、创建节点

    document.createElement('tagName')         创建tagName为元素节点的名字

    document.createElement()方法创建由tagName 指定的HTML元素。因为这次元素原先不存在,是根据我们的需求动态生成的,所以我们也称为动态创建元素节点。

    2、添加节点:

    我们想要页面添加一个元素:

    (1)创建元素

    (2)添加元素

     node.appendChild(child)        将一个节点添加到指定父节点node的子节点列表的末尾

    node 父级 child 子级    后面追加元素 类似于数组中的push

    1. //在ul里面添加一个li元素
    2. var ul = document.querySelector('ul')
    3. ul.appendChild(li);

    (3)添加指定节点 

    node.insertBefore(child,指定元素)     将一个节点添加到指定父节点node中的指定元素的前面

    1. var lili = document.createElement('li')
    2. ul.insertBefore(lili,ul.children[0])

    3、删除节点

    node.removeChild(child)
    在父节点node中删除子节点child,并返回删除的节点
    如:ul.removeChild(ul.children[0]);删除ul中的第一个元素节点
    注意:removeChild只能删除指定的一个节点

    4、复制节点(克隆节点)

    node.cloneNode()

     node.cloneNode()方法返回调用函数的节点的第一个副本。也称为克隆节点/拷贝节点

      注意:

    1、如果括号参数为空或者false,则是浅拷贝,即只克隆赋值节点本身,不克隆里面的子节点

     2、 node.cloneNode(false) 括号参数为空或者false,则是浅拷贝,即只复制标签,不复制里面的内容

     3、 node.cloneNode(true) 括号为true,则是深拷贝,即复制标签,赋值里面的内容

                                                                                                        

                                                                                                        —— 听闻少年二字,应与平庸相斥

  • 相关阅读:
    微信小程序替换双重循环渲染中报错图片
    Module加载的详细说明-保证你有所收获
    download failed after attempts=6: dial tcp 108.160.169.178:443: i/o timeout问题解决
    数据结构速通-重点知识点回顾
    翻了ConcurrentHashMap1.7 和1.8的源码,我总结了它们的主要区别。
    对于BI可视化分析平台,你了解多少?
    Git 的基本概念和使用方式
    Unity学习 --- 你好,编译器
    JSP 基本介绍及使用。
    初学unity开发学习笔记----第一天
  • 原文地址:https://blog.csdn.net/weixin_52984349/article/details/126481899