JS-DOM— —节点操作

2023-05-16

五、节点操作

5.1、节点操作的作用

获取元素通常使用两种方式:

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

● document.getElementByld()

● document.getElementsByTagName0

● document.querySelector

● 逻辑性不强、繁琐、结点操作的作用

2.利用节点层级关系获取元素

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

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

这两种方式都可以获取元素节点,我们后面都会使用,但是节点操作更简单

5.2、节点概述

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

HTML DOM树中的所有节点均可通过JavaScript进行访问,所有HTML元索(节点)均可被修改,也可以创建或删除。

一般地, 节点至少拥有nodeType (节点类型)、nodeName (节点名称)和nodeValue (节点值)这三个基本属性。

● 元素节点nodeType为1

● 属性节点nodeType为2

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

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

5.3、节点层级

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

(1)、父节点

node.parentNode(div.parentNode)

● parentNode 属性可返回某节点的父节点,注意是最近的一个父节点。

● 如果指定的节点没有父节点则返回null 。

(2)、子节点

1.标准流

parentNode .childNodes (标准ul. childNodes)

parentNode.childNodes返回包含指定节点的子节点的集合,该集合为即时更新的集合。

注意:返回值里面包含了所有的子节点,包括元素节点,文本节点等。

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

var ul = document.querySelector ('ul' ) ;

