JavaScript事件用法浅析


Posted in Javascript onOctober 31, 2016

本文实例讲述了JavaScript事件用法。分享给大家供大家参考,具体如下:

JavaScript通过事件与HTML交互。

事件流

事件流规定了事件的触发规则和顺序。DOM2规定了事件流包括三个阶段:事件捕获 -> 目标触发除 -> 事件冒泡。DOM2规定在事件捕获阶段不应调用事件处理程序,不过各大浏览器都不鸟它。DOM2级的事件处理程序操作函数对:addEventListener和removeEventListener的第三个参数则把这种事变成了DIY,这是一种妥协,同时让初学者认为dom的管理一片混乱。

var btn = document.getElementById("btn");
btn.addEventListener("click",function(){alert(this.id);},false);
document.body.addEventListener("click",function(){alert("body");},false);

更新上述js中addEventListener和removeEventListener中的第三个参数为true,对比为false时的效果,便大约能理解事件流了。

事件

事件是用户或浏览器自身执行的某和动作。

事件处理程序的添加方式

响应事件的函数称为事件处理程序。

指定事件处理程序有以下方式:

HTML特性指定。

如果某个元素支持某个事件,那么就有一个对应的HTML特性,用此特性就可以给其添加事件处理程序 。

<button id="btn" onclick="alert('button click')">button</button>

DOM0级。 将一个函数赋值给一个元素的事件处理程序属性:这是使用js指定事件生理程序的传统方式,至今仍被使用。

var btn = document.getElementById("btn");
btn.onmouseover = function(){
 this.innerHTML="按钮";
};

DOM2级。

通过addEventListener和removeEventListener来管理元素的事件。所有DOM节点都包含这两个方法,它们都包含三个参数,以add为例:

addEventListener(事件名,事件处理函数,是否在事件捕获时执行事件处理程序)

var btn = document.getElementById("btn");
btn.addEventListener("click",function(){alert(this.id);},true);
//注意下面的remove,它完全没有用,这两个匿名函数实际上是不同的对象
btn.removeEventListener("click",function(){alert(this.id);},true);

在上面代码中,指向同一对象的引用被认为是相同的,同样的申明生成的是两个外表相同但是存储在堆上两个不同位置的不同对象。

事件对象

DOM上的事件被触发时,会生成一个事件对象event。无论指定了什么事件处理程序都会传入event对象:准确的地说,event对象是在调用执行函数的执行环境中创建的,根据作用域链的定义,可知它是如何传入的。

var btn = document.getElementById("btn");
var btnClick = function(){
 alert(event.type);
}
btn.onclick = btnClick;//点击btn按钮时,弹出msg:click

event包含丰富的成员,用来控制访问事件,下面是所有事件的共有成员。

target:触发事件的动作直接作用的目标元素。
currentTarget:等于this,事件处理程序作用于的元素。
eventPhase:调用事件处理程序时,所处的事件流中的阶段。1,2,3 三个值分别对应事件流三阶段。
type:事件类型。单击事件对应 String: "click"。

事件类型

事件类型分为以下几类:

UI事件。
焦点事件。
鼠标与滚轮事件。
键盘与文本事件。
复合事件。
变动事件。
HTML5事件。
设备事件。
触摸与手势事件。

PS:关于javascript事件的详细说明可参考本站在线工具:

javascript事件与功能说明大全:
http://tools.3water.com/table/javascript_event

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
一组JS创建和操作表格的函数集合
May 07 Javascript
用JavaScript仿PS里的羽化效果代码
Dec 20 Javascript
jQuery实现表单步骤流程导航代码分享
Aug 28 Javascript
HTML5 实现的一个俄罗斯方块实例代码
Sep 19 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
Dec 05 Javascript
使用canvas及js简单生成验证码方法
Apr 02 Javascript
vuejs手把手教你写一个完整的购物车实例代码
Jul 06 Javascript
layui数据表格 table.render 报错的解决方法
Sep 29 Javascript
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
antd form表单数据回显操作
Nov 02 Javascript
浅析vue中的nextTick
Dec 28 Vue.js
vue+springboot实现登录验证码
May 27 Vue.js
js中通过getElementsByName访问name集合对象的方法
Oct 31 #Javascript
JavaScript递归操作实例浅析
Oct 31 #Javascript
在html中引入外部js文件,并调用带参函数的方法
Oct 31 #Javascript
Validform表单验证总结篇
Oct 31 #Javascript
Javascript数组中push方法用法分析
Oct 31 #Javascript
JavaScript中的await/async的作用和用法
Oct 31 #Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
Oct 31 #Javascript
You might like
Terran兵种介绍
2020/03/14 星际争霸
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
php生成动态验证码gif图片
2015/10/19 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
简述 Python 的类和对象
2020/08/21 Python
用python批量下载apk
2020/12/29 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
公益活动策划方案
2014/01/09 职场文书
共产党员承诺书
2014/03/25 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
校运会宣传稿大全
2015/07/23 职场文书
筑梦中国心得体会
2016/01/18 职场文书
spring 项目实现限流方法示例
2022/07/15 Java/Android