当前位置: 首页 > 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.gsyq.cn/news/1581791.html

相关文章:

  • 微信多账号消息如何避免路由混乱?wechatapi帮你管理多微信
  • 阿里发布视频生成模型HappyHorse 1.1:五大维度全面升级,手把手教你上手
  • RRF 混合检索 + BGE 重排序
  • 公司简约前台-著作权
  • Django计算机毕设之基于 Web 架构的 AES 文件夹加密防护系统的设计与实现 基于 Django 的文件加密解密安全防护系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 分布式系统一致性算法详解
  • 理解「数据网格」(Data Mesh)及其对数据平台架构的影响
  • 2026怎么选能支持多流派解盘逻辑的AI辅助解盘工具?资深专家教你看懂底层算力
  • 算法数据结构面试必备
  • RAG 系统中「检索质量」与「生成质量」之间那道隐形的鸿沟,到底是怎么形成的?
  • Rcpp并行计算指南:利用OpenMP和C++11线程加速R代码
  • console-powers实战:构建企业级调试工具的最佳实践
  • Miui_Camera徠卡模式深度解析:经典/生动风格对比与最佳拍摄参数
  • 如何通过biliTickerBuy构建B站会员购抢票通知系统
  • p项目扩展指南:如何自定义Python镜像源和安装路径
  • Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作
  • HACG扩展功能开发:如何为ACG阅读器添加新特性
  • Typedown:Windows平台轻量级Markdown编辑器的终极指南 [特殊字符]
  • Safety-DB案例研究:如何避免因依赖包漏洞导致的安全事故
  • AIGC赋能前端开发
  • RoseTTAFold-All-Atom Docker容器部署完全指南:简化复杂环境配置
  • 如何快速上手MAAC:10分钟完成多智能体协作训练实战指南
  • Python Munch库完全指南:像JavaScript一样访问Python字典的终极解决方案
  • 7步高效使用OB_Template书籍笔记模板:打造系统化阅读管理系统 [特殊字符]
  • 终极PT助手:PT-Plugin-Plus浏览器插件完整使用指南
  • p项目部署指南:在生产环境中使用p管理Python版本
  • ESP-IDF开发实战指南:从零构建到性能优化的完整解决方案
  • rich-click CLI 工具实战:无需修改代码,美化任意 Click 应用的帮助输出
  • DPF常见问题解答:解决插件开发中的10个典型问题
  • HAMi异构AI计算虚拟化:解决Kubernetes GPU资源碎片化与利用率瓶颈的技术方案