将事件绑定到元素身上的三种方法:

  1、HTML事件处理程序(不推荐使用)

1 <a onclick="hide()">

  2、传统的DOM事件处理程序

  即在目标DOM事件的基础上绑定事件。如果在声明函数时加上括号,函数会立即调用,去掉括号,函数不会立即调用。

1  function change(){
2 //code
3 }
4 var name = document.getElementById("name");
5 name.onclick = change; //

  3、设置事件监听器。

  即为addEventListener()函数,该函数有三个参数,第一个参数指定事件名称,第二个参数是发生事件时要调用的函数,第三个参数是指定事件响应的方式,为布尔值。当第三参数为true时为冒泡方式,当参数为false时为捕获方式。

1 element.addEventListener('event',functionName,Boolean);

  因为在注册事件处理程序和事件监听器时,在函数名的后面是没有小括号的,因此需要采用其他的手段来传递参数。

  如果需要向事件处理程序或事件监听器所调用的函数传递参数,就需要把方法调用封装在匿名函数中。

1 el.addEventListener('event',function(){
2 changename(5);
3 },false);

  说到这里,就很要必要解释一下事件流以及什么是事件冒泡、事件捕获了。

  事件流:描述从页面中接受事件的顺序。

  HTML元素都位于另一些元素中。当一个元素发生某个事件时,它的父元素同样会发生该事件。

  当代码在一个元素和其祖先元素或者后代元素上都有事件处理程序时,事件流就会变得很重要。

  事件冒泡:指的是事件从最具体的节点开始向外传播到最宽泛的节点。这是事件流的默认类型,被绝大多是浏览器支持。

  事件捕获:指的是事件从最宽泛的节点开始向内传播到最具体的节点。这种方式在IE8和更早版本的IE中不被支持。

  支持旧版本的事件监听器

  IE5~IE8中不支持addEventListener()方法。但支持attachEvent()方法,让事件监听器在旧版本的IE浏览器中同样能运行。

  使用事件监听器之前,应检测addEventListener()方法能否使用,不能使用则选择attachEvent()方法。

 1 el = document.getElementById('mybutton');
2 if(el.addEventListener)
3 {
4 el.addEventListener('blur',function(){
5 checkUsername(5);
6 },false);
7 }else{
8 el.attachEvent('onblur',function(){
9 checkUsername(5);
10 });
11 }

  要注意的是attachEvent()方法中,事件的名称前面应该加上on,

  事件冒泡过程是可以被阻止的,是为了防止事件冒泡带来错误。阻止事件冒泡就是使用stopPropagation()方法。

1 event.stopPropagation();

  其中event指的是事件对象。

JS学习笔记(一)DOM事件和监听的更多相关文章

  1. 【spring源码学习】spring的事件发布监听机制源码解析

    [一]相关源代码类 (1)spring的事件发布监听机制的核心管理类:org.springframework.context.event.SimpleApplicationEventMulticast ...

  2. oracle学习笔记(一)配置监听

    服务器端: 监听器   lsnrctl 启动监听 lsnrctl start [LISTENER] 查看监听 lsnrctl  status  或者  lsnrctl  service C:\Docu ...

  3. Js学习笔记一(鼠标事件.....)

    1.encodeURI与decodeURI()转化url为有效的url(能被识别) Url="http://news.baidu.com/p.php?id='测试'&姓名=hkui& ...

  4. js学习笔记27----键盘事件

    键盘事件主要有2个: onkeydown : 键盘按下时触发,如果按下不抬起,那么会连续触发.   onkeyup : 键盘弹起时触发   不是所有元素都能接收键盘事件,只有能够响应用户输入的元素,换 ...

  5. js学习笔记24----焦点事件

    事件: onfous : 元素获取焦点时触发事件 onblur : 元素失去焦点时触发事件 方法: obj.focus(); 可指定元素设置焦点 obj.blur(); 取消指定元素的焦点 obj.s ...

  6. js学习笔记--dom部分(一)

    js 学习整理之Dom部分 前面我总结了我最近学习js基础部分,当时提到过js分了三大部分,第一部分ECMA基础也就是第一次写的基础部分, 第二部分也就是DOM部分,也就是这里要写的内容的,然后第三部 ...

  7. [JS学习笔记]Javascript事件阶段:捕获、目标、冒泡

    当你在浏览器上点击一个按钮时,点击的事件不仅仅发生在按钮上,同时点击的还有这个按钮的容器元素,甚至也点击了整个页面. 事件流 事件流描述了从页面接收事件的顺序,但在浏览器发展到第四代时,浏览器开发团队 ...

  8. jQuery学习笔记之DOM操作、事件绑定(2)

    jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https ...

  9. 基于jquery的插件turn.js学习笔记

    基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...

随机推荐

  1. vue-router 实践

    1. vue-router2学习实践笔记 2. router.push() 3. 使用vue-router跳转页面

  2. call 大佬 help7——kmp 补齐 循环节

    http://acm.hdu.edu.cn/showproblem.php?pid=3746 用kmp算法,那么 但是也等于上面的是正确的 也等于下面是错误的 why? #include<cst ...

  3. sparse representation 与sparse coding 的区别的观点

    @G_Auss: 一直觉得以稀疏为目标的无监督学习没有道理.稀疏表示是生物神经系统的一个特性,但它究竟只是神经系统完成任务的副产物,还是一个优化目标,没有相关理论,这里有推理漏洞.实际上,稀疏目标只能 ...

  4. Samba远程代码执行漏洞(CVE-2017-7494)复现

    简要记录一下Samba远程代码执行漏洞(CVE-2017-7494)环境搭建和利用的过程,献给那些想自己动手搭建环境的朋友.(虽然已过多时) 快捷通道:Docker ~ Samba远程代码执行漏洞(C ...

  5. python调用百度语音识别接口实时识别

    1.本文直接上干货 奉献代码:https://github.com/wuzaipei/audio_discern/tree/master/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5% ...

  6. 【译】第三篇 Replication:事务复制-发布服务器

    本篇文章是SQL Server Replication系列的第三篇,详细内容请参考原文. 发布服务器是所有复制数据的源头.每一个发布服务器上可以定义多个发布.每一个发布包含一组项目(项目在同一个数据库 ...

  7. async语法升级踩坑小记

    从今年过完年回来,三月份开始,就一直在做重构相关的事情. 就在今天刚刚上线了最新一次的重构代码,希望高峰期安好,接近半年的Node.js代码重构. 包含从callback+async.waterfal ...

  8. Electron 开发环境下总是 crash

    全局安装一个 electron devtool 关掉 崩溃时选择重新打开

  9. CentOS安装ANT

    第1步:下载ant apache-ant-1.9.2-bin.tar.gz http://archive.apache.org/dist/ant/binaries/ 第2步:解压 tar -zxvf ...

  10. linux===sar命令性能监控

    sar介绍: sar是System Activity Reporter(系统活动情况报告)的缩写.sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态.它的特点是可以连 ...