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

DOM入门知识

1. 什么是DOM?

DOM(文档对象模型)就像网页的"骨架",浏览器把HTML变成一棵树,JavaScript可以通过这棵树来修改网页内容。

DOM的简单理解

  • 每个HTML标签都是一个节点(Node)
  • 整个网页是最大的节点(document)(可以不用获取直接引用
  • 我们可以用JavaScript找到并修改这些节点

  1. 获取DOM对象

获取单个元素

// 通过ID获取(等效于getElementById,但更通用)
const header = document.querySelector("#header");// 通过类名获取第一个匹配元素
const firstButton = document.querySelector(".btn");

获取多个元素

// 获取所有类名为btn的元素(返回NodeList)
const buttons = document.querySelectorAll(".btn");
buttons.forEach(button => {button.style.color = "red";
});

📌 注意:

querySelector返回第一个匹配元素,未找到则返回null。

querySelectorAll返回所有匹配元素的静态NodeList(非实时更新)68。

3. 操作元素内容(修改文字/HTML)

找到元素后,就可以修改它的内容了:

修改文字内容

const title = document.querySelector("title");
title.innerText = "新的标题"; // 只修改文字

修改HTML内容

const box = document.querySelector(".box");
box.innerHTML = "<strong>加粗的文字</strong>"; // 会解析HTML标签

4. 修改元素属性

HTML标签的属性(如srchref)也可以修改:

常用属性操作

const image = document.querySelector("img");// 读取属性
console.log(image.src); // 打印图片地址// 修改属性
image.src = "new-image.jpg"; // 更换图片
image.alt = "这是一张新图片"; // 修改提示文字

修改样式

const box = document.querySelector("box");// 直接改样式
box.style.backgroundColor = "blue";
box.style.fontSize = "20px";// 通过class改(推荐)
box.classList.add("active"); // 添加class
box.classList.remove("old"); // 删除class
box.classList.toggle("hidden"); // 切换class(有就删,没有就加)

5. 自定义属性(data-*)

HTML5允许我们添加自定义属性,用来存储额外信息:

HTML设置

<div id="user" data-user-id="123" data-role="admin">用户信息</div>

JavaScript读取

const user = document.querySelector("user");// 读取
console.log(user.dataset.userId); // "123"
console.log(user.dataset.role); // "admin"// 修改
user.dataset.role = "guest";

🌟 优点:不会和标准属性冲突,适合存储临时数据


6. 总结

操作代码示例
获取元素document.querySelector("id")
修改文字element.innerText = "新内容"
修改HTMLelement.innerHTML = "<b>内容</b>"
修改属性img.src = "new.jpg"
修改样式box.style.color = "red"
操作classbox.classList.add("active")
自定义属性element.dataset.xxx = "值"

🎯 记住:DOM操作就像用遥控器操作电视,要先找到按钮(获取元素),再按下按钮(执行操作)!

http://www.xdnf.cn/news/15444.html

相关文章:

  • 回顾一下Docker的基本操作
  • 简单易懂,操作系统的内存管理机制是如何实现的
  • 「Java题库」循环结构(理论+操作)
  • 博客项目 laravel vue mysql 第六章 文章功能
  • 手写签名提取工具
  • 生成requirements.txt文件
  • Web3.0 学习方案
  • Docker安装升级redis,并设置持久化
  • 4.增-demo
  • Datawhale AI夏令营 机器学习2.1
  • python学智能算法(二十)|SVM基础概念-感知机算法及代码
  • Gitlab跑CICD的时候,maven镜像和pom.xml使用的maven版本冲突导致没办法build成功的解决方法
  • mac上的app如何自动分类
  • 图灵在二战期间是如何破译德国军用密码的?
  • 20250715使用荣品RD-RK3588开发板在Android13下接入USB3.0接口的红外相机
  • 第八章,应用题
  • Python 字典 (Dictionary) 详解
  • linux系统------HAProxy 配置
  • Isaac Sim仿真赋能机器人工作流,推动具身智能在机器人领域研究
  • 弗兰肯斯坦式的人工智能与GTM策略的崩溃
  • 【Qt】 设计模式
  • 云蝠智能赋能呼入场景——重构企业电话服务
  • 可下载或通过爬虫获取疾病相关数据的网站及平台,涵盖临床数据、基因关联、药品信息等方向,并附注数据特点与获取方式:(不公开)
  • Process Lasso:提升电脑性能的得力助手
  • (3)从零开发 Chrome 插件:网页图片的批量下载
  • 辨析git reset三种模式以及和git revert的区别:回退到指定版本和撤销指定版本的操作
  • 【Ubuntu22.04】repo安装方法
  • 基于STM32的智能火灾报警系统设计
  • AI|大模型入门(六):GPT→盘古,国内外大模型矩阵速览
  • kotlin布局交互