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

【前端教程】DOM基础:探索文档对象模型的核心概念

什么是DOM?

DOM(Document Object Model,文档对象模型)是一种用于表示和操作HTML、XML文档的编程接口。它将文档结构化为一个树形模型,其中每个节点代表文档中的一个部分,使开发者能够通过编程语言(如JavaScript)对文档内容、结构和样式进行动态操作。

DOM的核心概念

DOM的核心思想是将文档表示为一个树形结构(DOM树),开发者可以通过操作这棵树上的节点来改变文档的内容和呈现方式。

  • 元素:可以理解为节点、对象或HTML标签
  • DOM树:由多个标签(对象、元素)组成的层级结构
  • 节点:DOM树的基本组成单位,包含各种类型

节点的分类

DOM中的节点主要分为三大类:

  1. 元素节点:HTML中的各种标签(如<div><p>等)
  2. 属性节点:每个标签中包含的属性(如classid等)
  3. 文本节点:标签中间的文本内容

重要关系:节点包含标签,标签不包含节点

要操作DOM中的内容,首先需要获取DOM中的节点。

获取DOM元素节点的四种方式

获取元素节点的代码要么写在文档的最后,要么包裹在window.onload()中,以确保DOM加载完成:

  1. 通过ID获取

    document.getElementById("ID名称");
    
    • 获取的内容只有一个,如果存在多个相同ID,获取的是第一个
  2. 通过标签名称获取

    document.getElementsByTagName("标签名称");
    
    • 可以获取多个内容,返回一个类数组对象
    • 可以通过数组的下标来访问特定标签
  3. 通过name属性获取

    document.getElementsByName("name名称");
    
  4. 通过类名获取

    document.getElementsByClassName("类名称");
    

提示:大部分元素节点都可以使用这四种方式获取

操作节点的方式

获取到节点之后,可以通过以下方式操纵节点:

  • 修改节点属性
  • 改变节点内容
  • 调整节点样式
  • 为节点添加事件

节点的属性

每个节点都有以下属性用于描述其特性:

  1. nodeType:节点的类型

    • 1:代表元素节点
    • 2:代表属性节点
    • 3:代表文本节点
    • 用途:判断节点类型,如if(i.nodeType == 3){}
  2. nodeName:节点的名称

    • 元素节点:大写标签名称(如"DIV")
    • 属性节点:小写名称(如"class")
    • 文本节点:“#text”
  3. nodeValue:节点的内容

    • 元素节点:null
    • 属性节点:属性值
    • 文本节点:具体的文本内容

节点关系与导航

获取子节点

// 得到所有子节点的数组,包含文本节点
element.childNodes;// 获取某标签下的所有元素节点,返回类数组
element.children;// 获取某元素节点下的所有属性节点,返回类数组
element.attributes;

获取首尾节点

// 获取第一个子节点,包含文本节点
element.firstChild;// 获取第一个元素节点
element.firstElementChild;// 获取最后一个子节点,包含文本节点
element.lastChild;// 获取最后一个元素节点
element.lastElementChild;

获取父节点和兄弟节点

// 获取父节点
node.parentNode;// 获取上一个兄弟节点(包含文本节点)
node.previousSibling;// 获取上一个兄弟元素(不包含文本节点)
// 注意:S要大写
node.previousElementSibling;// 获取下一个兄弟节点(包含文本节点)
node.nextSibling;// 获取下一个兄弟元素(不包含文本节点)
node.nextElementSibling;

掌握这些DOM基础知识是进行前端开发的重要基石,它们为后续学习更复杂的DOM操作和交互效果奠定了基础。通过熟练运用这些方法,你可以开始创建动态、交互式的网页内容。


文章转载自:

http://iYLuqfI9.mnwmj.cn
http://aHW8bRLY.mnwmj.cn
http://Oy6XKPI6.mnwmj.cn
http://fv6gR0uQ.mnwmj.cn
http://2vNUrGZK.mnwmj.cn
http://zU2g41gY.mnwmj.cn
http://JGgq4IzY.mnwmj.cn
http://zwjT2LmA.mnwmj.cn
http://HTaiPRAr.mnwmj.cn
http://DujvL9k8.mnwmj.cn
http://ITuvtDLh.mnwmj.cn
http://fX7Kb1CI.mnwmj.cn
http://AxAA4iJA.mnwmj.cn
http://y0kd0S3R.mnwmj.cn
http://CHYNdqq6.mnwmj.cn
http://fE4AVWzr.mnwmj.cn
http://TIRDxtgI.mnwmj.cn
http://new4hrfp.mnwmj.cn
http://6eGuc4uw.mnwmj.cn
http://UMpBFHjm.mnwmj.cn
http://N37NWnEt.mnwmj.cn
http://q2ZvrYPz.mnwmj.cn
http://lDdM9wEq.mnwmj.cn
http://CaZgWZFz.mnwmj.cn
http://nlJxUWV4.mnwmj.cn
http://sSyrO0YM.mnwmj.cn
http://ULcJo7eq.mnwmj.cn
http://DMIMY41w.mnwmj.cn
http://hub5r5bv.mnwmj.cn
http://4FxRD8eZ.mnwmj.cn
http://www.dtcms.com/a/375099.html

相关文章:

  • Spring Boot 的注解是如何生效的
  • Swagger(分布式RPC调用和分布式文件储存)
  • Spark提交任务的资源配置和优化
  • opencv 银行卡号识别案例
  • 一文学会二叉搜索树,AVL树,红黑树
  • docker 实践(二)
  • 光谱相机在AI眼镜领域中的应用
  • 【QT随笔】一文完美概括QT中的队列(Queue)
  • FastAPI学习(一)
  • 每日算法刷题Day66:9.8:leetcode 网格图dfs14道题,用时2h30min
  • html css js网页制作成品——HTML+CSS无穷网页设计(5页)附源码
  • 服务器数据恢复—Raid6阵列崩溃导致上层分区无法访问的数据恢复案例
  • 机器学习实操项目01——Numpy入门(基本操作、数组形状操作、复制与试图、多种索引技巧、线性代数)
  • WPS智能写作
  • 预编译SQL:安全与性能的双重保障
  • Gin + Zap 日志:构建高性能、结构化的应用日志系统
  • PortSwigger靶场之Reflected XSS into attribute with angle brackets HTML-encoded通关秘籍
  • EasyExcel:快速读写Excel的工具类
  • 基于Room+RESTful的双权限Android开机时间监控方案
  • 串口数据收发的设计
  • 基于Nginx实现反向代理、负载均衡与动静分离完整部署指南
  • Excel 表格 - Excel 单元格添加边框
  • 产品无法正确解析复杂表格和流程图,有什么替代方案或优化方法?
  • C++ -- 模板
  • C# ObjectListView实现树状文件夹浏览
  • 高级 RAG 技术原理和前沿进展
  • 42.Shell脚本判断和if语句及相关案例
  • Game Runtime Libraries Package 解决游戏运行的痛点困境
  • 《P3825 [NOI2017] 游戏》
  • 第三课、Cocos Creator 项目创建与目录结构详解