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

#### 事件的委派
要解决事件利用冒泡特性提成开发性能引发,点击事件不可控的问题
//当事件统一绑定元素共同祖先元素,这样当后代事件触发时,会一直冒泡到祖先元素,从通过祖先元素处理的事件,事件委派利用冒泡,通过委派可以减少事件绑定的次数,提交程序性能
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>

js 之二 事件对象的更多相关文章
- JS中的事件&对象
一.JS中的事件 (一)JS中的事件分类 1.鼠标事件 click/dblclick/onmouseover/onmouseout 2.HTML事件 onload/onscroll/onsubmit/ ...
- JS中的事件(对象,冒泡,委托,绑定)
- 事件,是文档或浏览器窗口中发生的一些特定的交互瞬间,JS与HTML之间的交互是通过事件实现的 对于web应用来说,有下面这些代表性事件:点击事件,鼠标移动,按下键盘等等 - 事件,是用户和浏览器之 ...
- js跨浏览器事件对象、事件处理程序
项目中有时候会不用jquery这么好用的框架,需要自己封装一些事件对象和事件处理程序,像封装AJAX那样:这里面考虑最多的还是浏览器的兼容问题,原生js封装如下:var EventUtil={ //节 ...
- js中获取事件对象的方法小结
原文地址:http://jingyan.baidu.com/article/d8072ac4594d6cec95cefdac.html 事件对象 的获取很简单,很久前我们就知道IE中事件对象是作为全局 ...
- 和我一起理解js中的事件对象
我们知道在JS中常用的事件有: 页面事件:load: 焦点事件:focus,blur: 鼠标事件:click,mouseout,mouseover,mousemove等: 键盘事件:keydown,k ...
- js事件处理、事件对象
事件类型分类: 1 添加在html结构中的事件 <div id="div1" onclick="alert('append click event in html' ...
- JS基础(二)事件监听练习之table鼠标悬停行变色
JS监听事件简单学习: [object].addEvent("事件类型","处理函数","冒泡事件或捕获事件"); [object].r ...
- 【js】event(事件对象)详解
1.事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什么时候会产生Event 对象呢? 例如: 当用户单击某个元素的时候,我们给这个元 ...
- js的event事件对象汇总
JavaScript事件对象是浏览器默认传入的,但是对于浏览器的兼容问题,我们需要对事件对象进行兼容.但是jQuery已经帮我们解决了所有兼容性的问题,并且给我们添加了很多有用的方法.已经是比较历史的 ...
- JS HTML DOM 事件对象(onclick、onmouseenter)
HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序. 事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮). HTML DOM 事件 DOM: ...
随机推荐
- springboot--配置格式文件
修改端口号的三种方法 1.server.port = 80 2.新建application.yml文件. 3.新建application.yaml文件. 配置文件加载顺序: 当三个文件都存在时prop ...
- 在进行程序国际化时(Locale)遇到的问题
Java程序国际化-Question 为了使程序能够个根据不同的国家/语言环境来输出不同的内容,通常需要把将需要输出的内容定义在资源文件中. 而在创建资源文件的过程中难免会出现问题,我遇到了在创建资源 ...
- Vue2模版编译(AST、Optimize 、Render)
在Vue $mount过程中,我们需要把模版编译成render函数,整体实现可以分为三部分: parse:解析模版 template生成 AST语法树 optimize: 优化 AST语法树,标记静态 ...
- Go 语言:通过TDD驱动开发创建一个 Web 服务器,用户可以在其中跟踪玩家赢了多少场游戏。
你被要求创建一个 Web 服务器,用户可以在其中跟踪玩家赢了多少场游戏. GET /players/{name} 应该返回一个表示获胜总数的数字 POST /players/{name} 应该为玩 ...
- bpmnjs的基本使用(vue)
bpmn-js在vue中的基本使用 效果: 下载依赖包 npm i bpmn-js bpmn-js-properties-panel camunda-bpmn-moddle "bpmn-js ...
- 记某gov门户网站渗透测试(已修复)
前言: 免责声明:涉及到的所有技术仅用来学习交流,严禁用于非法用途,未经授权请勿非法渗透.否则产生的一切后果自行承担! 该渗透测试项目为已授权项目,本文已对敏感部分做了相关处理. 正文: SQL注入( ...
- 升级二进制kubernetes集群
升级二进制kubernetes集群 背景介绍 最近由于时间不足,暂时无法对小版本更新第一时间出新的文档.若需要升级集群版本,可以参考此文档进行操作,每个节点一个一个地更新.大版本更新请各位持续关注我的 ...
- IO流中「线程」模型总结
目录 一.基础简介 二.同步阻塞 1.模型图解 2.参考案例 三.同步非阻塞 1.模型图解 2.参考案例 四.异步非阻塞 1.模型图解 2.参考案例 五.Reactor模型 1.模型图解 1.1 Re ...
- [Java SE]Java SE异常合集
1 概述 2 问题集 Q1 : JAVA应用程序启动时报"A fatal error has been detected by the Java Runtime Environment: E ...
- Vue 环境准备
近期接触了下前端项目,记录下学习过程. 近几年前端发展的迅猛,各种框架层出不穷,vue react angular ,各种第三方组件 原来会点js,jQuery 前后端一个人全搞定了,现在前后端分离, ...