JS节点操作

2023-05-16

节点概述

1.在JS中节点可分为父节点、子节点、兄弟节点。 又可分为元素节点、属性节点、文本节点
2.节点至少拥有三个基本属性,nodeType(节点类型)、nodeName(节点名称)、nodeValue(节点值)

  • 元素节点的节点类型为1 (在对节点进行操作时,通常对元素节点进行操作)
  • 属性节点的节点类型为2
  • 文本节点的节点类型为3

节点操作

父节点操作

以往获取节点只能通过一次一次的输入,利用节点进行操作可以一步获取。获取方法为node.parentNode
具体例子如下

<body>
    <div class="grandfather">
        <div class="father">
            <span class="son">×</span>
        </div>
    </div>

    <script>
        // 1. 以往获取节点方法
        var son= document.querySelector('.son');
        var father = document.querySelector('.father');
        var grandfather = document.querySelector('.grandfather');
        // 1. 利用节点操作获取父节点方法
        console.log(son.parentNode);
        //得到的是离元素最近的父级节点 注意:如果找不到父节点就返回为 null
    </script>
</body>

运行结果如下
在这里插入图片描述

子节点操作

记录八个子节点获取方法

  • node.childNodes (获取所有的子节点 包含 元素节点 文本节点等等)
  • node.childNode[i] (获取第i-1个子节点)
  • node.children (获取所有的子元素节点)(常用)
  • node.children[i] (获取第i-1个子元素节点)(常用,没有兼用性问题)
  • node.firstChild(第一个子节点 不管是文本节点还是元素节点)
  • node.lastChild(最后一个子节点 不管是文本节点还是元素节点)
  • node.firstElementChild(第一个子元素节点,ie9才支持)
  • node.lastElementChild(最后一个子元素节点,ie9才支持)

实例如下所示

<body>
    <ul>
        <li>son1</li>
        <li>son2</li>
        <li>son3</li>
    </ul>
    <script>
        // 以往获取节点的方法
        var ul = document.querySelector('ul');
        var lis = ul.querySelectorAll('li');
        // 1. 子节点  childNodes 所有的子节点 包含 元素节点 文本节点等等
        console.log(ul.childNodes);
        // 2. 子节点  childNodes[i] 获取第i-1个子节点                
        console.log(ul.childNodes[0].nodeType);
        console.log(ul.childNodes[1].nodeType);
        console.log(ul.childNodes[2].nodeType);
        // 3. children 获取所有的子元素节点(常用)
        console.log(ul.children);
        // 4. children[i] 获取第i-1个子元素节点(常用)
        console.log(ul.children[0]);
        // 5. node.firstChild 获取第一个子节点 不管是文本节点还是元素节点
        console.log(ul.firstChild.nodeType);
        // 6. node.lastChild 获取最后一个子节点 不管是文本节点还是元素节点
        console.log(ul.lastChild.nodeType);
        // 7. node.firstElementChild 获取第一个子元素节点,ie9才支持
        console.log(ul.firstElementChild);
        // 8. cnode.lastElementChild 获取最后一个子元素节点,ie9才支持
        console.log(ul.lastElementChild);
    </script>
</body>

运行结果如下
在这里插入图片描述

兄弟节点操作

记录四个兄弟节点获取方法

  • node.nextSibling (下一个兄弟节点 包含元素节点或者 文本节点等等)
  • node.previousSibling (上一个兄弟节点 包含元素节点或者 文本节点等等)
  • node.nextElementSibling (得到下一个兄弟元素节点)
  • node.previousElementSibling (得到上一个兄弟元素节点,如果不存在,则返回null)

实例如下所示

<body>
    <div>brother1</div>
    <span>brother2</span>
    <script>
        var div = document.querySelector('div');
        // 1.nextSibling 下一个兄弟节点 包含元素节点或者 文本节点等等
        console.log(div.nextSibling);
        // 2.previousSibling 上一个兄弟节点 包含元素节点或者 文本节点等等
        console.log(div.previousSibling);
        // 3. nextElementSibling 得到下一个兄弟元素节点,如果不存在,则返回null
        console.log(div.nextElementSibling);
        // 4. previousElementSibling 得到上一个兄弟元素节点,如果不存在,则返回null
        console.log(div.previousElementSibling);
    </script>
</body>

运行结果如下
在这里插入图片描述

创建与添加节点操作

