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

JS-第二十天-事件(二)

📚 学习概览

今日重点学习了JavaScript中的事件处理机制,从基础概念到实际应用,构建了完整的事件处理知识体系。


🎯 核心知识点

1. 事件基础概念

事件:用户与页面交互时触发的行为(如点击、移动鼠标等) 事件源:绑定事件监听器的元素 事件目标:实际触发事件的元素

// 基础事件绑定
document.getElementById('btn1').onclick = function () {alert('程序流程')
}

2. 事件对象 (Event Object)

事件对象包含了事件发生的所有信息数据集合

常用属性:
  • event.target - 事件目标元素

  • event.type - 事件类型

  • event.clientX/clientY - 相对于窗口的坐标

  • event.offsetX/offsetY - 相对于元素边界的坐标

  • event.pageX/pageY - 相对于页面的坐标

document.getElementById('btn1').onclick = function (event) {console.log(event.clientX, event.clientY); // 窗口坐标console.log(event.offsetX, event.offsetY); // 元素坐标console.log(event.pageX, event.pageY);     // 页面坐标console.log(event.target);                 // 事件目标
}

3. 鼠标跟随效果

利用事件对象实现图片跟随鼠标移动:

document.onmousemove = function (event) {let x = event.pageX;let y = event.pageY;document.querySelector('img').style.left = x + 'px';document.querySelector('img').style.top = y + "px";
}

4. 事件流 (Event Flow)

事件在DOM树中的传播过程,包含三个阶段:

事件流三个阶段:
  1. 捕获阶段 (Capture Phase) - 从根节点到目标节点

  2. 目标阶段 (Target Phase) - 到达目标节点

  3. 冒泡阶段 (Bubble Phase) - 从目标节点回到根节点

代码示例:
// 冒泡阶段(默认)
$span.onclick = function (event) {console.log('span被点了');event.stopPropagation(); // 阻止冒泡
}
​
// 捕获阶段
$span.addEventListener('click', function () {console.log('span捕获');
}, true); // 第三个参数true表示捕获阶段

5. 事件委托 (Event Delegation)

将事件监听器绑定到父元素上,利用事件冒泡机制处理子元素事件

优势:
  • 减少事件监听器数量

  • 动态元素也能正常响应事件

  • 提高性能

// 事件委托示例
$ul.onclick = function (e) {if (e.target.tagName == "LI") {alert(e.target.innerHTML);}
}

6. 阻止默认行为

document.querySelector("a").onclick = function (e) {e.preventDefault(); // 阻止链接跳转
}

💼 实战项目:员工信息管理系统【详细查看另外一个文档】

功能特性:

  • ✅ 员工信息的增删改

  • ✅ 弹窗表单交互

  • ✅ 事件委托处理动态元素

🔧 实用技巧

1. 坐标系统理解

  • clientX/Y - 相对于浏览器窗口

  • offsetX/Y - 相对于触发元素

  • pageX/Y - 相对于整个页面(包含滚动)

2. 事件委托的最佳实践

  • 使用 e.target 判断具体触发元素

  • 通过 tagNameclassName 进行元素筛选

  • 适用于动态添加的元素

3. 阻止事件传播

  • event.stopPropagation() - 阻止冒泡

  • event.preventDefault() - 阻止默认行为


📝 学习心得

  1. 事件流理解:掌握事件捕获和冒泡机制是理解事件委托的基础

  2. 实践重要性:通过表格管理系统项目,将理论知识转化为实际应用

  3. 代码复用:事件委托技术大大提高了代码的可维护性和性能

  4. 用户体验:合理的交互设计(如弹窗、确认框)提升用户体验


PS:文档来源于老师。但是不知道博客号所以没有办法@

http://www.dtcms.com/a/314874.html

相关文章:

  • 股票的涨跌原理
  • Flink从Kafka读取数据的完整指南
  • ref和reactive的区别
  • 图的存储方式-邻接表
  • 燃气末端天然气加臭剂四氢噻吩监测方案
  • lwIP 代码解析:sys_arch.c
  • 从 0 到 1 构建高质量微调数据集:大模型落地的基石
  • 单向链表练习
  • Linux Shell:常用命令汇总
  • 邻近标记技术:研究蛋白互作的利器(一)
  • 论文Review LIO Multi-session Voxel-SLAM | 港大MARS出品!体素+平面特征的激光SLAM!经典必读!
  • 简要探讨大型语言模型(LLMs)的发展历史
  • 每天学一个Linux命令(38):vi/vim
  • 决策树(回归树)全解析:原理、实践与应用
  • Excel商业智能分析报表 【销售管理分析仪】
  • 编译 Paddle 遇到 flashattnv3 段错误问题解决
  • PostgreSQL——表的基本操作
  • 前端接入通义千问(各大模型接入方法类似)
  • 【Spring Boot 快速入门】六、配置文件
  • 15个命令上手Linux!
  • 回归分析:从数据类型到预测模型的核心逻辑
  • 8.4 打卡 DAY 33: 第一个神经网络 - MLP的构建与训练
  • 《时间之隙:内存溢出》
  • [自动化Adapt] 数据脱敏 | 文本替换/图像模糊 | 引擎热插拔 | 多队列并行处理
  • 网络资源模板--基于Android Studio 实现的消消乐游戏
  • ffmpeg下载windows教程
  • 高密度客流识别精度↑32%!陌讯多模态融合算法在智慧交通的实战解析
  • 模拟IC设计提高系列8-运算跨导放大器OTA Operational Transconduct Amplifiers
  • Cursor国产平替重磅开源!离线研发AI助手,拒绝云端受制于人
  • 【数据结构初阶】--顺序表(一)