JavaScript找到深层dom元素并修改的全部方法

在 JavaScript 中,找到深层标签元素并进行修改有多种方法。这些方法可以帮助我们遍历和操作 DOM 结构。以下是所有常用的方法,包括简单查找、选择器、遍历等方式,以及如何修改这些元素的属性和内容。

1. 使用选择器

1.1 querySelector

querySelector 方法返回文档中匹配指定 CSS 选择器的第一个元素。适用于查找深层次的元素。

const element = document.querySelector('.parent .child'); // 找到第一个匹配的元素
element.textContent = '新的文本'; // 修改该元素的文本

1.2 querySelectorAll

querySelectorAll 方法返回文档中匹配指定 CSS 选择器的所有元素,返回的是一个 NodeList。

const elements = document.querySelectorAll('.parent .child');
elements.forEach((el) => {el.style.color = 'blue'; // 修改每个匹配元素的颜色
});

2. 使用 DOM 查找方法

2.1 getElementById

使用 ID 查找元素,适用于知道特定元素 ID 的情况。

const element = document.getElementById('myElement');
element.innerHTML = '新的内容'; // 修改 HTML 内容

2.2 getElementsByClassName

根据类名查找元素,返回一个实时更新的 HTMLCollection。

const elements = document.getElementsByClassName('myClass');
Array.from(elements).forEach((el) => {el.style.fontSize = '18px'; // 修改每个元素的字体大小
});

2.3 getElementsByTagName

根据标签名查找元素,返回一个实时更新的 HTMLCollection。

const elements = document.getElementsByTagName('li');
Array.from(elements).forEach((el) => {el.style.backgroundColor = 'lightgray'; // 修改每个列表项的背景色
});

3. 使用父元素查找

通过父元素查找深层子元素。常用的有 children、firstChild、lastChild 等属性。

3.1 children

获取父元素的所有子元素。

const parent = document.getElementById('parentId');
const child = parent.children[0]; // 获取第一个子元素
child.style.color = 'green'; // 修改该子元素的颜色

3.2 querySelector 结合 children

在父元素中查找特定子元素。

const parent = document.getElementById('parentId');
const child = parent.querySelector('.child'); // 查找子元素
child.textContent = '修改了文本内容'; // 修改文本内容

4. 深层嵌套的查找

可以通过组合选择器来查找深层嵌套的元素。

const nestedElement = document.querySelector('.outer .middle .inner'); // 查找嵌套元素
nestedElement.style.border = '1px solid red'; // 修改边框

5. 修改元素属性

5.1 修改文本内容

使用 textContent 或 innerHTML 来修改元素的文本内容。

const element = document.querySelector('.my-element');
element.textContent = '这是新的文本'; // 修改文本
// 或者使用 innerHTML
element.innerHTML = '<strong>这是新的内容</strong>'; // 修改 HTML 内容

5.2 修改样式

直接修改元素的 style 属性来更改样式。

const element = document.querySelector('.my-element');
element.style.color = 'purple'; // 修改字体颜色
element.style.display = 'none'; // 隐藏元素

5.3 添加和移除类

使用 classList 来添加、移除或切换类。

const element = document.querySelector('.my-element');
element.classList.add('new-class'); // 添加类
element.classList.remove('old-class'); // 移除类
element.classList.toggle('active'); // 切换类

6. 使用递归查找深层元素

如果 DOM 结构很复杂,可以使用递归函数来查找深层元素。

