js-3:DOM常见的操作有哪些?

news2024/12/29 9:02:23

1、DOM
文档对象模型(DOM)是HTML和XML文档的编程接口。
它提供了对文档的结构化的表述,并定义了一种方式,可以使从程序中对该结构进行访问,从而改变文档的结构,样式跟内容。
任何HTML和XML文档都可以用DOM表示为一个由节点构成的层级结构。
节点分很多类型,每种类型对应着文档中不同的信息和标记,也都有自己不同的属性、数据和方法。而且与其他类型有某种关系,如下所示:
在这里插入图片描述
DOM像原子包含着亚原子微粒一样,也有很多类型的DOM节点包含着其他类型的节点。接下来,展示其他三种:
在这里插入图片描述
上述结构中,div、p是元素节点,content是文本节点,title是属性节点

2、操作
日常开发中,离不开Dom操作。之前使用jquery、zepto等库来操作DOM,之后在vue、angular、react等框架出现后,通过操作数据来控制DOM(绝大多数时候),越来越少的直接去直接操作DOM。
但这并不代表原生操作不重要,相反,DOM操作有助于我们理解框架深层的内容。
DOM常见的操作主要分为:
创建节点
查询节点
更新节点
添加节点
删除节点

创建节点:
createElement:创建新元素,接受一个参数,即要创建元素的标签名。
在这里插入图片描述
create TextNode:创建一个文本节点
在这里插入图片描述
createDocumentFragment:用来创建一个文档碎片,它表示一个轻量级的文档,主要是用来存储临时节点,然后把文档碎片的内容一次性添加到DOM中。
在这里插入图片描述
当请求把一个DocumentFragment节点插入文档树时,插入的不是DocumentFragment自身,而是它的所有子孙节点。

createAttribute:创建属性节点,可以是自定义属性。
在这里插入图片描述
获取节点:
querySelector:传入任何有效的css选择器,即可选中单个DOM元素(首个)
在这里插入图片描述
如果页面上没有指定的元素时,返回null

querySelectorAll:返回一个包含节点子树内所有与之相匹配的Element节点列表,如果没有相匹配的,则返回一个空节点列表。

在这里插入图片描述
需要注意的是,该方法返回的是一个NodeList的静态实例,它是一个静态的“快照”,而非“实时”的查询。
关于获取DOM元素的方法如下所示:
在这里插入图片描述
除此之外,每个Dom元素还有parentNode、childNodes、firstChild,lastChild,nextSibling,previousSibling属性,关系图如下所示。

在这里插入图片描述
更新节点:innerHTML:不但可以修改一个DOM节点的文本内容,还可以直接通过HTML片段修改DOM节点内部的子树。

在这里插入图片描述
innerText、textContent:自动对字符串进行HTML编码,保证无法设置任何HTML标签。
在这里插入图片描述
两者的区别在于读取属性时,innnerText不返回隐藏元素的文本,而TextContent返回所有文本

style:DOM节点的style属性对应所有的CSS,可以直接获取或设置,遇到-需要转化为驼峰命名。
在这里插入图片描述
添加节点:
innerHTML:如果这个DOM节点是空的,例如,

,那么,直接使用innerHTML=' child'就可以修改DOM节点的内容,相当于添加了新的DOM节点。
如果这个DOM节点不是空的,那就不能这样做,因为innerHTML会直接替换掉原来的所有子节点。

appendChild:把一个子节点添加到父节点的最后一个子节点
在这里插入图片描述
添加一个p元素,在这里插入图片描述
现在HTML结构变成下面:
在这里插入图片描述
上述代码中,获取DOM元素后再进行添加操作,这个js节点是已经存在于当前文档树中,因此这个节点会先从原先的位置删除,再插入到新的位置。
如果动态添加新的节点,则先创建一个新的节点,然后插入到指定的位置。
在这里插入图片描述
insertBefore:把子节点插入到指定的位置
在这里插入图片描述
子节点会插入到refreenceElement之前。

setAttribute:在指定元素中添加一个属性节点,如果元素中已经有该属性,则改变属性值。
在这里插入图片描述
删除节点:删除一个节点,首先要获取该节点本身以及它的父节点,然后调用父节点的removeChild把自己的删掉。
在这里插入图片描述
删除后的节点虽然不在文档树中了,但是它还在内存中,可以随时再次被添加到别的位置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/842550.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自然语言处理学习笔记(五)————切分算法

目录 1.切分算法 2.完全切分 3.正向最长匹配 4.逆向最长匹配 5.双向最长匹配 6.速度评测 1.切分算法 词典确定后,句子可能含有很多词典中的词语,他们有可能互相重叠,如何切分需要一些规则。常用规则为:正向匹配算法、逆向匹…

opencv基础44- Canny边缘检测详解-cv.Canny()

什么是Canny边缘检测? Canny边缘检测是一种经典的边缘检测算法,由John F. Canny在1986年提出。它被广泛应用于计算机视觉和图像处理领域,是一种多阶段的边缘检测算法,能够有效地检测图像中的边缘并抑制噪声。 Canny边缘检测的主要…

APP外包开发的学习流程

学习iOS App的开发是一项有趣和富有挑战性的任务,是一个不断学习和不断进步的过程。掌握基础知识后,不断实践和尝试新的项目将使您的技能不断提升。下面和大家分享一些建议,可以帮助您开始学习iOS App的开发。北京木奇移动技术有限公司&#…

