操作dom

news/2024/10/31 3:20:43/

1-获取元素

通过id、name、className属性获取,通过tagName获取;
通过id获取的是元素列表第一个;通过name属性获取的是NodeList;通过className和tagName获取的是HTMLCollection

let son1 = document.getElementById("son")
let son2 = document.getElementsByName("son")[0]
let son3 = document.getElementsByClassName("son")[0]
let son4 = document.getElementsByTagName("son")[0]

通过querySelector和querySelectorAll获取

let son = document.querySelector("#son")
let son = document.querySelectorAll(".son")
let son = document.querySelectorAll("div .son")
NodeList和HTMLCollection的区别

元素的children属性和childNodes属性的区别根本上也是这两个的区别;
NodeList和HTMLCollection不是文档树历史状态的快照,而是反映DOM树的实时状态;
而这两个都是类数组结构,不能直接使用数组的函数;可以通过
1-Array.from2-扩展运算符3-call和bind
转换为数组元素后,使用对应的函数;但是这样它们也就记录的是DOM树历史状态,无法实时反映DOM树状态;
相同点:都是类数组对象,具有length属性,可以通过call、bind转换成真正的数组;
都有一个item函数,通过索引获取节点;
DOM树的状态会实时反映到这些类数组对象中,只是在一些函数返回结果中有差异;比如querySelector返回的NodeList是DOM树的历史状态快照;所以

let list1=querySelector("li");
console.log(list1.length)//5
let list2=querySelector("li");
let text=querySelector("p");
list2.appendChild(text)
console.log(list1.length)//5

区别:
HTMLCollection还有一个namedItem函数,传入idname或者className可以获取对应的元素;只包括有标签名的元素节点,NodeList还包括文本节点;

2-向文档中添加元素

DOM文档树中存在三种节点,元素节点(有标签名的节点)、文本节点、属性节点;

1-添加节点

获取元素——》新建节点(元素、属性、文本)——》添加节点到指定元素位置

//获取元素let root = document.querySelector("#root")//新建节点//新建元素节点let newDiv1 = document.createElement("div")//为元素新增属性方法1:create+set//新建属性节点let attr = document.createAttribute("class")attr.value = "son"//将属性节点和元素节点绑定newDiv1.setAttributeNode(attr)//为元素新增属性方法2:set(key,value)newDiv1.setAttribute("name", "root")//新建文本节点let text = document.createTextNode("hello,i am yyy")//为元素节点新增文本节点,是父子关系newDiv1.appendChild(text)//将新增节点加入元素里面root.appendChild(newDiv1)let newDiv2 = document.createElement("span")let text2 = document.createTextNode("我是老大")newDiv2.appendChild(text2)//使用appendChild默认添加到NodeList末尾;//使用insertBefor会添加到NodeList某个节点前面;root.insertBefore(newDiv2, newDiv1)
2-删除节点
//删除节点//删除属性节点removeAttributeconsole.log(root.children[1])root.children[1].removeAttribute("name")//删除元素节点1-获取节点2-removeChild(节点)//root中第二个元素节点let div01 = root.children[1];console.log(div01)//divlet son = div01.firstElementChild;console.log(son)//null:没有元素节点let son1 = div01.childNodes[0];div01.removeChild(son1);//删除文本节点1-同元素节点2-设置父节点.innerHTML=""

http://www.ppmy.cn/news/92215.html

相关文章

C4D R26 渲染学习笔记(2):渲染流程介绍

往期文章 C4D R26 渲染学习笔记(1):C4D版本选择和初始UI框介绍 3D建模流程 大致流程 #mermaid-svg-eE2RXHal49sVZ34l {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-eE2RXHal4…

深度学习框架-Tensorflow2:特点、架构、应用和未来发展趋势

引言 深度学习是一种新兴的技术,已经在许多领域中得到广泛的应用,如计算机视觉、自然语言处理、语音识别等。在深度学习中,深度学习框架扮演着重要的角色。Tensorflow是一种广泛使用的深度学习框架,已经成为深度学习的事实标准。…

PLX31-EIP-MBTCP 以太网/IP到Modbus TCP/IP

PLX31-EIP-MBTCP ProSoft Technology的EtherNet/IP to Modbus TCP/IP通信网关允许在支持EtherNet/IP的控制器或设备与Modbus TCP/IP控制器或设备之间进行高速双向数据传输。 我们的Modbus TCP/IP驱动程序具有多种客户端和服务器功能,可实现更快的数据传输。此外&a…

自动清理 ES 历史数据

一、 背景 随着业务的增长和时间的变化,ES 数据库的存储空间越来越大,存储数据多数为系统监控日志,保存的数据不需要长期保留,多数情况只需要保留几个月ES数据即可,既可以减轻ES服务器的负载和资源使用率,还…

ChatGpt都这么火了,它使用的 BPE 分词算法要不要了解一下?

Byte Pair Encoding(BPE)是一种文本压缩算法,它通常用于自然语言处理领域中的分词、词汇表构建等任务。BPE 算法的核心思想是通过不断地合并字符或子词来生成词汇表。 在这里,我们将对 BPE 算法进行全面、详细的讲解,…

自动化测试-基础知识—Bash基础

Bash 在 Bash 中,美元符号 $ 可以用于引用变量或者表达式的值。Bash 中的变量并不需要事先声明,而是在第一次赋值时自动创建。基于这个特性,我们可以通过给变量名加上 $ 的方式来引用它的值,比如 $var 表示引用变量 var 的值。 …

C#小项目之记事本

C#小项目之记事本 子窗体设计 frmChild.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; …

Kotlin介绍,开发环境搭建,语法,高级特性,编程技巧

Kotlin是一种基于JVM的静态类型编程语言,由JetBrains开发。它可以编译成Java字节码,也可以编译成JavaScript源代码。Kotlin旨在通过更简洁、更安全、更易于维护的代码来提高开发效率。本文将介绍Kotlin的开发环境搭建、语法、高级特性和编程技巧。 一、…