JavaScript基础-DOM 简介

news2025/3/19 7:10:14

在现代Web开发中,JavaScript与HTML和CSS一起构成了网页的核心技术。而在这三者之中,DOM(Document Object Model,文档对象模型)作为浏览器处理网页内容的一种接口,扮演着至关重要的角色。通过DOM,JavaScript能够动态地访问和操作网页的内容、结构以及样式。本文将介绍DOM的基本概念、核心组成部分以及如何使用JavaScript来操作DOM。

一、什么是DOM?

DOM是针对HTML和XML文档的一个编程接口。它将整个文档描绘成一个节点树,其中每个节点代表文档的一部分(如元素、属性或文本)。通过DOM提供的API,开发者可以轻松地添加、修改或删除页面上的任何部分。

核心特性:

  • 树状结构:DOM以树的形式表示文档,树的每个分支都是一个节点。
  • 跨语言支持:虽然通常与JavaScript一起提及,但DOM实际上是一种独立于语言的API。
  • 动态性:允许程序在运行时动态地改变文档的内容和结构。

二、DOM的核心组成部分

1. 文档节点(Document Node)

文档节点是DOM树的根节点,代表整个HTML文档。可以通过document对象访问。

示例:
console.log(document.title); // 输出当前页面的标题

2. 元素节点(Element Nodes)

元素节点代表HTML文档中的标签,如<div><p>等。每个元素都可以被视为DOM树中的一个节点。

示例:
let header = document.createElement("h1");
header.textContent = "Hello, World!";
document.body.appendChild(header);

3. 属性节点(Attribute Nodes)

属性节点包含关于元素的信息,例如idclass等。

示例:
let div = document.createElement("div");
div.setAttribute("id", "main-container");
console.log(div.getAttribute("id")); // 输出: main-container

4. 文本节点(Text Nodes)

文本节点包含在元素内的实际文本内容。

示例:
let paragraph = document.createElement("p");
let textNode = document.createTextNode("This is a paragraph.");
paragraph.appendChild(textNode);
document.body.appendChild(paragraph);

三、使用JavaScript操作DOM

1. 查找元素

可以通过多种方式查找DOM中的元素,包括getElementById()getElementsByClassName()getElementsByTagName()以及querySelector()querySelectorAll()

示例:
// 通过ID查找元素
let myDiv = document.getElementById("myDiv");

// 通过类名查找元素
let elements = document.getElementsByClassName("highlight");

// 使用CSS选择器查找第一个匹配项
let firstParagraph = document.querySelector("p");

// 使用CSS选择器查找所有匹配项
let allParagraphs = document.querySelectorAll("p");

2. 修改元素

一旦找到所需的元素,就可以通过修改其属性或内容来更新页面。

示例:
// 修改文本内容
firstParagraph.textContent = "New content";

// 修改属性
myDiv.setAttribute("style", "color: red;");

3. 添加或移除元素

可以通过appendChild()removeChild()等方法动态地添加或移除DOM中的元素。

示例:
// 创建新元素并添加到文档中
let newDiv = document.createElement("div");
newDiv.textContent = "I am a new div.";
document.body.appendChild(newDiv);

// 移除元素
document.body.removeChild(newDiv);

四、事件处理

DOM还提供了一种机制来响应用户的交互,比如点击、输入等,这被称为事件处理。

示例:
let button = document.createElement("button");
button.textContent = "Click me";
button.onclick = function() {
    alert("Button clicked!");
};
document.body.appendChild(button);

五、结语

感谢您的阅读!如果你有任何问题或想法,请在评论区留言交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2317650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【最新版】智慧小区物业管理小程序源码+uniapp全开源

一.系统介绍 智慧小区物业管理小程序,包含小区物业缴费、房产管理、在线报修、业主活动报名、在线商城等功能。为物业量身打造的智慧小区运营管理系统,贴合物业工作场景,轻松提高物业费用收缴率,更有功能模块个性化组合,助力物业节约成本高效运营。 二.搭建环境 系统环…

