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

做网站哈尔滨百度文档怎么免费下vvv

做网站哈尔滨,百度文档怎么免费下vvv,无锡百度快速优化排名,网站开发成本估计本文详细介绍JavaScript事件机制。 本文目录1. 事件类型分类2. 事件绑定方式3. 事件对象4. 事件冒泡与捕获5. 事件委托6. 自定义事件7. 事件应用场景JavaScript 事件是浏览器与用户交互的基础机制,允许代码对用户行为,如点击、滚动或浏览器状态变化&…

本文详细介绍JavaScript事件机制。

本文目录

        • 1. 事件类型分类
        • 2. 事件绑定方式
        • 3. 事件对象
        • 4. 事件冒泡与捕获
        • 5. 事件委托
        • 6. 自定义事件
        • 7. 事件应用场景

JavaScript 事件是浏览器与用户交互的基础机制,允许代码对用户行为,如点击、滚动或浏览器状态变化,如页面加载完成做出响应。下面详细介绍关于 JavaScript 事件的核心概念和使用方法。

1. 事件类型分类

JavaScript 支持多种事件类型,常见的分为以下几类:

// 鼠标事件
document.addEventListener('click', function() { /* 点击事件 */ });
document.addEventListener('dblclick', function() { /* 双击事件 */ });
document.addEventListener('mouseover', function() { /* 鼠标悬停 */ });
document.addEventListener('mouseout', function() { /* 鼠标移出 */ });// 键盘事件
document.addEventListener('keydown', function(e) { /* 按键按下 */ });
document.addEventListener('keyup', function(e) { /* 按键释放 */ });
document.addEventListener('keypress', function(e) { /* 字符输入 */ });// 表单事件
document.querySelector('form').addEventListener('submit', function(e) {e.preventDefault(); /* 阻止表单提交 */
});
document.querySelector('input').addEventListener('change', function() { /* 值变更 */ });
document.querySelector('input').addEventListener('focus', function() { /* 获得焦点 */ });// DOM 加载事件
window.addEventListener('load', function() { /* 页面完全加载 */ });
document.addEventListener('DOMContentLoaded', function() { /* DOM 解析完成 */ });// 窗口事件
window.addEventListener('resize', function() { /* 窗口大小改变 */ });
window.addEventListener('scroll', function() { /* 页面滚动 */ });
window.addEventListener('beforeunload', function(e) { /* 页面即将卸载 */ });
2. 事件绑定方式

有三种主要的事件绑定方式:

// 1. HTML 内联事件(不推荐,结构与行为耦合)
<button onclick="handleClick()">点击我</button>// 2. DOM0 级事件
const button = document.querySelector('button');
button.onclick = function() {console.log('按钮被点击');
};// 3. DOM2 级事件
button.addEventListener('click', function() {console.log('事件处理函数1');
});
button.addEventListener('click', function() {console.log('事件处理函数2'); // 可以添加多个处理函数
});
3. 事件对象

事件处理函数接收一个事件对象,包含事件相关信息:

document.addEventListener('click', function(event) {// 事件基本信息console.log(event.type);      // 事件类型(如"click")console.log(event.target);    // 触发事件的原始元素console.log(event.currentTarget); // 绑定事件的元素// 鼠标事件特有属性console.log(event.clientX, event.clientY); // 鼠标相对于视口的坐标console.log(event.pageX, event.pageY);     // 鼠标相对于页面的坐标// 键盘事件特有属性console.log(event.key);       // 按下的键名console.log(event.code);      // 键码console.log(event.ctrlKey);   // Ctrl 键是否按下// 阻止默认行为(如链接跳转、表单提交)event.preventDefault();// 阻止事件冒泡event.stopPropagation();
});
4. 事件冒泡与捕获

事件在 DOM 树中有两种传播方式:

// 事件冒泡(默认):从触发元素向上传播到父元素
document.querySelector('div').addEventListener('click', function() {console.log('DIV 被点击');
});
document.querySelector('button').addEventListener('click', function() {console.log('BUTTON 被点击'); // 先触发// 事件会继续冒泡到 DIV 和 document
});// 事件捕获(第三个参数设为 true):从 document 向下传播到触发元素
document.querySelector('div').addEventListener('click', function() {console.log('DIV 捕获阶段'); // 先触发
}, true);
document.querySelector('button').addEventListener('click', function() {console.log('BUTTON 被点击');
}, false); // 默认冒泡阶段
5. 事件委托