创建节点:document.createElement(‘tagName’)
添加节点:
1.node.appendChild(child) 其中node 父级 child 是子级 后面追加元素,此操作类似数组中的push
2.node.insertBefore(child, 指定元素) 该方法是将节点添加到指定元素的前面
具体实例如下所示

<body>
    <ul>
        <li>添加节点</li>
    </ul>
    <script>
        // 1. 创建节点元素节点
        var li = document.createElement('li');
        // 2. 添加节点方法1 node.appendChild(child)  node 父级  child 是子级 后面追加元素  类似于数组中的push
        var ul = document.querySelector('ul');
        ul.appendChild(li);
        // 3. 添加节点方法2 node.insertBefore(child, 指定元素);该方法是将节点添加到指定元素的前面
        var lili = document.createElement('li');
        ul.insertBefore(lili, ul.children[0]);
        // 4. 我们想要页面添加一个新的元素 : 1. 创建元素 2. 添加元素
    </script>
</body>

运行结果如下
在这里插入图片描述

删除节点操作

删除节点:node.removeChild(child)
具体实例如下图所示

<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
    <script>
        // 1.获取元素
        var ul = document.querySelector('ul');
        // 2. 删除元素  node.removeChild(child)
        ul.removeChild(ul.children[1]);
        console.log(ul);
    </script>
</body>

运行结果如下
在这里插入图片描述在这里插入图片描述

复制节点操作

浅拷贝:node.cloneNode() 浅拷贝的意思是只复制标签不复制里面的内容
深拷贝:node.cloneNode(true) 深拷贝的意思是复制标签以及里面的内容
具体实例如下图所示

<body>
    <ul>
        <li>1</li>
    </ul>
    <script>
        var ul = document.querySelector('ul');
        // 1. node.cloneNode(); 括号为空或者里面是false 浅拷贝 只复制标签不复制里面的内容
        // 2. node.cloneNode(true); 括号为true 深拷贝 复制标签复制里面的内容 
        var li1 = ul.children[0].cloneNode();
        var li2 = ul.children[0].cloneNode(true);
        ul.appendChild(li1);
        ul.appendChild(li2);
        console.log(ul);
    </script>
</body>