for(var i = 0; i < ul.childNodes.length;i++) {

if (ul.childNodes[i].nodeType = 1) {

// ul.childNodes[i] 是元素节点

console.log (ul.childNodes[i]);

}

2.非标准

parentNode . children (非标准ul. children)

parentNode. children是一个只读属性,返回所有的元素节点。它只返回子元索节点,其余节点不返回(这个是我们重点掌握的)。

虽然children是一个非标准,但是得到了各个浏览器的支持,因此可以放心使用

3.找首尾子节点

parentNode.firstChild//(首尾所有节点)

firstChild //返回第一个子节点 ,找不到则返回null.同样,也是包含**所有的节点****(****包括元素节点,文本节点等****)**。

parentNode.lastChild

lastChild //返回最后一个子节点,找不到则返回null,也是包含**所有的节点****(****包括元素节点,文本节点等****)**。

parentNode.firstElementChild//(首尾元素节点)

firstElementchild  //返回第一个子元素节点,找不到则返回null.

parentNode.lastElementChild

lastElementChild //返回最后一个子元素节点,找不到则返回null.

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

实际开发中, firstchild和lastchild 包含其他节点,操作不方便,而firstElementchild和

lastElementChild又有兼容性问题,那么我们如何获取第一个子元素节点或最后一个子元素节点呢?

解决方案(实际开发常用):

如果想要第一个子元素节点,可以使用parentNode. chilren[0]****。

例如:

ol.children[0]; 
ol.children[ol.children.length-1];

(3)兄弟节点

1.标准流

node.nextSibling

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

node.previoussibling

previoussibling返回当前元素上一个兄弟节点,找不到则返回null。同样,也是包含**所有(包括元素节点,文本节点等)**的节点

2.非标准

node.nextElementSibling

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

node.previousElementsibl ing

previousElementsibl ing返回当前元素上一个兄弟元素节点,找不到则返回null,

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

3.解决兼容性问题

自己封装一个兼容性的函数

在这里插入图片描述

5.4、创建节点

document . createElement ( 'tagName ')

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

5.5、添加节点

node.appendchild(child) //(node父级 child是子级)

node.appendchild() //方法将一个节点添加到指定父节点的**子节点**列表**末尾**。类似于css里面的after伪元素。

node.insertBefore(child,指定元素)

node.insertBefore() //方法将一个节点添加到父节点的指定子**节点**前面。类似于Css里面的before伪元素。

在这里插入图片描述

5.6、删除节点

node.removeChild (child)

node.removechild()//方法从DOM中删除一个子节点 ,返回删除的节点。

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

node.cloneNode()

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

注意:

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

2.如果括号参数为true, 则是深拷贝,即克隆复制节点本身,也克隆里面的子节点。

5.8、三种动态创建元素的区别

● document . write()

● element . innerHTML

● document . createElement ()

区别:

  1. document .write是直接将内容写入页面的内容流,但是文档流执行完毕,则它会导致页面全部重绘

  2. innerHTML 是将内容写入某个DOM节点,不会导致页面全部重绘。

  3. innerHTML 创建多个元素效率更高(不要拼接字符串,采取数组形式拼接) , 结构稍微复杂。

  4. createElement() 创建多个元素效率稍低一点点,但是结构更清晰。

总结:不同浏览器下, innerHTML效率要比creatElement 高

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

JS-DOM— —节点操作 的相关文章

随机推荐

  • Kubernetes中文手册

    Kubernetes中文手册 https www kubernetes org cn kubernetes pod
  • JSP中文乱码问题终极解决方案

    在介绍方法之前我们首先应该清楚具体的问题有哪些 xff0c 笔者在本博客当中论述的 JSP 中文乱码问题有如下几个方面 xff1a 页面乱码 参数乱码 表单乱码 源文件乱码 下面来逐一解决其中的乱码问题 一 JSP 页面中文乱码 在 JSP
  • JS表白代码

    简单的JS弹窗表白代码 思路 xff1a 只有当用户输入1 xff08 表示喜欢你 xff09 才有进一步浏览的资格 如果用户输入2 xff08 不喜欢你 xff09 就会陷入死循环进行撒娇 xff0c 只有当用户输入1 xff0c 才可以
  • Quartz框架详解

    Quartz框架可以实现 异步定时任务 Quartz框架下载地址 注意1版本和2版本写法完全不一样 xff0c 本文采用的是2 x版本 下载完毕后进入进入lib文件夹 xff0c 然后将下面的几个jar引入项目 xff1a 基本实现步骤 x
  • 前端的端口问题

    本文 xff0c 将以通俗易懂的方式剖析 服务器 电脑 是怎么访问html文件 先说一下前置知识 xff1a 首先我们得知道一件事情 xff1a 电脑中每个运行的程序都对应着某个端口 xff0c 举个例子 xff1a 我们都知道mysql默
  • 湖北师范大学java习题汇编(超详细!已经进行了章节划分)

    表达式和流程控制语句 1 验证歌德巴赫猜想 一个充分大的偶数 xff08 大于或等于6 xff09 可以分解为两个素数之和 试编程序 xff0c 将 6至50之间全部偶数表示为两个素数之和 span class token keyword
  • OPENCV(五) 对给定的车牌进行字符分割

    下面有这样的一个车牌号 xff1a 现在的任务是将每一个字符区分开来 xff0c 并方框圈出来 完成这个功能需要以下的步骤 xff1a 1 灰度处理 span class token comment 读取图片 span image1 spa
  • SpringBoot整合forest(调用彩云API获取所有城市的实时天气)

    Forest简介 xff1a Forest是一个高层的 极简的轻量级HTTP调用API框架 相比于直接使用Httpclient您不再用写一大堆重复的代码了 xff0c 而是像调用本地方法一样去发送HTTP请求 环境配置 xff1a 因为本项
  • JAVA操作Kafka

    一 环境说明 1 电脑或你的服务器需要安装zookeeper和kafka 可以参考我的这篇博客 xff1a 请点击这里 xff01 2 项目中需要下面的依赖 xff1a span class token tag span class tok
  • Gradle使用本地maven仓库

    一 基本配置 在repositories下添加mavenLocal 方法 plugins span class token punctuation span id span class token string 39 java 39 spa
  • Docker容器编排

    一 简介和下载安装 1 简介 docker compose是Docker官方的开源项目 xff0c 可以管理多个docker容器组成的一个应用 你需要定义一个YAML格式的配置文件docker compose yaml xff0c 写好多容
  • 若依微服务(ruoyi-cloud)保姆版容器编排运行

    一 简介 项目gitee地址 xff1a https gitee com y project RuoYi Cloud 由于该项目运行有很多坑 xff0c 大家可以在git克隆拷贝到本地后 xff0c 执行下面的命令使master版本回退到本
  • 深入学习Tomcat----自己动手写服务器(附服务器源码)

    相信大多 Web 开发者对 Tomcat 是非常熟悉的 xff0c 众所周知 Tomcat 是一款非常好用的开源 Servlet 容器 xff0c 您一定对这个最流行的 Servlet 容器充满好奇 xff0c 虽然它并不像一个黑盒子那样让
  • Docker图形界面

    一 Portainer Portainer是一款轻量级的应用 xff0c 它提供了图形化界面 xff0c 用于方便地管理Docker环境 xff0c 包括单机环境和集群环境 官网 xff1a https www portainer io 运
  • Docker网络

    一 简介 从其架构和运行流程来看 xff0c Docker是一个C S模式的架构 xff0c 后端是一个松耦合架构 xff0c 众多模块各司其职 docker运行的基本流程为 xff1a 1 用户是使用Docker Client和Docke
  • NOKOV Seeker2.2动作捕捉软件与ROS的通信

    一 动捕软件安装与数据准备 1 在操作系统为Windows系统 xff0c 且位数为64位的电脑上 xff0c 以鼠标右键点击 以管理员身份运行 的方式 xff0c 运行 Seeker2 2 Tracker setup exe 文件 xff
  • NOKOV度量动捕软件教程(1):软件安装与设置

    一 软件安装 1 在操作系统为 64 位的 Windows 系统上 xff0c 关闭防火墙退出杀毒软件 xff08 360 电脑管家等 xff09 xff0c 以鼠标右键点击 以管理员身份运行 的方式 xff0c 运行 XINGYING 1
  • Pixhawk+PX4+NOKOV+C++SDK动捕飞控方案

    一 PX4配置 1 参数设置 xff0c 保存重启后生效 EKF2 AID MASK 61 24 EKF2 HGT MODE 61 2 二 动捕软件设置 1 配置参考 xff08 1 xff09 mocap nokov ROS Wiki 三
  • Pixhawk+PX4+NOKOV+VRPN动捕飞控方案

    一 PX4 配置 1 参数设置 xff0c 保存重启后生效 EKF2 AID MASK 61 24 EKF2 HGT MODE 61 2 二 VRPN配置 1 Nokov 动捕软件正确配置参数并启动 VRPN 2 使用 vrpn clien
  • JS-DOM— —节点操作

    五 节点操作 5 1 节点操作的作用 获取元素通常使用两种方式 1 利用DOM提供的方法获取元素 document getElementByld document getElementsByTagName0 document querySe