事件对象

/当事件的响应函数被触发时,浏览器每次都会讲一个事件对象作为实参传递响应函数; 在事件对象中封装了当前事件相关的一切信息,比如:鼠标的,键盘的操作

// 当鼠标在areaDiv中移动时,在showMsg中显示坐标-->
<!-- var areaDiv =document.getElementById("areaDiv");-->
<!-- var showMsg =document.getElementById("showMsg");-->
<!-- // onmousemove事件在鼠标在元素中移动时触发-->
<!-- // 事件对象:当事件的响应函数被触发时浏览器每次会将一个事件对象作为实参传递进响应函数-->
<!-- // 在事件对象中封装了当前事件相关的一切信息,比如,鼠标坐标,键盘哪个键按下......详见https://www.runoob.com/jsref/dom-obj-event.html-->
<!-- areaDiv.onmousemove = function(event){-->
<!-- // clientX获取水平座标,clientY获取垂直坐标-->
<!-- // alert(event.clientX+" "+event.clientY) -->
<!-- showMsg.innerHTML = "x = "+ event.clientX + ",y = "+ event.clientY-->
<!-- }-->

事件冒泡

//事件的冒泡(bubble):事件的向上传导,当后代元素的事件被触发,祖先元素的相同事件也会被触发
//在开发中大部分情况冒泡都是有用的,如果不希望发生事件冒泡可以通过事件对象取消冒泡
```<script type="text/javascript">
//事件的冒泡(bubble):事件的向上传导,当后代元素的事件被触发,祖先元素的相同事件也会被触发
//在开发中大部分情况冒泡都是有用的,如果不希望发生事件冒泡可以通过事件对象取消冒泡
var s1 =document.getElementById("s1");
s1.onclick = function(e){
alert("s1")
// 取消冒泡
e.cancelBubble = true;
}
var box1 =document.getElementById("box1");
box1.onclick = function(){
alert("box1")
}
document.body.onclick = function(){
alert("body")
}
</script> ![image-20230101223812617](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230101223812617.png)
#### 事件的委派 要解决事件利用冒泡特性提成开发性能引发,点击事件不可控的问题

//当事件统一绑定元素共同祖先元素,这样当后代事件触发时,会一直冒泡到祖先元素,从通过祖先元素处理的事件,事件委派利用冒泡,通过委派可以减少事件绑定的次数,提交程序性能

event.target 获取触发的对象

this:是当前的对象 可以通过打印就出来


#### 事件的绑定 要解决一个绑定对象要触发多个事件处理函数的问题;通过 addEventistener()给元素绑定响应函数
<script type="text/javascript">
var btn01 =document.getElementById("btn01");
var btn02 =document.getElementById("btn02");
// 使用对象.事件 = 函数的形式只能绑定一个响应函数
btn01.onclick = function(){
alert("1");
}
// 为btn01绑定第二个响应函数会覆盖掉前一个
btn01.onclick = function(){
alert("2");
}
// addEventListener(时间的字符串不要on,回调函数,是否在捕获阶段触发事件一般都传false)也可以绑定响应函数
// addEventListener()可同时绑定多个响应函数,事件触发时会根据函数绑定顺序执行
btn02.addEventListener("click",function(){
alert("1");
},false)
btn02.addEventListener("click",function(){
alert("2");
},false)
</script> #### 事件的传播
<script type="text/javascript">
var box1 =document.getElementById("box1");
var box2 =document.getElementById("box2");
var box3 =document.getElementById("box3");
// 事件的传播:1.捕获阶段:从祖先元素向目标元素进行事件的捕获,但是默认此时不会触发事件 2.目标阶段:事件捕获到目标元素,捕获结束在目标元素上触发事件 3.冒泡阶段:事件从目标元素向祖先元素传递,依次触发祖先元素上的事件
// 如果希望在捕获阶段就触发事件,可以将addEventListener第三个参数改成true,一般情况下不会希望在捕获阶段执行事件
box1.addEventListener("click",function(){
alert("box1")
},false)
box2.addEventListener("click",function(){
alert("box2")
},true)
box3.addEventListener("click",function(){
alert("box3")
},false)
</script> ![image-20230102122634962](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230102122634962.png)

js 之二 事件对象的更多相关文章

  1. JS中的事件&对象

    一.JS中的事件 (一)JS中的事件分类 1.鼠标事件 click/dblclick/onmouseover/onmouseout 2.HTML事件 onload/onscroll/onsubmit/ ...

  2. JS中的事件(对象,冒泡,委托,绑定)

    - 事件,是文档或浏览器窗口中发生的一些特定的交互瞬间,JS与HTML之间的交互是通过事件实现的 对于web应用来说,有下面这些代表性事件:点击事件,鼠标移动,按下键盘等等 - 事件,是用户和浏览器之 ...

  3. js跨浏览器事件对象、事件处理程序

    项目中有时候会不用jquery这么好用的框架,需要自己封装一些事件对象和事件处理程序,像封装AJAX那样:这里面考虑最多的还是浏览器的兼容问题,原生js封装如下:var EventUtil={ //节 ...

  4. js中获取事件对象的方法小结

    原文地址:http://jingyan.baidu.com/article/d8072ac4594d6cec95cefdac.html 事件对象 的获取很简单,很久前我们就知道IE中事件对象是作为全局 ...

  5. 和我一起理解js中的事件对象

    我们知道在JS中常用的事件有: 页面事件:load: 焦点事件:focus,blur: 鼠标事件:click,mouseout,mouseover,mousemove等: 键盘事件:keydown,k ...

  6. js事件处理、事件对象

    事件类型分类: 1 添加在html结构中的事件 <div id="div1" onclick="alert('append click event in html' ...

  7. JS基础(二)事件监听练习之table鼠标悬停行变色

    JS监听事件简单学习: [object].addEvent("事件类型","处理函数","冒泡事件或捕获事件");   [object].r ...

  8. 【js】event(事件对象)详解

    1.事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什么时候会产生Event 对象呢? 例如: 当用户单击某个元素的时候,我们给这个元 ...

  9. js的event事件对象汇总

    JavaScript事件对象是浏览器默认传入的,但是对于浏览器的兼容问题,我们需要对事件对象进行兼容.但是jQuery已经帮我们解决了所有兼容性的问题,并且给我们添加了很多有用的方法.已经是比较历史的 ...

  10. JS HTML DOM 事件对象(onclick、onmouseenter)

    HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序. 事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮). HTML DOM 事件 DOM:  ...

随机推荐

  1. Java面试——Spring

    一.Spring Bean 作用域 [1]singleton:该属性在 IOC容器仅创建一个 Bean实例(单例),IOC容器每次返回的是同一个 Bean实例.[2]prototype:该属性在 IO ...

  2. SpringBoot——定制错误页面及原理

    更多内容,前往 IT-BLOG 一.SpringBoot 默认的错误处理机制 [1]浏览器返回的默认错误页面如下:  ​☞ 浏览器发送请求的请求头信息如下:text/html 会在后面的源码分析中说到 ...

  3. Redis Cluster集群搭建及节点的添加、删除

    系统性学习,移步IT-BLOG 一.什么是 Redis Cluster Redis 是在内存中保存数据的,而我们的电脑一般内存都不大,这也意味着 Redis 不适合存储大数据,适合存储大数据的是 Ha ...

  4. JVM Dump分析

    Thread Dump介绍 Thread Dump是非常有用的诊断 Java应用问题的工具.每一个 Java虚拟机都有及时生成所有线程在某一点状态的 thread-dump的能力,虽然各个 Java虚 ...

  5. ChatGPT 设计游戏剧情 | 基于 AI 5 天创建一个农场游戏,完结篇!

    欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用 AI 工具在 5 天内创建一个功能完备的农场游戏.到本系列结束时,您将了解到如何将多种 AI 工具整合到游戏开发流程中.本文将向您展示如何将 A ...

  6. void关键字

    在C++中,void表示为无类型,主要有三个用途: (1)函数的 返回值用void,表示函数没有返回值. void func(int a, int b) { //函数体代码 return; } (2) ...

  7. 【故障公告】数据库服务器 CPU 近 100% 造成全站故障,雪上加霜难上加难的三月

    数据库服务器 CPU 近 100% 问题几乎每年都要发生一次,上次发生在去年1月31日,每次都是通过主备切换或者重启实例解决,数据库服务用的是阿里云 RDS SQL Server 2016 标准版. ...

  8. 我的合肥 .NET 俱乐部线下活动之旅

    一:背景 我是一个性格比较内向的人,天然抵触这种线下面对面的大型活动,我害怕上台之后紧张到语无伦次(有过类似经历),越语无伦次又会让我更紧张,刚好谋得程序员这种工作又特别适合我这种性格的人,所以没有刻 ...

  9. Vue 相关整理

    一 谈谈对 keep-alive 的了解? keep-alive 是Vue内置的一个组件,可以使被包含的组件保留状态,避免重新渲染,其有以下特性: * 一般结合路由和动态组件一起使用,用于缓存组件: ...

  10. Docker部署nginx+vue项目并运行

    一.打包VUE项目 npm run build:prod 二.编写default.conf 文件 server { listen 80; server_name localhost; #charset ...