DOM EventListener
向元素添加事件句柄的语法:element.addEventListener(event, function, useCapture);
第一个参数是事件的类型,如click或者mousedown,注意前面都没有on
第二个是事件触发后调用的函数
第三个参数为布尔值,可选,默认值为false,即冒泡传递
例如
- <button id="myBtn">点我</button>
- <script>
- document.getElementById("myBtn").addEventListener("click", function(){alert("Hello World!");});
- </script>
- <button id="myBtn">点我</button>
- <script>
- document.getElementById("myBtn").addEventListener("click", myFunction);
- function myFunction() {alert ("Hello World!");}
- </script>
上述第一种情况时直接写明函数与内容,第二种情况是通过函数名调用函数,这两种情况是等价的,并且与直接给元素添加事件是等价的。
注意,直接给元素添加事件时,是通过'函数名()'指明事件的,函数名后面有括号,并且整体通过''引用,而添加事件句柄时,直接通过函数名引用,没有括号也没有引号。
- <button id="myBtn" onclick='myFunction()'>点我</button>
- <script>
- function myFunction() {alert ("Hello World!");}
- </script>
移除事件句柄:element.removeEventListener(event, function);
- <p style='background:pink' id='p'>段落</p>
- <button onclick='myClick()'>点我移除生成随机数的事件句柄</button>
- <script>
- document.getElementById("p").addEventListener('mousemove',myFunction)
- function myFunction(){document.getElementById("p").innerHTML=Math.random();}
- function myClick(){document.getElementById("p").removeEventListener('mousemove',myFunction);}
- </script>
如下,当鼠标在粉色段落框内移动时,段落内容随着鼠标移动而变成随机数,点击按钮后再在段落内移动,段落内容保持最后的不变。
可以向一个元素添加多个不同的事件句柄,也可以是两个同类型的事件例如两个click事件,后添加的事件句柄不会覆盖之前的事件句柄。
事件传递有两种方式:冒泡与捕获。
事件传递定义了元素事件触发的顺序。 如果<p>元素包含在<div>元素中,并且这两个元素都有一个click事件句柄,当用户点击<p>元素时,哪个元素的 "click" 事件先被触发呢?
在冒泡中,内部元素的事件会先被触发,然后再触发外部元素,即<p>元素的点击事件先触发,然后再触发<div>元素的点击事件。
在捕获中,外部元素的事件会先被触发,然后再触发内部元素,即<div>元素的点击事件先触发 ,然后再触发<p>元素的点击事件。
addEventListener() 方法可以指定 "useCapture" 参数来设置传递类型,默认值为false即冒泡传递,当值为 true 时事件使用捕获传递。
例如,如下
- <div class="outer">
- I'm outer
- <p class="inner">I'm inner</p>
- </div>
- <script>
- var ele1=document.getElementsByClassName('outer')[0];
- var ele2=document.getElementsByClassName('inner')[0];
- ele1.onclick=function(){alert('I\'m outer')}
- ele2.onclick=function(){alert('I\'m inner')}
- </script>
在点击inner框时,会先弹出I'm inner再弹出I'm outer。如果想只执行本元素事件而不触发父元素事件,可向子元素的事件函数传递参数e,并通过e.stopPropagation()阻止事件传递。
- ele2.onclick=function(e){
- alert('I\'m inner');
- e.stopPropagation()}
DOM EventListener的更多相关文章
- JavaScript HTML DOM EventListener
JavaScript HTML DOM EventListener addEventListener() 方法 实例 点用户点击按钮时触发监听事件: document.getElementById(& ...
- JavaScript要点(十三) HTML DOM EventListener
addEventListener() 方法 <body> <p>该实例使用 addEventListener() 方法在按钮中添加点击事件. </p> <bu ...
- DOM - EventListener 句柄操作
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...
- 第三天:DOM EventListener 句柄的添加和移除
1.事件句柄的包含如下两个方法: ps:使用句柄的好处是,修改方法的名称时,不需要改变多处 1.添加一个句柄, 2.添加多个句柄不会覆盖,运行结果:点击“按钮”,弹出框hello,确定后,自动弹出框w ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习:DOM EventListener
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- javascript DOM对象
DOM简介 1.html DOM:当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model) 2.DOM操作html JS能改变页面中的所有html元素 JS能改变页 ...
- javascript 之DOM篇
要怎么样的开场白才能使我有力气再更新学习进度呢?啊啊啊啊啊,表示好累啊~~~默念“棒棒棒,我最棒~”召唤精气神开总结敲字咯.哈哈哈. --------------------------------- ...
- js备战春招の四のDOM
通过js查找html元素的三种方法: 1.通过id找到html元素. 2.通过标签名找到html元素. 3.通过类名找到html元素. DOM HTML document.write(); 直接写入h ...
- javascript HTML DOM 简单介绍
JavaScript HTML DOM通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素.HTML DOM (文档对象模型)当网页被加载时,浏览器会创建页面的文档对象模型( ...
随机推荐
- iText实现导出pdf文件java代码实现例子
///////////////////////////////////主类////////////////////////////////////////// package com.iText; i ...
- jquery评分效果Rating精华版
参考:https://blog.csdn.net/bluceyoung/article/details/8573629
- shell基础:数值运算与运算符
linux的shell中,变量的类型默认都是字符串型. export将aa声明为环境变量.也可用declare声明.其实就是改变了-x属性 $(()) 最常用.
- react native 初识生命周期
关于生命周期这块,我是看到慕课堂的一个视频,觉得将的很好,引入很容易理解,地址是:https://www.imooc.com/video/14288 如果你们想了解一下,也可以去看看 RN 组件的生 ...
- 更改file文件上传默认CSS样式
前言: 多数时候我们需要表单上传文件,如图片.但是浏览器默认的input[file]样式很不友好, 需要我们自己手动修改. 如图基于bootstrap布局的表单, 但file文件上传样式不敢恭维. & ...
- MYSQLi数据访问批量删除
<link href="../bootstrap.min.css" rel="stylesheet" type="text/css" ...
- 一 django框架?
Django-1 一 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞 ...
- codeforces 957 C Three-level Laser
题意: 说的是一个电子云的三种状态,但是这不重要. 简单来说,就是在一个升序的序列中找三个数x,y,z,x和z的值之差不超过u,然后使得(z – y) / (z – x)最大. 思路: 使得(z – ...
- 【2017-2-20】C#运算符
运算符分类: 1.算术运算符 ⑴+ - * / %(取余,模) /3; Console.Write(d); Console.ReadLine(); 则输出结果为“3”,因为10和3都是int型,dec ...
- 从零开始学习MVC
其实在学校时,已经开设了MVC这门课程,教材由授课老师自己编纂,是和微软的音乐商店相似的一个书店项目,当时无法理解 Linq.Lambda , 只记得是按照老师的方法,复制+粘贴,不明其意,亦不知其理 ...