当前位置: 首页 > news >正文

DOM基础

1.DOM全称Document Object Model 文档对象模型

DOM节点的获取:getElemtsByTagName('标签名')按标签拿元素,返回类数组(多个元素)

getElemtsByld(id):按id 拿元素直接返回单个元素(id唯一),querySelector(CSS选择器):写CSS选择器,只返回第一个匹配元素,querySectorAll(CSS选择器)写CSS选择器,返回全部匹配元素集合。

代码以及写法:

<!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>

2.DOM节点属性修改:获取修改标签自带属性,class类名

直接修改元素自带属性:元素.属性名=值(id,src,className),className:一次性覆盖全部class类(会清空原有类),.add():新加一个class,.remove():删掉一个class,.contains():判断有没有这个class,返回true/false

代码以及写法:

<!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>

3.DOM节点创建,插入,删除:document.creatElement(标签):创建空标签,document.creatTextnNode(文字):创建文字内容,元素.appendChild(字节点):把子节点放到父元素最后面,父元素.removeChild(要删的节点):从页面删掉指定标签

代码:

<!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>

4.练习代码:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>课堂练习:节点的相关操作</title> </head> <body> <hr color="red" width="500" id="hr1"> <hr color="green" width="500" id="hr2"> <script> // 1. 将id=hr1的水平线改成黑色 let hr1 = document.getElementById('hr1'); hr1.color = 'black'; // 2. 删除id=hr2的水平线 let hr2 = document.getElementById('hr2'); document.body.removeChild(hr2); // 3. 创建新hr:<hr color="blue" width="250" id="hr3"> let newHr = document.createElement('hr'); newHr.color = 'blue'; newHr.width = '250'; newHr.id = 'hr3'; // 把新水平线插入页面body中 document.body.appendChild(newHr); </script> </body> </html>
http://www.jsqmd.com/news/1069836/

相关文章:

  • 微信多账号消息如何避免路由混乱?wechatapi帮你管理多微信
  • 服务网格性能优化
  • 阿里发布视频生成模型HappyHorse 1.1:五大维度全面升级,手把手教你上手
  • 2026 实测避坑:写小说软件不好用?这 5 款深度对比帮你选
  • 电脑卡顿发热反应慢,解决办法
  • RRF 混合检索 + BGE 重排序
  • 高端制造 半导体数字芯片(CPU/GPU/MCU)技术专家线晋升 CTO 完整岗位阶梯
  • 公司简约前台-著作权
  • 软件直方图管理化的分布分析
  • 低代码平台设计:可视化编程与生成代码的质量控制
  • Python的__new__资源管理
  • 软件工厂管理中的对象创建逻辑
  • Rust的匹配中的@
  • Django计算机毕设之基于 Web 架构的 AES 文件夹加密防护系统的设计与实现 基于 Django 的文件加密解密安全防护系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 新手做漫剧用什么,全流程AI创作工具功能实测分享
  • 分布式系统一致性算法详解
  • 为什么我不再推荐使用Swagger UI?
  • 操作系统进程调度:完全公平调度算法的实现原理
  • Rust的迭代器链式调用与中间操作惰性求值在内存上的优化效果
  • Jenkins 管道(Pipeline)脚本编写坑
  • UVA10082 WERTYU(洛谷-UVA10082)
  • 理解「数据网格」(Data Mesh)及其对数据平台架构的影响
  • Python 协程池实现方法
  • 2026怎么选能支持多流派解盘逻辑的AI辅助解盘工具?资深专家教你看懂底层算力
  • 移动应用安全加固
  • 算法数据结构面试必备
  • RAG 系统中「检索质量」与「生成质量」之间那道隐形的鸿沟,到底是怎么形成的?
  • Compose与原生混合开发:PasteMangaX的UI架构深度剖析
  • khmer开发者手册:贡献代码与扩展功能的完整流程
  • SharpVectors社区精选:15个最实用的SVG开发资源与工具推荐