Redis 拒绝服务漏洞(CVE-2023-28856)修复处理

一、漏洞描述 Redis Labs Redis是美国Redis Labs公司的一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值(Key-Value)存储数据库,并提供多种语言的API。 Redis 7.0.0 到 7.0.10版本、6.2.0 到 6.2.11版本、6.0.0 到 …

【Linux】【预】配置网络IP,挂载网络目录

【Linux】【预】配置网络IP,挂载网络目录 1. 配置查看IP2.配置Linux中的IP3. 串口连接开发板,配置 1. 配置查看IP a . 查看ipifconfig如下操作,其中的:192.168.252.140就是它的IP b . 使用xmodem 连接到虚拟机,最后点…

P1396 营救(最小生成树)(内附封面)

营救 题目背景 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动得热泪盈眶,开起了门…… 题目描述 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈…

2. Linux安装Git

yum安装 查看版本 版本太低,所以我们采用自己上传编译的方式进行 删除已安装的git yum remove git 下载最新安装包,并上传到服务器文件夹下 上传,解压 5.安装编译需要的依赖 yum install curl-devel expat-devel gettext-devel openssl-…

【Leetcode】无重复字符的最长字串||带输出测试(滑动窗口+HashMap)

step by step. 题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: s "bbbbb" 输出…

UE4 Cesium for unreal 离线加载应用全流程

参考配置:Win10、请保证是在局域网环境下配置 配置IP 右键选择:打开“网络和Internet” 设置 选择更改适配器选项 请保证以太网是处于启用状态并连接线缆,点击右键选择属性 双击选择Internet协议版本4(TCP/IPv4) 将IP地…

Git从远程仓库中删除文件,并上传新文件

目录 删除: 拉取远程分支的更新: ​编辑 首先查看git状态: ​编辑 删除文件并提交版本库: 提交: 上传新文件: 首先查看git状态: 提交到暂存区: 提交到版本库: 上…

028 - having函数

-- SQL Server中的聚合函数有:聚合数据(group by)后面不能跟过滤条件where 1.count() 所有记录du数 2.count(*)所有非null记录数 3.avg() 某一列平均值 4.min() 某一列最小值 5.max() 某一列最大值 6.sum() 某一列总和 -- 聚合数据&#xf…

人大金仓数据库Docker部署

docker 搭建 yum -y install yum-utilsyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposystemctl start docker.servicesystemctl enable docker.servicesystemctl status docker.service 配置Docker cd /etc/docker/ vi da…

如何安全变更亚马逊收款账户?

有太多的卖家想知道如何安全变更亚马逊收款账户,因为更改了第三方收款账户可能会导致二次视频认证或者增强视频。真的是这样吗? 其实不推荐亚马逊店铺正常运营之后去变更信用卡,收款账户等重要资料的,因为玩黑科技的卖家也真的多…

嵌入式开发学习(STC51-18-LCD液晶显示)

内容 在LCD1602液晶上显示字符信息; LCD1602介绍 简介 1602液晶也叫1602字符型液晶,它能显示2行字符信息,每行又能显示16个字符; 它是一种专门用来显示字母、数字、符号的点阵型液晶模块; 它是由若干个5x7或者5x…

PEMFC氢氧质子交换燃料电池MATLAB仿真模型

氢氧燃料电池静态模型: (1)热力学电动势En (2)活化极化过电势Vact 活化损失主要是因为电极表面的反应速度过慢,在驱动电子传递到或者传送出电极的化学反应时,部分电压会被消耗。 (…

机器学习——SMO算法推导与实践

一、 硬间隔-SMO算法推导 明天再说,啊。。。。感觉天空明朗了很多,即使现在已经很晚了 还是要打开柯南,看看电视,等待天气预报所说的台风天吧! 一时之间,忽然失去了用markdown语法写下推导过程的勇气。。。…

干货:电视盒子什么牌子好?数码博主盘点电视盒子排名

电视盒子是我们观影不可缺少的装备之一,但面对众多的电视盒子产品,大家在选购时会疑惑电视盒子什么牌子好,我作为数码测评博主,本期要分享的主题是电视盒子,通过对比今年测评过的26款热门电视盒子,我整理了…

Tkinter的超强主题扩展-ttkbootstrap

1、前言 在上一篇文章 将Python脚本集成到GUI工具包-Tkinter 里,作者介绍了 Tkinter,并开发了测试参数组合生成器小工具,虽然功能上已经满足了所要的需求,但是页面展示方面很不美观,需要改进一下。 本篇将介绍一款 T…

使用罗技鼠标后 弹出当前页面的脚本发生错误AppData/Local/Temp/LogiUI/Pak/js/jquery-1.3.2.min.js解决

使用的台式机,没有蓝牙驱动,在用logi无线鼠标时,把鼠标连接插入台式机后弹出的如上图所示这个提示,无论是点是/否,还是X掉上图提示,电脑右下角的图依然存在。不习惯这丫的存在。 我重启还是有,然…

1. Git基础知识

文章目录 Git基础知识一、集中式与分布式二、中心服务器三、工作流四、分支实现五、冲突六、Fast forward七、储藏(Stashing)八、SSH 传输设置九、.gitignore 文件十、Git 命令一览十一、和远端仓库交互 Git基础知识 一、集中式与分布式 Git 属于分布式…