DeepSeek搭建本地知识库

1. 注册硅基流动 首先&#xff0c;打开浏览器&#xff0c;访问硅基流动的官方网站。 https://account.siliconflow.cn/ 在注册页面准确输入你的手机号&#xff0c;完成账号注册。这是搭建本地知识库的第一步&#xff0c;为后续获取重要权限做准备。 成功注册后&#xff0c;进…

实验9 高级搜索技术1

实验9 高级搜索技术1 一、实验目的 &#xff08;1&#xff09;掌握高级搜索技术的相关理论&#xff0c;能根据实际情况选取合适的搜索方法&#xff1b; &#xff08;2&#xff09;进一步熟悉爬山法搜索技术&#xff0c;掌握其在搜索过程中的优缺点&#xff1b; &#xff08;3&…

【数据挖掘】Python基础环境安装配置

【数据挖掘】Python基础环境安装配置 一、摘要二、安装Python3.13.2三、安装Jupyter Notebook四、安装Numpy和Pandas以及matplotlib五、安装scikit-learn库和seaborn库 一、摘要 本文主要介绍如何在Windows上安装Python3.13.2&#xff0c;然后基于该Python版本安装Jupyter not…

【2025新版本】【谷粒商城版】Kubernetes

本文作者&#xff1a; slience_me 文章目录 【2025】Kubernetes1. docker安装2. kubernetes安装前3. kubeadm,kubelet,kubectl3.1 简介kubeadmkubeletkubectl常用指令 3.2 安装3.3 kubeadm初始化3.4 加入从节点(工作节点)3.5 安装Pod网络插件&#xff08;CNI&#xff09;3.6 Ku…

vulhub-Billu-b0x攻略

靶场下载链接 https://download.vulnhub.com/billu/Billu_b0x.zip 将kali和Billu,NAT连接 获取靶场ip arp-scan -l 使用diesearch进行目录扫描 dirsearch -u " " 查看目录中的信息 打开add.php,得到有上传文件功能的&#xff08;看到后面你会发现其实这里就可以完…

vue3+Ts+elementPlus二次封装Table分页表格,表格内展示图片、switch开关、支持

目录 一.项目文件结构 二.实现代码 1.子组件&#xff08;表格组件&#xff09; 2.父组件&#xff08;使用表格&#xff09; 一.项目文件结构 1.表格组件&#xff08;子组件&#xff09;位置 2.使用表格组件的页面文件&#xff08;父组件&#xff09;位置 3.演示图片位置 ele…

数字人本地部署之llama-本地推理模型

llama 本地服务命令 llama-server.exe -m "data/LLM/my.gguf" --port 8080 -m data/LLM/my.gguf -m 属于命令行选项&#xff0c;一般用来指定要加载的模型文件。 data/LLM/my.gguf 是模型文件的路径。gguf 格式的文件是一种用于存储语言模型权重的文件格式&…

RUOYI框架在实际项目中的应用三:Ruoyi微服务版本-RuoYi-Cloud

如需观看Ruoyi框架的整体介绍&#xff0c;请移步&#xff1a;RUOYI框架在实际项目中的应用一&#xff1a;ruoyi简介 一、Ruoyi微服务版本-Ruoyi微服务版本 1、官方资料 1&#xff1a;代码地址&#xff1a;https://gitee.com/y_project/RuoYi-Cloud.git 2&#xff1a;文档介绍…

linux操作系统3

