HTML+JavaScript-05

DOM

什么是 DOM?

DOM 是一项 W3C (World Wide Web Consortium) 标准。

DOM 定义了访问文档的标准:

“W3C 文档对象模型(DOM)是中立于平台和语言的接口,它允许程序和脚本动态地访问、更新文档的内容、结构和样式。”

W3C DOM 标准被分为 3 个不同的部分:

  • Core DOM - 所有文档类型的标准模型
  • XML DOM - XML 文档的标准模型
  • HTML DOM - HTML 文档的标准模型

HTML DOM(文档对象模型)

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

HTML DOM 模型被结构化为对象树

对象的 HTML DOM 树

image-20240122095453995

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

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

查找 HTML 元素

方法描述
document.getElementById(id)通过元素 id 来查找元素
document.getElementsByTagName(name)通过标签名来查找元素
document.getElementsByClassName(name)通过类名来查找元素

通过元素 id 来查找元素

<html><head></head><body><div id = "a"></div><script>const div = document.getElementById("a");console.log(div);</script></body>
</html>

image-20240122100558648

通过标签名来查找元素

<html><head></head><body><div></div><script>const div = document.getElementsByTagName("div");console.log(div);</script></body>
</html>

image-20240122101127835

通过类名来查找元素

<html><head></head><body><div class = "b"></div><script>const div = document.getElementsByClassName("b");console.log(div);</script></body>
</html>

image-20240122101218240

通过name属性获取 表单常用

<html><head></head><body><input type="text" name="xuehao"><input type="password" name="xuehao"><script>//通过name属性获取 表单常用const inp = document.getElementsByName("xuehao");console.log(inp);</script></body>
</html>

image-20240122102216038

通过多种方式进行获取

querySelector获取页面里面第一次出现的元素 只获取一个

<html><head></head><body><div id="a"></div><div></div><div class="b"></div><script>const div = document.querySelector("div");console.log(div);</script></body>
</html>

image-20240122102408096

通过类名获取

<html><head></head><body><div id="a"></div><div></div><div class="b"></div><script>//通过类名获取const div = document.querySelector(".b");console.log(div);</script></body>
</html>

image-20240122102702482

通过id名获取

<html><head></head><body><div id="a"></div><div></div><div class="b"></div><script>//通过id名获取const div = document.querySelector("#a");console.log(div);</script></body>
</html>

image-20240122102930107

通过属性获取

<html><head></head><body><input type="text" name="xuehao"><input type="password" name="xuehao"><script>//通过属性获取const inp = document.querySelector("[type=password]");console.log(inp);</script></body>
</html>

image-20240122103305883

querySelectorAll获取所有

注意:当使用querySelectorAll时,可以根据下标来指定html元素,例如console.log(div[0])在下面例子中控制台只输出第一个div元素

<html><head></head><body><div id="a"></div><div></div><div class="b"></div><script>//querySelectorAll获取所有const div = document.querySelectorAll("div");console.log(div);</script></body>
</html>

image-20240122103542030

支持复合选择器

<html><head></head><body><ol class="bbb"><li>有序数列</li><li>有序数列</li><li>有序数列</li></ol><ul><li>无序数列</li><li>无序数列</li><li>无序数列</li></ul><ol><li>有序数列</li><li>有序数列</li><li>有序数列</li></ol><script>//支持复合选择器const uls = document.querySelectorAll("ul>li");//获取ul下面的li标签console.log(uls);const ol = document.querySelectorAll("ul+ol");//+渲染下一个(ul相邻的下一个ol)console.log(ol);</script></body>
</html>

image-20240122111919872

事件

事件三要素

1、事件源(哪个元素触发了事件)

2、事件类型(通过点击触发、悬浮触发、移动触发、获取焦点触发等)

3、事件处理函数(触发事件要做什么)

示例

<html><head></head><body><button>秋名山车神</button><script>//获取事件源const but = document.querySelector("button");//绑定事件but.onclick = function(){alert("五菱宏光");}</script></body>
</html>

案例-046

innerHTMLinnerText

innerHTML可以识别html标签

innerText不能识别html标签

示例

<html><head></head><body><div id="a" style="height: 200px; width: 400px; background-color: paleturquoise;"></div><script>const div = document.querySelector("div");console.dir(div);//console.dir()打印元素对象的完整格式div.onclick = function () {// div.innerHTML = "<strong>JavaScript</strong>";//<strong>字体加粗标签div.innerText = "<strong>JavaScript</strong>";}</script></body>
</html>

案例-047

练习-1-获取当前时间

示例

案例-052

可以使用封装的函数toLocaleString(),也可以自定义函数。

代码

