news 2026/7/3 15:33:22

前端—js-DOM

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端—js-DOM

DOM解析:DOM全称文档对象模型,浏览器会把HTML全部转换成一个个节点,JS可以通过DOM操作页面标签、文字、样式。整个网页就是一棵节点树

3个类型:

1. 元素节点:HTML标签,例如div、p、span、button,最常用。

2. 文本节点:标签里面的文字,包含空格和换行。

3. 属性节点:标签的属性,如class、id、src

理论代码:DOM的创建插入

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM节点的创建与插入</title> </head> <body> <!-- 下面是随便写的一堆html元素节点 --> <p class="pp">我是段落2</p> <p class="pp" id="p3">我是段落3</p> <p class="pp jj yy xx" id="p4">我是段落4</p> <script> // 【第1步. 创建节点】 // 1.1 创建一个<p>元素节点 var ele = document.createElement("p"); // 1.2 创建一个文本节点 var txt = document.createTextNode("我是用Javascript创建的新节点"); console.log(txt); // 1.3 创建一个属性节点并为其赋值 var attr = document.createAttribute("class"); // 创建属性节点 attr.value = "hello world"; // 为属性节点赋值 console.log(attr); // 【第2步. 插入节点】 // 2.1 将文本节点作为子节点,加入新建的<p>元素节点下面 ele.appendChild(txt); // 2.2 将属性节点插入新建的<p>元素节点 ele.setAttributeNode(attr); // 2.3 将已经配置完毕的<p>元素节点,以子节点的身份插入其上一层的<body>元素节点中 const body_node = document.getElementsByTagName("body")[0]; body_node.appendChild(ele); // 【第3步.删除节点】 // 3.1 获取要删除的节点 const p3 = document.getElementById("p3"); // 3.2 删除节点 body_node.removeChild(p3); </script> </body> </html>

DOM的属性修改:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM节点的属性修改</title> </head> <body> <p class="pp">我是段落1</p> <p class="pp">我是段落2</p> <p class="pp" id="p3">我是段落3</p> <p class="pp xx yy" id="p4">我是段落4</p> <img src="./img_src/logo.png" alt="图片加载失败" id="img1"> <script> // 【实验一. 查看元素节点的属性并修改属性】 // 1.根据id获取节点 const p3 = document.getElementById("p3"); console.log(p3); // 2.查看元素节点的属性 console.log(`p3旧class属性值为: ${p3.className}`); console.log(`p3旧id属性值为: ${p3.id}`); // 3.修改节点的class属性 p3.className = "pp jj yy xx"; console.log(`p3新class属性值为: ${p3.className}`); // 4.修改节点的id属性 p3.id = "_p_3"; console.log(`p3新id属性值为: ${p3.id}`); // 【实验二. classList对象的操作】 // 根据id获取节点 const p4 = document.getElementById("p4"); console.log(p4.classList); console.log(p4.classList[0]); // 为classList添加一个新的class名 p4.classList.add("zz"); console.log(p4.classList); // 为classList移除一个class名 p4.classList.remove("xx"); console.log(p4.classList); // 检查classList中是否存在某个class名,返回布尔值。 console.log(p4.classList.contains("jj")); // 不存在,返回false console.log(p4.classList.contains("zz")); // 存在,返回true // 【实验三. 其他属性的查看与修改(以<img>标签为例)】 const im = document.getElementById("img1"); console.log("修改前:"+ im.src); // 修改src属性(即修改资源路径,因此渲染出来的图片会改变) im.src = "./img_src/logo1.png"; console.log("修改后:"+ im.src); </script> </body> </html>

DOM的获取:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM节点的获取</title> </head> <body> <p class="pp">我是段落1</p> <p class="pp">我是段落2</p> <p class="pp" id="p3">我是段落3</p> <script> // getElementsByTagName 通过标签名来获取元素节点 (若有多个相同标签,返回含有多个节点的类数组对象) const p1 = document.getElementsByTagName("p"); console.log(p1); console.log(p1[0]); console.log(p1[1]); // getElementsByClassName 通过class名来获取元素节点(若有多个相同class,返回含有多个节点的类数组对象) const p2 = document.getElementsByClassName("pp"); console.log(p2); console.log(p2[0]); console.log(p2[1]); console.log(p2[2]); // getElementById 通过id名来获取元素节点(直接返回可操控的节点,而不是由节点构成的数组对象) const p3 = document.getElementById("p3"); console.log(p3); // querySelector 通过CSS选择器获取节点,返回第一个匹配上的节点 const p5 = document.querySelector(".pp"); console.log(p5); // querySelectorAll 通过CSS选择器获取节点,返回NodeList对象(包含所有匹配给定选择器的节点) const p4 = document.querySelectorAll(".pp"); console.log(p4); console.log(p4[0]); console.log(p4[1]); console.log(p4[2]); </script> </body> </html>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/29 0:27:36

如何用 C# 高效替换 PDF 文档中的字体

一、方案概述 在 PDF 文档处理中&#xff0c;字体替换是一项常见需求——无论是为了统一文档视觉风格、修复缺失字体&#xff0c;还是确保跨设备渲染一致性。传统做法需要手动解析 PDF 内容流并逐页修改文本指令&#xff0c;实现复杂且容易破坏排版。相比之下&#xff0c;借助…

作者头像 李华
网站建设 2026/6/29 0:27:37

Windows 环境下 OpenClaw 接入 Ollama 本地模型实践

Windows 环境下 OpenClaw 接入 Ollama 本地模型实践安装步骤踩坑怎么确认真走本地平时开发 OpenClaw 用的是公司配的云端 AI&#xff0c;写代码够用了。最近自己在 Windows 上另搭了一套 Ollama&#xff0c;想看看能不能完全跑在本机——模型放 F 盘&#xff0c;qwen2.5:7b&…

作者头像 李华
网站建设 2026/6/29 1:15:25

hello-agents学习笔记--AutoGen框架

AutoGen AutoGen 是一个面向多智能体协作的开发框架。它的核心不是让一个大模型单独完成所有事情&#xff0c;而是把任务拆给多个具有不同职责的智能体&#xff0c;让它们通过对话协作完成任务。在软件开发场景中&#xff0c;可以把不同智能体看作一个虚拟开发团队&#xff1a;…

作者头像 李华
网站建设 2026/6/29 0:41:32

技术文章大纲:用OpenCL重写CUDA内核

引言简述CUDA和OpenCL的异同点&#xff0c;包括架构、适用平台和编程模型。说明将CUDA内核迁移到OpenCL的动机&#xff0c;如跨平台兼容性、开源支持等。CUDA与OpenCL的核心概念对比线程层次结构&#xff1a;CUDA的grid/block/thread与OpenCL的work-group/work-item对应关系。内…

作者头像 李华