尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

JavaScript笔记:BOM--event

JavaScript笔记:BOM--event
📅 发布时间:2026/7/28 16:46:48

event 事件

浏览器自动触发或者用户手动触发的页面状态的改变
事件处理函数:当事件发生时自动调用的函数
事件发生之前就需要绑定到事件属性上

绑定事件的三种方式:

1、在html中绑定

<a onclick = "alert('hello world')"></a>

2、在js中动态绑定,为事件属性赋值一个函数

document.getElementById("xxx").onclick = fun; function fun(){ alert("hello world"); }

3、使用addEventListener添加

function fun1() { console.log("abc1"); } function fun2() { console.log("abc2"); } Element.addEventListener("click", fun1); Element.addEventListener("click", fun2);

删除事件

Element.removeEventListener("click", fun2);

注意:添加时,第二个参数可以写匿名函数,若该事件明确未来可能删除,则不可以写匿名函数,否则无函数名无法删除。

事件模型

一个事件发生,有三个阶段
1、捕获
由外到内,记录各级父元素上绑定的相同的事件
2、目标出发
首先触发目标元素上的事件处理函数
3、冒泡
按照捕获的顺序,反向执行,由内到外,依次触发各级父元素绑定的事件的处理函数

html部分: <body> <div class="div1"> <div class="div2"> <div class="div3"></div> </div> </div> </body> css部分: <style> .div1 { width: 500px; height: 500px; background-color: #f00; } .div2 { width: 400px; height: 400px; background-color: #0f0; position: absolute; top: 50px; left: 50px; } .div3 { width: 300px; height: 300px; background-color: #00f; position: absolute; top: 50px; left: 50px; } </style> js部分: var div1 = document.getElementsByClassName("div1")[0]; var div2 = document.getElementsByClassName("div2")[0]; var div3 = document.getElementsByClassName("div3")[0]; div1.addEventListener("click", fun); div2.addEventListener("click", fun); div3.addEventListener("click", fun); function fun(e) { console.log(this.className); }

点击蓝色区域,输出结果如图:

addEventListener的第三个参数:capture

是否在捕获阶段,提前出发
true或者false,默认为false
将上面的代码中的js部分中修改一行

div2.addEventListener("click", fun, true);

点击蓝色区域,输出结果如图:

不难发现,给div2绑定事件时,加入了第三个参数,true,div2的事件可以提前触发。

事件对象

当事件发生时,自动创建的封装所有事件信息的一个对象

获取:

DOM标准: 事件对象默认作为事件处理函数的第一个参数传入

function fun(e){ e;//事件发生时,自动获得事件对象 }

IE8:在全局window,定义了一个event

function fun(e){ window.e;//事件发生时,自动获得事件对象 }

兼容写法:

function fun(e){ e = e | window.e; }
取消冒泡

DOM标准:e.Propagation();
IE8:e.cancelBubble = true;
兼容写法:

if (e.stopPropagation()) { e.stopPropagation(); } else { e.cancelBubble = true; }

本人使用的Chrome浏览器,故将上面代码中js部分中的fun函数做如下改动

function fun(e) { console.log(this.className); e.stopPropagation(); }

并删掉之前加入的true
点击蓝色区域,输出结果如图:

相关新闻

  • AI推理成本暴跌63%的秘密:Llama 3、Qwen2、Phi-3在8卡A10 vs 2×H100真实吞吐与$每千token对比(独家压测数据)
  • 长期投资与复利效应:财富积累的核心策略
  • PAT甲级 1060 Are They Equal 判断两个小数是否相等

最新新闻

  • AI短剧创作系统:源码交付与全流程自动化实践
  • EncodingChecker:3步解决文件乱码问题的终极指南
  • 原来重庆口碑好的会议系统厂家这么多,究竟哪个好呢?
  • 基于LlamaIndex和OpenAI的AI智能体自我评估系统开发
  • 2026精选金牛区保洁公司综合实力排行名单一览 - 起跑123
  • C++引用:从基础别名到现代移动语义的深度解析与实战指南

日新闻

  • 力旷智能:伺服驱动系统在制药收瓶设备中的应用解析
  • 2026 网安入门避坑指南,零基础如何避开无效学习直接上手实战
  • 揭秘CFC项目:如何通过手机摄像头实现850kbps无网络文件传输

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号