<!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><button>点击获取时间</button><div></div><script>var btn = document.querySelector("button");var div = document.querySelector("div");btn.onclick = function () {// div.innerHTML = getDate();const date = new Date();div.innerHTML = date.toLocaleString();}function getDate() {var date = new Date;console.log(date);var b = date.getHours();var c = date.getMinutes();var d = date.getSeconds();return b + ":" + c + ":" + d;}</script>
</body></html>

练习-2-修改表单内元素

示例

案例-053

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>js修改表单内的元素</title>
</head><body><button>修改</button><input type="text" placeholder="请输入值"><script>var btn = document.querySelector("button");var inp = document.querySelector("input");btn.onclick = function () {inp.value = "甲柒";btn.disabled = true;}</script>
</body></html>

练习-3-操做元素修改样式属性

示例

案例-054

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>操做元素修改样式属性</title><style>#aaa {width: 200px;height: 120px;background-color: pink;}</style>
</head><body><div id="aaa">甲柒</div><script>var a = document.querySelector("div");a.onclick = function () {a.style.backgroundColor = "yellowgreen";// this.style.backgroundColor = "skyblue";this.style.fontSize = "40px";}</script>
</body></html>

练习-4-src属性

示例

案例-055

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div {text-align: center;}img {width: 400px;height: 400px;}button {font-size: 17px;border-radius: 15px;}</style>
</head><body><div><button>上一页</button><img src="./avatar/0001.jpg"><button>下一页</button></div><script>//拿到imgconst img = document.querySelector("img");// 拿到 buttonconst buts = document.querySelectorAll("button");//数组路径const srcs = ["./avatar/0001.jpg", "./avatar/0002.jpg", "./avatar/0003.jpg", "./avatar/0004.jpg", "./avatar/0005.jpg", "./avatar/0006.jpg"]let index = 0;buts[0].disabled = true;buts[0].onclick = function () {buts[1].disabled = false;index--;if (index == 0) {this.disabled = true;img.src = srcs[index];} else {img.src = srcs[index];}}buts[1].onclick = function () {buts[0].disabled = false;index++;if (index == 5) {this.disabled = true;img.src = srcs[index];} else {img.src = srcs[index];}}</script>
</body></html>

练习-5-模拟关闭广告

示例

案例-056

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div class="max"><div class="min">*</div><img src="../甲柒/avatar/0003.jpg" class="img" style="width: 80px;height: 200px;"></div><script>var min = document.querySelector(".min");var img = document.querySelector(".img");min.onclick = function () {img.style.display = 'none';}</script>
</body></html>

Bootstrap

image-20240124173318995

Bootstrap文档

https://v5.bootcss.com/docs/getting-started/download/

Bootstrap的使用

示例-轮播图

案例-057

  • 下载Bootstrap的生产文件

  • 解压到项目的静态资源中

  • 引用css和js文件

<link rel="stylesheet" href="./bootstrap-5.3.0-alpha1-dist/css/bootstrap.min.css">
<script src="./bootstrap-5.3.0-alpha1-dist/js/bootstrap.min.js"></script>
  • 复制你所需要的代码

  • 将代码稍作修改

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./bootstrap-5.3.0-alpha1-dist/css/bootstrap.min.css"><script src="./bootstrap-5.3.0-alpha1-dist/js/bootstrap.min.js"></script><style>.carousel{width: 400px;height: 400px;margin: 0 auto;}</style>
</head><body><div id="carouselExampleInterval" class="carousel slide" data-bs-ride="carousel"><div class="carousel-inner"><div class="carousel-item active" data-bs-interval="10000"><img src="../甲柒/avatar/0001.jpg" class="d-block w-100" alt="..."></div><div class="carousel-item" data-bs-interval="2000"><img src="../甲柒/avatar/0002.jpg" class="d-block w-100" alt="..."></div><div class="carousel-item"><img src="../甲柒/avatar/0003.jpg" class="d-block w-100" alt="..."></div></div><button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleInterval"data-bs-slide="prev"><span class="carousel-control-prev-icon" aria-hidden="true"></span><span class="visually-hidden">Previous</span></button><button class="carousel-control-next" type="button" data-bs-target="#carouselExampleInterval"data-bs-slide="next"><span class="carousel-control-next-icon" aria-hidden="true"></span><span class="visually-hidden">Next</span></button></div>
</body></html>

练习-6-密码长度验证

示例

案例-058

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.red {color: red;}.green {color: green;}</style>
</head><body><input type="password"><span></span><script>//获取元素var inp = document.querySelector("input");var span = document.querySelector("span");//失去焦点时检查账号的字符长度是否在6-10inp.onblur = function () {if (this.value.length >= 6 && this.value.length <= 10) {span.style.color = "green";span.innerHTML = "✔";} else {span.style.color = "red";span.innerHTML = "✘";}}inp.onfocus = function () {span.innerHTML = "";}</script>
</body></html>

onblur 事件发生在对象失去焦点时。

onfocus 事件在元素获得焦点时发生。

练习-7-排他思想

示例

案例-059

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><button>按钮1</button><button>按钮2</button><button>按钮3</button><button>按钮4</button><script>// 获取所有buttonvar btn = document.querySelectorAll("button");for (let i = 0; i < btn.length; i++) {btn[i].onclick = function () {for (let j = 0; j < btn.length; j++) {btn[j].style.backgroundColor = "";//先设置所有按钮的背景颜色为空字符串}btn[i].style.backgroundColor = "skyblue";//设置点击中的按钮的背景颜色}}</script>
</body></html>

练习-8-切换皮肤

示例

案例-060

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>切换皮肤</title><style>.max {width: 1200px;height: 800px;margin: 0 auto;background-image: url(./image/1.jpg);background-size: 1200px 800px;position: relative;transition: all 0.7s;}img {width: 120px;height: 80px;margin-left: 4px;}.min {width: 520px;height: 80px;position: absolute;/* border: 2px solid yellowgreen; */bottom: 50px;right: 50px;}.big {transform: scale(1.1);transition: all 0.4s;}</style>
</head><body><div class="max"><div class="min"><img src="./image/1.jpg" alt="" class="big"><img src="./image/2.jpg" alt=""><img src="./image/3.jpg" alt=""><img src="./image/4.jpg" alt=""></div></div><script>var imgs = document.querySelectorAll("img");var max = document.querySelector(".max");for (let i = 0; i < imgs.length; i++) {imgs[i].onclick = function () {max.style.backgroundImage = "url(" + this.src + ")";//清除classfor (let j = 0; j < imgs.length; j++) {imgs[j].className = "";}this.className = "big";}}</script>
</body></html>

练习-9-随机生成颜色

示例

案例-061

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.max {width: 400px;height: 400px;border: 4px solid skyblue;transition: all 0.7s;}</style>
</head><body><div class="max"></div><script>var col = document.querySelector(".max");col.onclick = function () {var r = Math.floor(Math.random() * 256);var g = Math.floor(Math.random() * 256);var b = Math.floor(Math.random() * 256);var rgb = "rgb(" + r + "," + g + "," + b + ")";this.style.backgroundColor = rgb;}</script>
</body></html>

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

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

相关文章

AI绘画探索人工智能的未来

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-8fL64RHWVzwpzR6m {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

【知识图谱--第一讲概论】

深度学习–连接主义 知识图谱–符号主义 表示 有属性图和RDF图两种 RDF由三元组表示&#xff1a;Subject - Predicate - Object 存储 图数据库 抽取 融合 推理 问答 图算法

Seata下载与配置、启动

目录 Seata下载Seata配置启动Seata Seata下载 首先&#xff0c;我们需要知道我们要使用哪个版本的seata&#xff0c;这就要查看spring-cloud-alibaba版本说明&#xff0c;找到我们对应的seata。 spring-cloud-alibaba版本说明: 地址链接 下面是部分版本说明&#xff1a; s…

【MyBatis】MyBatis是什么?作用?怎么实现?

一、MyBatis是什么 MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;Plain …

虚拟机扩容后黑屏卡死解决方法

亲测有效&#xff0c;首先一般是在扩容后黑屏的&#xff0c;现象为开机后看到个横线光标不闪&#xff0c;黑屏&#xff0c;进入不了桌面。原因是硬盘已经满了&#xff0c;所以解决方法就是清理硬盘。所以首先还是要解决登录问题。 开机时按 esc 键进入 GNU GRUB&#xff0c;选择…

详解SpringCloud微服务技术栈:深入ElasticSearch(4)——ES集群

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;详解SpringCloud微服务技术栈&#xff1a;深入ElasticSearch&#xff08;3&#xff09;——数据同步&#xff08;酒店管理项目&a…

新火种AI|GPT Store可能是一个“硅基人才市场”

作者&#xff1a;一号 编辑&#xff1a;美美 也许我们都错了&#xff0c;GPT Store可能是一个“硅基人才市场”&#xff0c;而不是APP Store。 如果要说在AI领域中最火的一个应用&#xff0c;那么在当下&#xff0c;毫无疑问会是ChatGPT。 2023年&#xff0c;全球前50的AI工…

IT行业中最重要的证书

在IT行业&#xff0c;拥有一些含金量较高的证书是职业发展的关键。这些证书不仅可以证明技能水平&#xff0c;还有助于提升在职场上的竞争力。本文将介绍几个IT行业中最重要的证书。 1. Cisco认证 CCNA&#xff08;Cisco Certified Network Associate&#xff09;是Cisco公司新…

LeetCode: 189.轮转数组

本篇目标了解&#xff0c;翻转数组的经典解法&#xff0c; 189. 轮转数组 - 力扣&#xff08;LeetCode&#xff09; 目录 基本方法概述&#xff1a; 1&#xff0c;翻转做法&#xff0c;推荐时O&#xff08;n&#xff09;&#xff0c;空&#xff08;1&#xff09; 2&#x…

J-Link:STM32使用J-LINK烧录程序,其他MCU也通用

说明&#xff1a;本文记录使用J-LINK烧录STM32程序的过程。 1. J-LINK驱动、软件下载 1、首先拥有硬件J-Link烧录器。 2、安装J-Link驱动程序SEGGER 下载地址如下 https://www.segger.com 直接下载就可以了。 2.如何使用J-LINK向STM32烧写程序 1、安装好以后打开J-LINK Fl…

黑方备份学习(1):linux安装 黑方容灾备份与恢复系统软件v6.0 代理

1.环境准备 1.1硬件环境 内存>4G&#xff0c;cpu最低双核 1.2把SElinux状态改为Disabled &#xff08;1&#xff09;查看SElinux状态 输入getenforce命令 SELinux共有3个状态&#xff1a; enforcing &#xff08;执行中&#xff09;、permissive &#xff08;不执行但…

SOME/IP 协议介绍(七)传输 CAN 和 FlexRay 帧

SOME/IP 不应仅用于传输 CAN 或 FlexRay 帧。但是&#xff0c;消息 ID 空间需要在两种用例之间进行协调。 传输 CAN/FlexRay 应使用完整的 SOME/IP 标头。 AUTOSAR Socket-Adapter 使用消息 ID 和长度来构建所需的内部 PDU&#xff0c;但不会查看其他字段。因此&#xff0c;必…

029-安全开发-JS应用DOM树加密编码库断点调试逆向分析元素属性操作

029-安全开发-JS应用&DOM树&加密编码库&断点调试&逆向分析&元素属性操作 #知识点&#xff1a; 1、JS技术-DOM树操作及安全隐患 2、JS技术-加密编码及数据安全调试 演示案例&#xff1a; ➢JS原生开发-DOM树-用户交互 ➢JS导入库开发-编码加密-逆向调试 ➢两…

Python之数据可视化(地图)

目录 一 基础地图应用 二 全国疫情图 一 数据准备 二 数据处理 二 湖北省疫情图 一 数据准备 二 数据处理 一 基础地图应用 导入map地图对象 from pyecharts.charts import Map map Map() 写入数据 data [("北京市",100),("上海市"…

Ansible自动化运维实战

一、abstract简介 ansible是新出现的自动化运维工具&#xff0c;基于Python开发&#xff0c;集合了众多运维工具(puppet、cfengine、chef、func、fabric) 的优点&#xff0c;实现了批量系统配置、批量程序部署、批量运行命令等功能.无客户端。我们要学一些Ansible的安装和一些基…

【劳德巴赫 Trace32 高阶系列 4 -- Trace32 JTAG 常用命令】

文章目录 Trace32 JTAG 常用命令JTAG.PINJTAG 信号值读取JTAG.SHIFTREGExampleJTAG.SHIFTTDIExampleJTAG.SHIFTTMSExampleJTAG.PROGRAM.SVFTrace32 JTAG 常用命令 JTAG (Joint Test Action Group) 是一种常用的调试和测试标准,用于在电子系统的芯片和板级测试中。在JTAG标准中…

2024最新版MongoDB安装使用指南

2024最新版MongoDB安装使用指南 Installation and Usage Guide of the Latest MongoDB Community Edition in 2024 By JacksonML MongoDB is a document database with the scalability and flexibility that you want with the querying and indexing that you need. – mon…

gitlib部署及应用

一. 下载源网址 Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source MirrorIndex of /gitlab-ce/yum/el7/ | 清华大学开源软件…

2024-01-06-AI 大模型全栈工程师 - 大模型时代的 AI 产品新挑战

摘要 2024-01-06 周六 杭州 晴 课程内容 1. 上一代 AI 能做什么&#xff1f; 2. AI 的能力演进 3. LLMS 带来了哪些变化 4. LLMS 存在哪些问题 5. LLMS 落地的三个关键要素 6. LLMS 短期落地的方向-内容生成 7. LLMS 中期落地的方向-智能体 8. 从 LLMS 到可落地的应用 9. LL…

八种Flink任务监控告警方式

目录 一、Flink应用分析 1.1 Flink任务生命周期 1.2 Flink应用告警视角分析 二、监控告警方案说明 2.1 监控消息队中间件消费者偏移量 2.2 通过调度系统监控Flink任务运行状态 2.3 引入开源服的SDK工具实现 2.4 调用FlinkRestApi实现任务监控告警 2.5 定时去查询目标库…