function findDeepElement(root, className) {if (root.classList && root.classList.contains(className)) {return root; // 找到元素}for (let i = 0; i < root.children.length; i++) {const found = findDeepElement(root.children[i], className);if (found) return found; // 递归查找}return null; // 如果没有找到
}const deepElement = findDeepElement(document.body, 'target-class');
if (deepElement) {deepElement.textContent = '找到了深层元素并修改了文本';
}

总结
通过上述方法,可以灵活地查找和修改深层 DOM 元素。选择适当的方法可以提高代码的可读性和效率。在进行 DOM 操作时,确保在 DOM 元素加载完成后再进行修改,例如在 DOMContentLoaded 事件后,或者在合适的组件生命周期方法中进行操作。

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

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

相关文章

【开发工具】K8s经验: 在k8s中 服务1部署到了k8s,那服务2也在k8s中的某个dockers中,服务1和服务2能互相找到吗 ?

今天在开发中遇到了需要调用其他dubbo服务中的一个接口,首先通过注解DubboReference来引入另外一个dubbo服务,但是还需要设置url吗? 下面是思考经验:希望能帮到大家 服务1已经被部署到了Kubernetes(k8s)集…

最新CSS入门总结

CSS(层叠样式表)是一种用于网页样式设计的语言,它通过为 HTML 标签添加样式来控制网页的外观和布局。CSS 可以设置元素的颜色、字体、间距、对齐方式等,还可以用于创建响应式设计,以适应不同设备的屏幕尺寸。CSS 是前端…

再给我两分钟,我能教会你使用 nvm 一键搞定node 和 npm

1. nvm简介 NVM(Node Version Manager)是Node.js的版本管理工具,它允许用户在同一台机器上安装和管理多个Node.js版本。这对于需要在不同项目之间切换Node.js版本的开发者来说非常有用,因为不同的项目可能依赖于不同版本的Node.js…

排队模型和贪心算法,贪心算法在算力共享排队系统中的应用

目录 排队模型和贪心算法 一、排队模型概述 二、贪心算法简介 三、排队模型与贪心算法的关系 四、实例说明 贪心算法在算力共享排队系统中的应用 贪心算法的局限性 排队模型和贪心算法 之间存在密切的关系,主要体现在排队问题的求解过程中。 一、排队模型概述 排队模…

CAN总线通信协议

目录 一、CAN总线的介绍 二、主流通信协议对比 1.CAN硬件电路 三、CAN电平标准 四、CAN总线帧格式 1.CAN总线的5种类型帧 2.CAN总线的帧介绍 1.CAN总线的两种数据格式(标准格式与扩展格式) 2.遥控帧 3.错误帧 4.过载帧 5.帧间隔 3.位填充 4…

golang必备项目管理机制:工作区

在 Go 1.18 及以后的版本中,工作区(Workspace)是一种新的项目管理方式,可以让多个项目共享同一个模块缓存和依赖。这意味着你不需要在每个项目中单独安装依赖,而是可以共享依赖,这样可以节省空间和时间。 假…

CUDA 运行时GPU信息查询

cuda 官网文档名&#xff1a;CUDA_Runtime_API 运行时API查询GPU信息 调用 cudaDeviceProp prop; cudaGetDeviceProperties(&prop, device_id) 定义 由此可见&#xff0c;只能在主机上调用。 #include <cuda_runtime.h>#include <iostream> #include <…

ConditionVideo: 无训练的条件引导视频生成 | AAAI 2024

作者&#xff1a;彭博&#xff0c;上海人工智能实验室与上海交大2023级联培博士。 最近的工作已经成功地将大规模文本到图像模型扩展到视频领域&#xff0c;产生了令人印象深刻的结果&#xff0c;但计算成本高&#xff0c;需要大量的视频数据。在这项工作中&#xff0c;我们介…

游戏如何应对薅羊毛问题

在大众眼里&#xff0c;“薅羊毛”是指在电商领域&#xff0c;“羊毛党”利用平台、商家的促销规则&#xff0c;低价获取商品和服务的行为。如前不久“小天鹅被一夜薅走7000万”的案例震惊全网。 然而实际上&#xff0c;“薅羊毛”现象不仅存在于电商场景&#xff0c;在游戏中…

Java数据结构--顺序表

目录 1.介绍2.顺序表实现2.1 代码简单实现顺序表2.2 List接口实现顺序表 3.ArrayList常用方法4.ArrayList的遍历4.1 直接打印4.2 for循环或for-each4.3 迭代器 1.介绍 线性表(一种广泛使用的数据结构)&#xff0c;是n个具有相同特征的数据元素的有限序列&#xff0c;在逻辑上线…

设计模式之适配器模式(通俗易懂--代码辅助理解【Java版】)

文章目录 设计模式概述1、适配器模式2、适配器模式的使用场景3、优点4、缺点5、主要角色6、代码示例1&#xff09;UML图2&#xff09;源代码&#xff08;1&#xff09;定义一部手机&#xff0c;它有个typec口。&#xff08;2&#xff09;定义一个vga接口。&#xff08;3&#x…

docker入门-快速学会docker

死记硬背一张图 镜像类似于我们是使用的虚拟机&#xff0c;创建虚拟机前需要下载的系统镜像文件&#xff0c;比如iso文件&#xff0c;img文件等等这样一些镜像文件。 容器可以比作正在运行中的一个虚拟机。 tar文件&#xff0c;tar文件类似于vm使用时的vmdk文件。通过load指…

在 Docker容器中安装 ROS-Melodic 并使用 rviz 进行图形化显示

文章目录 写在前面1. 背景描述2. 安装步骤2.1 允许本地机器上的用户或进程连接到 X server2.2 拉取 docker 镜像2.3 使用镜像osrf/ros:melodic-desktop-full创建并运行容器2.4 运行 roscore2.5 运行 rviz 参考链接 写在前面 自己的测试环境&#xff1a; Ubuntu20.04&#xff0…

面网易后台开发居然遇到了一个困难难度算法题

在提供面经的同学中&#xff0c;竟然有同学在面试网易后台研发的时候遇到了一道困难难度的算法题。 一般来说&#xff0c;大多数面试的算法题都是以中等难度为主&#xff0c;遇到困难难度的算法题也许是公司现在不缺人、也许是在选拔人才、当然也很可能是面试官其实并不想要你…

在三维可视化项目中,B/S和C/S架构该如何选择?

一、什么是B/S和C/S 在3D数据可视化中&#xff0c;有两种常见的架构模式&#xff1a;BS&#xff08;Browser/Server&#xff09;和CS&#xff08;Client/Server&#xff09; B/S模式 B/S模式是指将3D数据可视化的逻辑和处理放在服务器端&#xff0c;而在客户端使用浏览器进行…

前端新机部署

编辑器&#xff1a;vscode 下载地址 vscode常用插件 显示代码修改历史、作者等信息 GitLens Nodejs版本 Node版本管理工具 Nvm下载地址 nvm常用命令&#xff1a; nvm ls // 查看安装的所有node.js的版本nvm list available //查看可以安装的所有node.js版本nvm install 版本…

k8s pod详解使用

什么是pod&#xff1f; Kubernetes&#xff08;简称K8s&#xff09;是一个开源的容器编排平台&#xff0c;广泛用于构建、部署和管理容器化应用程序。在K8s中&#xff0c;Pod是一个核心概念&#xff0c;下面是对Pod的详细解释&#xff1a; 一、Pod的定义 Pod是K8s中最小的可…

JQuery的基本使用

jQuery 是一个快速、小巧且功能强大的 JavaScript 库&#xff0c;它使得 HTML 文档的遍历和操作、事件处理、动画和 Ajax 交互变得简单。以下是 jQuery 的基本使用&#xff0c;包括常见的操作和示例。 1. 引入 jQuery 在使用 jQuery 之前&#xff0c;您需要将其引入到您的 HT…

Linux:Ubuntu系统开启SSH服务

在Ubuntu上开启SSH服务&#xff0c;可以按照以下步骤进行&#xff1a; 1.安装OpenSSH服务 如果你还没有安装OpenSSH服务&#xff0c;可以使用以下命令安装&#xff1a; sudo apt update sudo apt install openssh-server2. 启动SSH服务 安装完成后&#xff0c;启动SSH服务&a…

QT应用中的字符编码处理

文章目录 各种编码介绍获取编码列表通过特定编码解析内容特定编码保存文件编码转换设置默认编码在Qt中字符编码问题是一个重要的主题,因为Qt是一个跨平台的框架,涉及到不同操作系统和字符集的兼容性。Qt提供了多种方式来处理字符串和字符编码,确保应用程序能够正确处理和显示…