运行结果如下
在这里插入图片描述在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS节点操作 的相关文章

  • 机动目标跟踪-Singer模型,当前统计模型,交互多模型与卡尔曼滤波的结合

    文章目录 非机动目标跟踪算法原理一 Singer 模型算法二 当前统计模型算法三 交互多模型算法 实验仿真一 低机动情况1 1 Singer模型参数设置1 2 当前统计模型参数设置1 3交互多模型参数设置1 4 对比分析 二 一般机动情况2
  • 用大白话解析函数调用,系统调用和API之间的关系

    一 官方的解释 大概了解一下 函数调用 函数调用是计算机编或运行时 xff0c 使用某个函数来完成相关命令 系统调用 系统调用是用户在程序中使用 访管指令 调用由操作系统提供的子功能集合 API 应用编程接口 xff08 Applicati
  • docker删除所有容器和镜像

    确保自己有权限 xff0c 一般先执行下面的命令获取管理员权限 span class token function sudo span span class token function su span 1 杀死运行的容器 xff1a sp
  • Docker镜像制作与仓库搭建

    Docker 1 xff0c docker镜像制作2 xff0c docker仓库搭建 1 xff0c docker镜像制作 docker官方和个人发布的镜像由于版本等各种原因 xff0c 漏洞较多 xff0c 已统计Docker Hub超
  • 2019年全国大学生电子设计竞赛赛题分享与浅析

    0 ti杯2019年全国大学生电子设计竞赛赛题已于今晨公布 其中赛题分为本科组与高职高专组 xff1a 本科组 xff1a A 电动小车动态无线充电系统 B 巡线机器人 C 线路负载及故障检测装置 D 简易电路特性测试仪 E 基于互联网的信
  • springboot整合canal实现对mysql数据库实时监控

    canal Canal介绍Mysql环境准备安装canalspringboot整合canal Canal介绍 官网地址 xff1a https github com alibaba canal canal k n l xff0c 译意为水道
  • tensorflow2.6.0安装 another metric with the same name already exists

    终端直接输入pip install tensorflow 61 61 2 6 0 但是这里有一点问题 span class token keyword import span os span class token keyword impo
  • Java编程心得体会

    初次学习Java编程的心得与体会 之前学习过c语言 xff0c python编程 xff0c 对比Java编程首先感觉到的区别就是Java环境配置比较复杂 xff0c 编程工具安装比较麻烦 课堂上老师讲到首先下载安装jdk xff0c 然后
  • Ubuntu18.04+ROS-melodic环境 px4+move_base仿真遇到的问题

    前前后后安了三个虚拟机 xff0c 折腾了快一个月了吧 第四次用双系统终于实现了 每次都有不同的坑 1 错误 xff1a gz symbol lookup error usr lib x86 64 linux gnu libgazebo c
  • 【谷粒学院】项目总结

    做谷粒学院这个项目大概花了2个多月的时间 xff0c 期间遇到了很多问题 xff0c 想要记录下来 xff0c 希望可以对别人有所帮助 首先谷粒学院项目我是不太推荐时间紧张的友友拿来做为毕设项目的 xff0c 原因是里面涉及到的技术 服务很
  • 完美解决make -f Makefile.unx报错问题 +Centos

    这里写自定义目录标题 本人亲测成功 导读 xff1a 我用这个命令主要是针对编译hadoop的 xff0c 其中有个isa l安装 xff0c 是英特尔 ISA L技术即 xff08 Intel Intelligent Storage Ac
  • 关于Gitee创建存储库多人协作流程

    关于Gitee创建存储库多人协作流程 主要解决在IDEA工具开发下通过Gtiee多人协作 xff0c 共同开发 前期准备 IDEA xff1a IDEA当前文档使用版本为2021 3 1 Git xff1a IDEA安装Gitee插件 流程
  • ajax上传文件,图片并显示与删除(spring boot)

    思路 xff1a 先上传文件然后在读出来 之前本人都是用form提交上传文件 xff0c 现在写个ajax的文件上传 先看下效果 xff1a 上传并在页面显示 关键代码 xff1a 在启动类里面加入 span class token com
  • opencv-python——调用摄像头或导入视频实现颜色识别并画框

    采用opencv进行颜色识别有个好处就是他的框可以是具有角度的长方体框 xff0c 不局限于平行点的 文章目录 颜色识别实现过程1 调用摄像头 导入视频或读入照片2 找出所需颜色对应的HSV阈值3 找出二值化后的图片中的特征点并进行画框 完

