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

网站开发项目源码免费下载建设银行官方网站下载

网站开发项目源码,免费下载建设银行官方网站下载,常宁网站开发,快速制作app软件本文详细介绍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/wzjs/541492.html

相关文章:

  • 如何快速进行网站开发中山外贸网站开发
  • 栖霞建设采购网站广州网站优化运营
  • 左侧 导航 网站重庆白云seo整站优化
  • 网站做引流seo关键词挖掘
  • 在什么网站做兼职翻译天津和平做网站多少钱
  • 免费文档模板网站网站建设需要多少天时间
  • 东莞网站排名推广网上订货发货网站建设
  • 做网站地图的步骤joomla 企业网站模板
  • 佛山专业做网站公司哪家好登陆网站怎么做
  • 个人作品网站策划书wordpress如何接入visa支付宝
  • 全球最火的十大游戏成都建站seo
  • 曲沃网站开发网络公司网站设计多少钱
  • 湖北省建设部网站公告网页案例
  • 共青城网站建设公司介绍自己做衣服的网站
  • 网站推广的途径和方法域名空间网站
  • 汽车建设网站开发流程南京网站建设 雷仁
  • 网站建设与管理需要什么软件有哪些网站建设规划书的空间
  • 做招标应该关注什么网站注册公司的流程及资料
  • 建站源码程序柯桥建设集团网站
  • 用discuz做行业网站wordpress 活动模板
  • 国外做自动化网站自己做企业网站好做吗
  • 建筑网站视频大全wordpress最炫主题
  • 集团门户网站建设企业跨境电商开店
  • 室内设计网站大全免费WordPress富媒体说说
  • 网站建设谈判技巧公众号菜单跳转的网页怎么制作
  • 做网站营销公司亿联网络 网站
  • 电商行业网站建设及维护wordpress 全站密码
  • 中等职业学校网站建设模块网站seo解决方案
  • 公司设计网站有哪些云南昆明做网站
  • 网站备案 非经营深圳软件开发公司在哪里