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

HTML DOM 基础:用「家族树」理解网页操控术

HTML DOM 基础:用「家族树」理解网页操控术


当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model),也就是DOM。

DOM 是JavaScript 操作网页的接口,它的作用是将网页转为一个JavaScript 对象,从而可以用脚本进行各种操作(比如对元素增删内容)。

浏览器会根据 DOM 模型,将结构化文档HTML解析成一系列的节点,再由这些节点组成一个树状结构(DOMTree)。所有的节点和最终的树状结构,都有规范的对外接口。

DOM 只是一个接口规范,可以用各种语言实现。所以严格地说,DOM不是JavaScript语法的一部分,但是DOM 操作是JavaScript最常见的任务,离开了 DOM,JavaScript 就无法控制网页。另一方面,javaScript 也是最常用于 DOM 操作的语言。


一、DOM 是什么?—— 网页的「基因图谱」

1. 基础概念

假如你收到一个乐高玩具套装,DOM 就是盒子里那张详细的组装说明书:

  • 📦 HTML:就是玩具盒子里的积木零件(标签元素)
  • 🧬 DOM:就是按说明书组装成的立体模型结构
  • 🎨 CSS :给模型涂颜色、贴装饰贴纸
  • 🤖 JavaScript:让模型发光、旋转的电动马达

你可以通过DOM这个对象模型,让JavaScript 获得创建动态 HTML 的所有力量:

  • JavaScript 能改变页面中的所有 HTML 元素
  • JavaScript 能改变页面中的所有 HTML 属性
  • JavaScript 能改变页面中的所有 CSS 样式
  • JavaScript 能删除已有的 HTML 元素和属性
  • JavaScript 能添加新的 HTML元素和属性
  • JavaScript 能对页面中所有已有的 HTML 事件作出反应
  • JavaScript 能在页面中创建新的 HTML 事件

换言之:HTML DOM 是关于如何获取、更改、添加或删除 HTML 元素的标准。

2. DOM 树形结构演示

DOM 的最小组成单位叫做节点(node)。每个节点可以看作是文档树的一片叶子
文档的树形结构(DOM 树),就是由各种不同类型的节点组成。
在这里插入图片描述

对应的 DOM 树:

文档(爷爷)  
└─ <html>(爸爸)  
   └─ <body>(儿子)  
      ├─ <h1>(大孙子)  
      └─ <div class="content">(二孙子)  
          ├─ <p>(曾孙1)  
          └─ <p>(曾孙2)  

节点的类型有七种:

  • Document:整个文档树的顶层节点
  • DocumenType:doctype标签
  • Element:网页的各种HTML标签
  • Attribute:网页元素的属性(比如class=“right”)
  • Text:标签之间或标签包含的文本
  • Comment:注释
  • DocumentFragment:文档的片段

节点树
一个文档的所有节点,按照所在的层级,可以抽象成一种树状结构。这种树状结构就是 DOM 树。它有一个顶层节点,下一层都是顶层节点的子节点,然后子节点又有自己的子节点,就这样层层衍生出一个金字塔结构倒过来就像一棵树。


二、查找HTML元素 —— DOM 世界的「人脸识别」

3. 基础查找方法

方法 1:家族寻亲(标签选择)

document.getElementsByTagName 方法搜索 HTML 标签名,返回符合条件的元素。它的返回值是一个类似数组对象(HTML collection 实例),可以实时反映 HTML 文档的变化。如果没有任何匹配的元素,就返回一个空集。

/*使用getElementsByTagName方法获取所有的<div>元素,
并将这些元素存储在一个名为divs的数组中。*/ 
var divs = document.getElementsByTagName("div");
方法 2:职业普查(类名选择)

document.getElementsByClassName()方法搜索HTML元素的类名,返回拥有相同类名的所有元素的列表

// 找到所有穿白大褂的医生  
var doctors = document.getElementsByClassName("doctor");  
方法3:智能搜索(CSS选择器)

document.querySelector()方法查找匹配指定 CSS 选择器(id、类名、类型、属性、属性值等等)的所有 HTML 元素

// 找穿红色外套、戴眼镜的女性  
var target = document.querySelector(".red-coat.glasses");  
// 返回 class="intro" 的所有 <p> 元素列表  
var group = document.querySelectorAll("p.intro"); 
方法4:身份证查询(ID选择)

DOM 中查找 HTML 元素最简单的方法是,使用元素的 id。因为元素的 id 是唯一的,使用document.getElementById()方法。

javascript  
// 通过身份证号找人  
const title = document.getElementById("mainTitle");  
// 示例:<h1 id="mainTitle">主标题</h1>  
方法5:通过 HTML 对象选择器查找 HTML 对象
  • document.anchors:document.anchors 属性返回一个包含文档中所有元素的集合,这些元素具有name属性。
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <title>title</title>
</head>

<body>
    <a name="html">HTML 教程</a><br>
    <a name="css">CSS 教程</a><br>
    <a name="JavaScript">JavaScript 教程</a><br>
    <a href="#">JavaScript 教程</a>

    <p class="count">锚的数量为:</p>  
    <script>
        //document.anchors 属性返回一个包含文档中所有<a>元素的集合,这些元素具有name属性。
        var anchors = document.anchors;
        console.log(anchors);
        document.querySelector(".count").innerHTML 
原文地址:https://blog.csdn.net/moment159/article/details/146485434
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/614745.html

相关文章:

  • 排序--归并排序--非递归
  • Ludic:用Python构建HTML,告别JavaScript的繁琐开发
  • 关于拉普拉斯变换小记
  • vue 脚手架解决跨域问题
  • 网络基本概念认识(2)
  • Unity Standard Shader 解析(一)之ForwardBase(标准版)
  • pycharm终端操作远程服务器
  • 七、学习资源与社区
  • Java开发者指南:深入解析PBFT拜占庭容错算法
  • 数据结构(并查集,图)
  • Gerbv 与 Python 协同:实现 Gerber 文件智能分析与制造数据自动化
  • 【从零实现Json-Rpc框架】- 项目实现 - Dispatcher模块实现篇
  • AI+Xmind自动生成测试用例(思维导图格式)
  • RabbitMQ消息相关
  • 垃圾回收机制的几种实现机制简介
  • 【keil】单步调试
  • ✨分享我在飞书多维表格中使用DeepSeek的经历✨
  • c++第三课(基础c)
  • Android Jetpack学习总结(源码级理解)
  • 《云原生安全攻防》-- K8s容器安全:权限最小化与SecurityContext