随机推荐

  • Ubuntu18.04——python2安装opencv4.1版本并代替ROS自带的低版本opencv

    软件环境 Ubuntu 18 04系统ROS melodic 查看安装ROS默认安装的CV2位置 改个名 xff0c 不要是cv2就ok xff1a 查看是否移除 可以发现还有一个cv2的so文件 xff0c 所以我们需要将这个也移除 改个
  • 直流电机驱动电路设计-----学习笔记

    直流电机驱动电路的设计目标 在直流电机驱动电路的设计中 xff0c 主要考虑一下几点 xff1a 1 功能 xff1a 电机是单向还是双向转动 需不需要调速 对于单向的电机驱动 xff0c 只要用一个大功率三极管或场效应管或继电器直接带动电
  • ROS——问题解决:rqt工具包中image_view消失;bash: rosrun rqt_image_view未找到命令

    重装rqt工具 span class token function sudo span span class token function apt get span span class token function install spa
  • VS Code——Git插件使用指南

    文章目录 一 基于VScode本地新建工程并上传到Github1 新建工程文件夹并用Vscode打开该文件夹2 初始化存储库3 暂存更改4 提交暂存更改5 同步到Github中6 在Github中查看项目 二 Git clone到本地后进行
  • Ubuntu18.04——查看CPU, GPU,内存利用率

    htop查看CPU和内存利用率 sudo apt install htop 启动htop htop 查看NVIDIA GPU利用率 nvidia smi 以每秒1次的刷新频率实时查看 nvidia smi l 1
  • Ubuntu18.04——基于X86和Arm安装并配置Realsense-ros环境

    文章目录 基础安装1 安装ROS2 安装Realsense驱动以及依赖库 xff08 1 xff09 X86安装librealsense更新 xff08 2 xff09 Arm编译安装librealsense xff08 或者Apt无法下载
  • 【Rt-Thread】STM32输出PWM

    1 实验目标 STM32输出不同频率的占空比为50 的PWM信号 xff0c 控制蜂鸣器音调 2 硬件部分 2 1 模块介绍 xff08 1 xff09 主控芯片 F405RGT6 xff08 2 xff09 蜂鸣器 低电平触发 2 2 接
  • 考研复试实用指南

    Preface 考研初试已经结束 xff0c 但是考研这场仗还没打完 xff0c 接下来 xff0c 我们将走入复试的战场 考研复试并不是走过场 xff0c 是有严格的淘汰比例的 xff1b 考研复试并不是关系网 xff0c 是有公开而透明
  • 2020oop第一次练习 6-3 字符串 - 6. 查找子串(BF算法) (10分)

    C语言标准函数库中包括 strstr 函数 xff0c 在主串中查找子串 作为练习 xff0c 我们自己编写一个功能与之相同的函数 函数原型 char StrStr const char txt const char pat 说明 xff1
  • 信号量——二值信号量

    信号量 二值信号量 信号量简介 信号量是操作系统的重要部分 xff0c 信号量一般用来进行资源管理和任务同步 FreeRTOS中信号量分为二值信号量 互斥信号量 计数信号量和递归互斥信号量 xff0c 应用场景各不同 二值信号量 二值信号量
  • switch case语句的用法

    switch case语句的用法 我们首先来看一下switch case 语句的一般形式是怎样的 span class token keyword switch span xff08 表达式 xff09 xff5b span class t
  • C++容器作为函数形参进行使用

    C 43 43 容器作为函数形参进行使用 如这个编程题 xff1a 该题是对容器的简单应用 xff0c 由于数组在定义的时候要么用列表初始化间接告诉编译器数组的大小 xff0c 要么在定义的时候直接定义它的大小如 xff1a int arr
  • 任正非被遗漏的讲话:怎么做一个谦虚的领导者?(转)

    任正非曾在市场大会做过一个叫 做谦虚的领导者 的讲话 xff0c 少有媒体和社会层面的关注 xff0c 甚至内部也未有什么波澜 但细看起来 xff0c 这个讲话基本上是华为的管理纲要 xff0c 如 xff1a 以利润为中心 xff1b 建
  • stm32f4 mpu6050与姿态解算(仅供自己学习使用,学习笔记)

    IMU原理及姿态融合算法详解 一 陀螺仪的组成原理1 xff09 加速度计2 xff09 陀螺仪3 xff09 磁力计 二 椭球拟合三 姿态的描述1 坐标系载体坐标系当地导航坐标系载体坐标系 2 四元数3 欧拉角4 xff09 旋转矩阵 四
  • 【计算机视觉】:(3)全景图像拼接

    图像映射与全景拼接 1 全景拼接基本流程2 图像映射流程2 1 提取特征点 xff0c 构建关键点描述符 xff08 SIFT特征提取 xff09 2 2 特征匹配 xff08 KNN或kd树匹配 xff09 2 3 根据图像变换特点 xf
  • 驱动开发了解下

    目录 前提环境说明网络环境网络环境1网络环境2 启动开发板 xff0c tftp下载内核和驱动 xff0c nfs挂载文件系统开发流程1编写驱动程序修改Makefile编译创建拷贝加载驱动modprobe加载驱动depmod查看当前系统中存
  • Linux系统的启动流程---常见面试题

    系统启动流程 xff1a centos6 01 加电自检 检查服务器硬件是否正常 02 MBR引导 读取磁盘的MBR存储记录信息 xff0c 引导系统启动 03 grup菜单 选择启动的内核 进行单用户模式重置密码 04 加载系统内核信息
  • C语言——进阶冒泡&&回调函数

    C语言 进阶冒泡 amp amp 回调函数 1 模仿qsort的功能实现一个通用的冒泡排序 span class token macro property span class token directive keyword include
  • 五.树莓派4B-安装常用软件

    安装vim xff1a vi和vim与nano gedit都是Linux系统的文档编辑器 xff0c 类似于windows系统的文本文档编辑器一样 xff0c 其中vi编辑器是最常用的 xff0c 同时在Linux系统中编写各类型语言的代码
  • JS节点操作

    节点概述 1 在JS中节点可分为父节点 子节点 兄弟节点 又可分为元素节点 属性节点 文本节点 2 节点至少拥有三个基本属性 xff0c nodeType 节点类型 xff09 nodeName 节点名称 xff09 nodeValue 节