ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
事件绑定就是添加事件,那么为谁添加事件呢?可以为页面中的所有标签(元素、节点)添加事件,大到整个文档(document),小到其中一个标签都可以添加事件。 在为一个节点添加事件的时候,有三种方式: * 直接在标签中添加,即使用onclick、onmouseover等HTML属性; * DOM的方式添加,即通过dom方法获取节点,然后为其绑定事件; * 使用addEventListener或attachEvent(IE8及更低版本浏览器)。 为一个标签添加事件之后,还可以删除这个事件。 # 1、为DOM对象添加事件 最基本的语法: ``` DOM对象.事件 = 处理函数; ``` ![](https://img.kancloud.cn/32/de/32de4a43f3a18875041ecdf246a13cd2_892x239.png) 有些时候,可以先定义处理函数,然后在绑定事件: ![](https://img.kancloud.cn/de/2c/de2c2c1203e76bada5fb15d79ca32c5b_866x392.png) 事件处理函数中,this表示什么? ![](https://img.kancloud.cn/b7/f0/b7f00696b82c67d80fc24dcb6a37a15f_991x333.png) # 2、直接在HTML标签中添加事件 通过html标签的on….属性(onclick、onmouseover…),来添加事件。 ![](https://img.kancloud.cn/52/02/520226a17461792190f8dd3216fdd6d4_1029x382.png) 如果说,单击按钮的时候,要执行的代码非常多,则可以将代码封装成函数,然后onclick的时候,调用函数即可,函数中的this是window对象。 ![](https://img.kancloud.cn/7d/2e/7d2e1fb56ab6b6aae9a9532ed3bfcb9e_747x331.png) 如果上面两种绑定事件的方式都存在,执行哪一种? ![](https://img.kancloud.cn/4a/d0/4ad024ce664364705e96cfb1cdecaa58_791x212.png) 上面两种方式绑定事件,都可以通过设置事件处理函数为null来去取事件: ![](https://img.kancloud.cn/3f/a2/3fa2bfeba0b9eb0892bc26dcceef1d79_803x246.png) # 3、使用addEventListener或attachEvent方法添加 使用下面的方法为DOM对象添加事件,也叫做事件监听。 * IE浏览器中用:元素节点.attachEvent(事件名, 事件处理函数); * 火狐浏览器用:元素节点.addEventListener(事件名, 事件处理函数);// 事件名不要带on 为了兼容各个浏览器,可以自定义一个兼容的函数,来为元素绑定事件: ![](https://img.kancloud.cn/02/d6/02d630828648b53d24f11bd4c41a8b30_608x422.png) 事件监听方式添加的事件,特点是可以为一个元素绑定多个同类型的事件。 ![](https://img.kancloud.cn/20/ad/20ad728ee13a0a8ec3ebdc68c7eed4a1_663x445.png) 通过事件监听方法添加的事件,也可以被移除,移除的方法是: 火狐:元素节点.removeEventListener(事件名, 处理函数); //事件名不要带on IE:元素节点.dettachEvent(事件名 处理函数); 也可以自定义一个兼容各个浏览器的移除事件监听的方法: ![](https://img.kancloud.cn/59/52/59529da3a2025d6bea48edf81b47ef3b_644x572.png)