1.安装桌面的centos操作系统 二.linux相对路径和绝对路径 1.相对路径:从当前目录开始数的不完整路径 2.绝对路径:从跟开始数的完整路径 (这2种路径主要是为了方便用户操作) 3.linux用户和用户组管理 创建用户组:useradd 删除用户:userdel 用户的修改:usermod(可以修改用…

windows创建开机启动任务

1、背景 一个java应用程序&#xff0c;需要做成开机启动&#xff0c;系统为windows系统。 2、创建启动脚本 创建一个 .bat 文件&#xff08;例如 startup.bat&#xff09;&#xff0c;并将其保存到 Java 应用程序的目录中&#xff08;如 E:\gitcode\mygit\learn\database\jdk2…

素数判定方法详解:从基础试除法到优化策略

素数是只能被1和自身整除的正整数。素数的判定是数论中的基础问题&#xff0c;也是算法竞赛中的常见考点。 一、知识点 素数的定义&#xff1a; 素数&#xff08;质数&#xff09;是大于1的自然数&#xff0c;且只能被1和自身整除。 试除法&#xff1a; 通过遍历从2到sqrt(n)​…

BFS,DFS带图详解+蓝桥杯算法题+经典例题

1.BFS和DFS的定义与实现方式 1.1 深度优先搜索&#xff08;DFS&#xff09; 基本概念&#xff1a;DFS 是一种用于遍历或搜索图或树的算法。它从起始节点开始&#xff0c;沿着一条路径尽可能深地探索下去&#xff0c;直到无法继续或者达到目标节点&#xff0c;然后回溯到上一个…

「清华大学、北京大学」DeepSeek 课件PPT专栏

你要的 这里都打包好啦&#xff0c;快快收藏起来&#xff01; 名称 链接 团队简介 类型 DeepSeek——从入门到精通 1️⃣ DeepSeek从入门到精通「清华团队」 清华大学新闻与传播学院 新媒体研究中心 元宇宙文化实验室 PPT课件 DeepSeek如何赋能职场应用? ——从提示语…

如何在 Github 上获得 1000 star?

作为程序员&#xff0c;Github 是第一个绕不开的网站。我们每天都在上面享受着开源带来的便利&#xff0c;我相信很多同学也想自己做一个开源项目&#xff0c;从而获得大家的关注。然而&#xff0c;理想很丰满&#xff0c;现实却是开发了很久的项目仍然无人问津。 最近&#x…

on-policy对比off-policy

目录 持续更新。。。 on-policy与off-policy的定义 Q-learning属于on-policy算法还是off-policy算法&#xff1f; 为什么off-policy适用于从离线经验或多种探索策略中学习&#xff0c;明明 On-policy 也可以基于探索学习的啊&#xff1f; 重要性权重方法 off-policy方法可…

基于SpringBoot+Vue的幼儿园管理系统+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、教师、普通用户功能模块&#xff1a;用户管理、教师管理、班级管理、幼儿信息管理、会议记录管理、待办事项、职工考核、请假信息、缴费信息、体检管理、资源管理、原料管理、菜品信息管理等技术选型&#xff1a;SpringBoot&#xff0…

案例5_3: 6位数码管静态显示

文章目录 文章介绍效果图仿真图复习知识&#xff1a;代码思考 文章介绍 第5章 学习数码管&#xff0c;使用6位数码管进行静态显示 效果图 仿真图 新建一个干净的5_3文件夹&#xff0c;用于存放新画的仿真图 除单片机最小系统外&#xff0c;新增3个元器件&#xff0c;分别是&…

Profinet转Modbus RTU/TCP以太网通讯处理器

Profinet转Modbus RTU/TCP以太网通讯处理器 在当今的工业自动化领域&#xff0c;各种通讯协议和标准层出不穷。 其中&#xff0c;Profinet和Modbus作为两种广泛应用的通讯协议&#xff0c;分别在不同的应用场景中发挥着重要作用。 然而&#xff0c;当需要将这两种协议进行转换…

3倍训练速度+40%显存节省!Mamba+Transformer 仅用一半时间,性能提升80%!

在人工智能领域&#xff0c;Mamba与Transformer的结合正在成为研究热点&#xff0c;为自然语言处理和多模态任务带来新的突破。 最新研究表明&#xff0c;通过将Mamba架构与Transformer的强大编码能力相结合&#xff0c;模型在处理复杂的多模态数据时的效率提升了50%&#xff…