利用事件冒泡,将事件处理程序绑定到父元素:

// 为动态添加的元素绑定事件
document.querySelector('ul').addEventListener('click', function(event) {if (event.target.tagName === 'LI') {console.log('点击了列表项:', event.target.textContent);}
});// 动态添加的 LI 也会触发事件
const newLi = document.createElement('li');
newLi.textContent = '新项目';
document.querySelector('ul').appendChild(newLi);
6. 自定义事件

创建和触发自定义事件:

// 创建自定义事件
const myEvent = new Event('customEvent');// 绑定事件处理程序
document.addEventListener('customEvent', function() {console.log('自定义事件被触发');
});// 触发事件
document.dispatchEvent(myEvent);// 带数据的自定义事件
const dataEvent = new CustomEvent('dataEvent', {detail: { message: '这是自定义数据' }
});
document.addEventListener('dataEvent', function(event) {console.log('收到数据:', event.detail.message);
});
document.dispatchEvent(dataEvent);
7. 事件应用场景
// 1. 页面加载完成后执行代码
document.addEventListener('DOMContentLoaded', function() {// DOM 已加载,可安全操作
});// 2. 防止表单默认提交
document.querySelector('form').addEventListener('submit', function(e) {e.preventDefault(); // 阻止表单提交// 处理表单数据
});// 3. 滚动监听(实现回到顶部按钮)
window.addEventListener('scroll', function() {const scrollTop = window.pageYOffset || document.documentElement.scrollTop;if (scrollTop > 300) {document.querySelector('#backToTop').style.display = 'block';} else {document.querySelector('#backToTop').style.display = 'none';}
});// 4. 键盘快捷键
document.addEventListener('keydown', function(e) {if (e.ctrlKey && e.key === 's') {e.preventDefault(); // 阻止浏览器默认的保存行为saveDocument();}
});



← 上一篇 AngularJS知识快速入门(上)
记得点赞、关注、收藏哦!
下一篇 Ajax——在OA系统提升性能的局部刷新 →
http://www.dtcms.com/a/545752.html

相关文章:

  • LangChain RAG 学习笔记:从文档加载到问答服务
  • XtraBackup 详解:MySQL 数据库备份与恢复的利器
  • 仿克米设计网站团队做网站分工
  • 化州+网站建设有那些专门做外贸的网站呀
  • ESP32-S3 小智 AI 开发环境搭建与固件编译烧录(MCP 控制 GPIO 点亮 LED 灯示例)
  • 算法 day 38
  • 构建AI智能体:七十八、参数的艺术:如何在有限算力下实现高质量的AI诗歌创作
  • 东网站建设有赞短链接生成
  • 怎么建设自己的卡盟网站wordpress如何自动采集网站图片
  • 做网站 挣广告联盟的佣金做网站的企业有哪些
  • RDP攻击(Remote Desktop Protocol Attack)是什么?
  • RK3576机器人核心:三屏异显+八路摄像头,重塑机器人交互与感知
  • [强化学习] 第三篇:价值—策略—优势的动态闭环
  • 培训型网站 建设方案军刀seo
  • .net网站开发教程辽宁丹东建设厅网站
  • VMware 宿主机给麒麟虚拟机共享文件夹
  • Kubevirt部署好后系统镜像的dv存储创建
  • 基于凭据管理系统实现Nacos服务端配置中数据库密码加密的实践方案
  • 自己做网站最新视频教程wordpress 响应分页
  • wordpress酷黑主题厦门seo报价
  • 开发·SpringBoot+Vue
  • KingbaseES数据库性能调优工具全面解析
  • MySQL 数据备份
  • 电子商务网站的建设方法发布网站制作
  • 深圳外贸网站开发建设推广网站排行榜
  • 《考研408数据结构》第七章(6.1~6.3图的概念、存储方式、深/广度遍历)复习笔记
  • 解决Nacos 2.+版本集群启动报错问题
  • Rust 异步取消(Cancellation)策略:从原理到实践的深度解析
  • 湘潭网站建设 磐石网络优质wordpress .mo文件编辑
  • Spring Boot 框架开发 REST API 接口实践