零基础快速入门前端DOM核心知识点详解与蓝桥杯Web赛道备考指南(可用于备赛蓝桥杯Web应用开发)

news2026/3/29 4:39:01
DOM文档对象模型是 HTML/XML 文档的编程接口通过它可动态操作网页内容、结构与样式。本文将结合示例代码系统讲解 DOM 核心知识点重点补充事件系统全解并针对蓝桥杯 Web 应用开发赛道给出针对性备考建议。一、DOM 核心知识点详解1. DOM 元素获取获取 DOM 元素是所有操作的基础常用方法如下querySelector(selector)返回第一个匹配 CSS 选择器的元素支持所有 CSS 选择器语法。querySelectorAll(selector)返回所有匹配元素的NodeList 类数组可通过 for 循环遍历。代码示例// 获取单个class为text的输入框 var text document.querySelector(.text); // 获取所有class为item的日期元素 var items document.querySelectorAll(.item);2. 事件系统全解蓝桥杯核心高频考点事件是 DOM 交互的核心网页的所有用户交互都基于事件机制实现也是蓝桥杯 Web 赛道每年必考的核心内容占比超 40%。下面从基础原理到实战应用结合示例代码完整讲解。2.1 事件的核心三要素任何一个 DOM 事件都由三个核心部分组成缺一不可事件源触发事件的 DOM 元素比如示例中的输入框、日期 div、可点击的 div事件类型触发的动作类别比如输入、点击、鼠标移入、失焦事件处理函数事件触发后要执行的代码逻辑结合示例代码解析// 事件源class为text的input输入框 var text document.querySelector(.text); // 事件类型input输入事件 // 事件处理函数function内的逻辑 text.oninput function(){ console.log(this.value); // 输入时实时打印输入内容 }2.2 事件绑定的三种方式含蓝桥杯考点对比蓝桥杯常考三种绑定方式的区别、适用场景与坑点下面结合示例代码逐一讲解1HTML 行内绑定内联事件直接在 HTML 标签的属性中绑定事件格式为on事件名执行代码/函数调用原文第三个代码块使用了该方式!-- 事件源div事件类型click处理函数div1Click()调用 -- div iddd classdiv1 onclickdiv1Click()ggx jiayou/div script function div1Click(){ console.log(div1被点击了); } /script特点HTML 与 JS 强耦合不推荐工程化使用但蓝桥杯简单题目中会出现核心坑点行内绑定的函数必须是全局函数且this默认指向window而非事件源元素蓝桥杯考法改错题型中常考「行内绑定调用的函数未定义」「this 指向错误」的问题2DOM0 级事件绑定示例代码核心使用方式通过DOM元素.on事件名 处理函数的方式绑定原文中所有的oninput/onclick/onmouseenter均为该方式// 给所有日期item绑定点击事件 for(var i0;iitems.length;i){ var item items[i]; item.onclick function(){ // 点击后的高亮切换逻辑 } }核心特点同一个元素的同一个事件类型只能绑定一个处理函数后绑定的会完全覆盖之前的this指向触发事件的元素本身和行内绑定有本质区别仅支持事件冒泡阶段触发不支持捕获阶段解绑方式元素.on事件名 null蓝桥杯考法tab 切换、高亮选中、表单输入处理等核心题型的标准写法必须熟练掌握3DOM2 级事件绑定蓝桥杯进阶高频考点通过addEventListener()方法绑定是工业级开发的标准方式也是蓝桥杯难题的核心考点// 语法元素.addEventListener(事件类型, 处理函数, 捕获/冒泡配置) text.addEventListener(input, function(e){ console.log(输入内容, this.value); }, false);核心特点同一个元素的同一个事件类型可以绑定多个不同的处理函数按绑定顺序依次执行第三个参数可控制触发阶段false默认冒泡阶段/true捕获阶段this指向事件源元素事件对象会作为第一个参数自动传入处理函数解绑方式必须使用removeEventListener()且处理函数必须是同一个函数引用匿名函数无法解绑蓝桥杯考法事件委托、事件流控制、多事件绑定的复杂交互题必考该方法2.3 事件对象 Event蓝桥杯必考核心事件触发时浏览器会自动创建一个Event事件对象包含了该事件的所有详细信息比如触发的元素、鼠标位置、键盘按键等并自动传入事件处理函数。1获取方式DOM0 级绑定可通过window.event或处理函数的第一个形参获取DOM2 级绑定通过处理函数的第一个形参获取标准写法item.onclick function(e){ // 兼容所有浏览器的写法 var event e || window.event; console.log(event); }2蓝桥杯高频常用属性 方法事件对象成员核心作用蓝桥杯核心考法event.target触发事件的实际目标元素最内层元素事件委托的核心必考event.currentTarget绑定事件的元素和this指向完全一致区分事件源与绑定元素改错题型常考event.preventDefault()阻止元素的默认行为表单提交阻止页面刷新、a 标签跳转阻止、右键菜单阻止必考event.stopPropagation()阻止事件冒泡 / 捕获的传播弹窗点击关闭、父子元素事件冲突处理高频考点event.key/event.keyCode键盘事件的按键值 / 按键编码回车提交表单、快捷键功能、输入限制表单题常考2.4 事件流机制捕获→目标→冒泡事件流描述了事件在 DOM 树中的传播顺序分为 3 个阶段是理解事件行为的核心也是蓝桥杯的难点考点捕获阶段事件从window对象开始自上而下向目标元素传播目标阶段事件到达实际触发的目标元素冒泡阶段事件从目标元素自下而上向window对象传播核心规则DOM0 级绑定、行内绑定仅能在冒泡阶段触发事件addEventListener的第三个参数为true时在捕获阶段触发false默认在冒泡阶段触发结合示例代码的核心考点 示例中使用的onmouseenter/onmouseleave和onmouseover/onmouseout的核心区别就是是否冒泡mouseenter/mouseleave不冒泡仅在鼠标进入 / 离开绑定元素本身时触发不会因为子元素触发而冒泡完美适配示例中的日期 item 悬浮效果不会出现误触发mouseover/mouseout会冒泡鼠标进入 / 离开绑定元素、子元素都会触发容易出现意外的悬浮效果蓝桥杯改错题型常考这个坑2.5 常用事件类型全解结合示例代码 蓝桥杯考法下面按类别详解示例中用到的、以及蓝桥杯高频考察的事件类型明确触发时机与核心区别1表单事件原文第一部分代码核心蓝桥杯表单验证、实时搜索、输入限制题必考示例中用到了 4 个核心表单事件事件名触发时机核心考点oninput输入框的值发生变化时实时触发每输入 / 删除一个字符就触发实时字数统计、实时搜索、输入内容格式化蓝桥杯最高频表单事件onchange输入框失焦且值和获焦时相比发生了变化才触发表单值校验、下拉框选择处理和oninput的触发时机区别是必考考点onfocus元素获得焦点时触发输入框获焦时的提示文案隐藏、样式高亮onblur元素失去焦点时触发失焦时的表单校验、输入内容格式化示例代码行为解析// 每输入一个字符就会触发实时获取输入值 text.oninputfunction(){ console.log(this.value); } // 只有输入框失焦且内容发生了修改才会触发 text.onchangefunction(){ console.log(changed, this.value); } // 点击输入框光标进入时触发 text.onfocusfunction(){ console.log(get focus); } // 点击输入框外的区域光标离开时触发 text.onblurfunction(){ console.log(lose focus); }2鼠标事件原文第二部分代码核心蓝桥杯点击交互、悬浮效果、拖拽题必考示例中用到了 3 个核心鼠标事件事件名触发时机核心考点onclick鼠标左键按下并松开且在同一个元素上完成时触发按钮点击、tab 切换、高亮选中最基础的高频事件onmouseenter鼠标进入绑定元素本身时触发不冒泡悬浮高亮、悬浮提示适合列表项的悬浮效果无冒泡误触发onmouseleave鼠标离开绑定元素本身时触发不冒泡悬浮效果还原和mouseenter配对使用补充高频鼠标事件onmousedown/onmouseup鼠标按下 / 松开时触发优先级高于click拖拽题必考ondblclick鼠标双击时触发3键盘事件蓝桥杯高频考点常用于搜索框回车提交、快捷键、输入限制核心事件onkeydown键盘按键按下时触发按住会连续触发onkeyup键盘按键松开时触发能获取到输入完成后的最终值蓝桥杯考法回车提交表单、数字输入限制、ESC 关闭弹窗4页面 / 窗口事件蓝桥杯坑点考点window.onload页面所有资源HTML、CSS、JS、图片全部加载完成后触发DOMContentLoadedDOM 树解析完成后触发早于onload蓝桥杯坑点JS 代码写在head中时DOM 还未解析获取元素会返回null必须用这两个事件包裹代码2.6 事件委托事件代理- 蓝桥杯超高频必考事件委托是利用事件冒泡的特性把多个子元素的事件绑定统一交给父元素处理是蓝桥杯列表交互题的最优解也是必考点。1核心优势性能提升无需循环给每个子元素绑定事件减少内存占用动态元素兼容后续新增的子元素自动拥有事件效果无需重新绑定代码更简洁避免循环绑定的冗余代码2结合示例代码的实现原日期选择代码中通过 for 循环给 7 个 item 分别绑定了 3 个事件用事件委托优化后只需给父元素.dataDiv绑定一次事件即可// 获取父元素 var dataDiv document.querySelector(.dataDiv); var lastIndex 0; var items document.querySelectorAll(.item); // 点击事件委托给父元素 dataDiv.addEventListener(click, function(e){ var target e.target; // 找到点击的item元素兼容点击子div的情况 var item target.closest(.item); if(!item) return; // 不是item元素不执行 var index item.getAttribute(index); if(lastIndex index) return; // 高亮当前点击的item item.id bg; item.style.color red; item.style.backgroundColor rgb(215,215,214); // 清除上一个选中的样式 items[lastIndex].id ; items[lastIndex].style.color black; items[lastIndex].style.backgroundColor ; lastIndex index; }); // 鼠标移入事件委托mouseenter不冒泡需开启捕获阶段 dataDiv.addEventListener(mouseenter, function(e){ var item e.target.closest(.item); if(!item) return; var index item.getAttribute(index); console.log(mouseenter no.index div); item.style.color red; item.style.backgroundColor rgb(215,215,214); }, true); // 鼠标移出事件委托 dataDiv.addEventListener(mouseleave, function(e){ var item e.target.closest(.item); if(!item) return; var index item.getAttribute(index); console.log(mouseleave no.index div); if(item.id ){ item.style.color black; item.style.backgroundColor ; } }, true);3. DOM 属性操作1自定义属性通过setAttribute()设置、getAttribute()获取自定义属性常用于给元素存储额外数据。代码示例// 给日期元素设置index属性存储下标 item.setAttribute(index, i); // 获取点击元素的index下标 var index this.getAttribute(index);2标准属性直接通过元素对象修改 HTML 标准属性如id、value、className等。代码示例// 切换div1的id属性 div1.id div1.id dd ? dd2 : dd;4. 样式操作1style属性修改单个样式CSS 属性名需转驼峰命名如font-size→fontSize。代码示例div2.style.color red; div2.style.fontSize 25px;2className操作通过修改class属性批量切换样式追加类名时需注意空格分隔。代码示例// 追加类名注意前面的空格避免和原有类名拼接 div2.className div22;3classList推荐更灵活的类名操作是蓝桥杯样式切换的首选方案支持add()添加、remove()移除、contains()判断是否存在、toggle()切换。代码示例div3.classList.add(div33); // 添加类 if (div3.classList.contains(div333)) { // 判断类是否存在 div3.classList.remove(div333); // 移除类 }5. 类数组对象querySelectorAll返回的NodeList是类数组对象可通过for循环遍历但不支持数组的push/filter等原生方法。代码示例// 遍历所有item元素 for (var i 0; i items.length; i) { var item items[i]; // 对每个item执行操作 }二、DOM 核心知识点汇总表基础 DOM 知识点汇总知识点分类具体内容关键描述代码示例元素获取querySelector获取第一个匹配 CSS 选择器的元素document.querySelector(.text)querySelectorAll获取所有匹配元素的 NodeList 类数组document.querySelectorAll(.item)属性操作自定义属性setAttribute()设置、getAttribute()获取自定义属性item.setAttribute(index, i)标准属性直接修改id/value/className等 HTML 标准属性div1.id dd2样式操作style属性修改单个样式CSS 属性需转驼峰命名div2.style.color redclassName覆盖或追加元素的 class 属性div2.className div22classList灵活操作类名支持 add/remove/contains/toggle推荐使用div3.classList.add(div33)类数组对象NodeList 遍历用 for 循环遍历 querySelectorAll 返回的类数组for (var i 0; i items.length; i) { /* 操作 */ }事件系统专项汇总表知识点分类具体内容核心考点与适用场景事件绑定方式HTML 行内绑定HTML 与 JS 耦合仅适用于极简场景蓝桥杯改错题型常考DOM0 级绑定写法简单单事件单处理函数tab 切换、简单点击场景首选DOM2 级绑定支持多处理函数、事件流控制事件委托、复杂交互场景必考事件对象event.target事件委托核心获取实际触发事件的元素必考event.preventDefault()阻止元素默认行为表单提交、a 标签场景必考event.stopPropagation()阻止事件冒泡解决父子元素事件冲突高频考点高频事件类型表单事件input/change/focus/blur表单验证、实时输入处理蓝桥杯表单题必考鼠标事件click/mouseenter/mouseleave点击交互、悬浮效果基础交互题必考键盘事件keydown/keyup回车提交、快捷键、输入限制高频考点进阶机制事件流捕获 / 目标 / 冒泡理解事件传播顺序区分 mouseenter 与 mouseover 的核心事件委托列表交互、动态元素的最优方案蓝桥杯超高频必考三、蓝桥杯 Web 应用开发赛道省赛备考建议1. 核心考点优先级梳理蓝桥杯 Web 省赛的考点有明确的权重分布按优先级排序如下DOM 事件与交互占比 40%事件绑定、事件委托、表单事件、鼠标事件是绝对核心每年省赛至少 3 道题直接考察DOM 样式与属性操作占比 20%classList、style 属性、自定义属性操作是所有交互题的基础本地存储占比 15%localStorage/sessionStorage的读写todolist、数据持久化题必考基础布局与 CSS占比 15%Flex 布局、定位、过渡动画和 DOM 操作结合出题JS 基础语法占比 10%数组方法、循环、条件判断贯穿所有题目2. 真题专项训练策略事件专项突破集中刷「tab 切换」「表单验证」「列表点击高亮」「悬浮交互」四类题型这四类题型 100% 覆盖事件核心考点是省赛必出题。重点掌握事件委托的写法省赛中动态渲染的列表题必须用事件委托才能实现完整功能也是评分的核心得分点。限时模拟训练严格按考试时间4 小时刷整套历年真题提升做题速度与应试心态避免出现 “会做但做不完” 的情况错题复盘整理重点分析错误原因比如「oninput 和 onchange 用混」「事件委托的 target 判断错误」「this 指向混淆」针对性强化薄弱点3. 高频得分技巧与避坑指南表单实时交互需求优先用oninput不要用onchange避免出现 “输入后不触发” 的问题列表元素的事件绑定优先用事件委托不要循环绑定既提升性能也能兼容动态新增的元素样式批量切换优先用classList操作类名不要大量写style属性修改代码更简洁也更容易判分代码写在head中时必须用window.onload或DOMContentLoaded包裹避免出现 “获取不到 DOM 元素” 的低级错误事件处理函数中优先用event.target获取触发元素避免循环绑定中的闭包坑比如示例中循环绑定的 i 值问题

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…