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

  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 隐藏滚动条

    element-ui隐藏组件scrollbar: <el-scrollbar style="height:100%"> </el-scrollbar> 真正 ...

  2. Mongodb 笔记06 副本集的组成、从应用程序连接副本集、管理

    副本集的组成 1. 同步:MongoDB的复制功能是使用操作日志oplog实现的,操作日志包含了主节点的每一次写操作.oplog是主节点的local数据库中的一个固定集合.备份节点通过查询整个集合就可 ...

  3. PHP常见的字符串方法

    PHP语言中的字符串函数也是一个比较易懂的知识.今天我们就为大家总结了将近12种PHP字符串函数,希望对又需要的朋友有所帮助,增加读者朋友的PHP知识库.   1.查找字符位置函数 strpos($s ...

  4. 张鑫旭:Promise异步编程模式

    参考文章: http://www.zhangxinxu.com/wordpress/2014/02/es6-javascript-promise-%E6%84%9F%E6%80%A7%E8%AE%A4 ...

  5. Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A

    问题: 当我们打开数据库,即use dbname时,要预读数据库信息,当使用-A参数时,就不预读数据库信息. 解决方法:mysql -hhostname -uusername -ppassword - ...

  6. Electron build 无法下载 winCodeSign 等资源

    将 7z 文件下载到 以下 cache 目录并解压 macOS: ~/Library/Caches/electron-builder Linux: ~/.cache/electron-builder ...

  7. Hibernate5笔记8--Hibernate事务相关内容

    Hibernate事务相关内容: (1) 事务四大特性(简称ACID): (1)原子性(Atomicity) 事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行. (2)一致性(Con ...

  8. C# 反射获取和设置值

    /// <summary> /// 遍历泛型 /// </summary> /// <typeparam name="T"></typep ...

  9. Android Framebuffer介绍及使用【转】

    转自:https://www.jianshu.com/p/df1213e5a0ed 来自: Android技术特工队 作者: Aaron 主页: http://www.wxtlife.com/ 原文连 ...

  10. C#基础之静态和非静态的区别

    1.在非静态即可有非静态成员又可以有静态成员 2非静态调用创建类的对象.方法名,静态成员直接引用对象名