1.绑定事件的三种方式
<input type="button" value="按钮1">
<input type="button" value="按钮2" οnclick="alert('按钮2')">
<input type="button" value="按钮3" οnclick="fun1(),fun2()">
<input type="button" value="按钮4">
? ??
<script>
? ? /*?
? ? ? ? 绑定事件(注册事件):
? ? ? ? ? ? 1、传统方式:事件源.事件类型 = 事件处理函数
? ? ? ? ? ? ? ? ?同类型事件,只能绑定一次,绑定多次只认同最后一次
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? 2、内联方式:在标签中写上事件类型 ? ?<标签 ? ?事件类型='代码/函数名()'>
? ? ? ? ? ? ? ? ? 同类型事件,可以绑定多次 ? ? ?<标签 ? ?事件类型='函数名1(),函数名2()'>
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? 3、事件监听:事件源.addEventListener('事件类型',事件处理函数)
? ? ? ? ? ? ? ? ? 注意: 该方式的事件类型不能加on
? ? ? ? ? ? ? ? ? 同类型事件,可以绑定多次
? ? */
? ? var btn1 = document.querySelectorAll('input')[0]
?? ?// 传统方式绑定事件
? ? btn1.onclick = function () {
? ? ? ? alert('按钮1')
? ? }
? ? btn1.onclick = function () {
? ? ? ? alert('李三')
? ? }
? ? // ?定义函数fun1
? ? function fun1() {
? ? ? ? alert('按钮3')
? ? }
? ? function fun2() {
? ? ? ? alert('王五')
? ? }
? ? // ?获取事件源按钮4
? ? var btn4 = document.querySelectorAll('input')[3]
? ? // ?事件监听 多个绑定事件
? ? btn4.addEventListener('click', function () {
? ? ? ? alert('按钮4')
? ? })
? ? btn4.addEventListener('click', function () {
? ? ? ? alert('赵丽')
? ? })
</script>
2.传统方式解绑事件
<input type="button" value="按钮1">
<input type="button" value="按钮2">
<script>
? ? /*?
? ? ? ? ?传统方式解绑 ? ?元素.事件类型 = null ? ?给谁解绑元素就写谁
? ? */
? ??
? ? // ?按钮1:点击后弹窗:你好呀 ? ? ?点击按钮2用于给按钮1解绑单击事件,弹出解绑成功(点击按钮1,没反应)
? ? ? ? var btn1 = document.querySelectorAll('input')[0]
? ? ? ? btn1.onclick = function(){
? ? ? ? ? ? alert('你好')
? ? ? ? }
? ? ? ? var btn2 = document.querySelectorAll('input')[1]
? ? ? ? btn2.onclick = function(){
? ? ? ? ? ? // 给谁解绑就写谁
? ? ? ? ? ? btn1.onclick = null
? ? ? ? ? ? alert('按钮1解绑成功')
? ? ? ? }
? ? </script>
3.事件监听方式解绑事件
<input type="button" value="按钮1">
<input type="button" value="按钮2">
<script>
? ? /*?
? ? ? ? 事件监听方式解绑:
? ? ? ? ? ? 由于事件监听可以绑定多个处理函数,解绑可以解绑其中的一个
? ? ? ? ? ? 元素.removeEventListener('事件类型',事件处理函数名) 给谁解绑元素就写谁
? ? ? ? ? ??
? ? ? ? ? ? 注意: 解绑需要使用事件函数名,所以在绑定时尽量不使用匿名函数
? ? */
? ??
? ? // ?按钮1:点击后弹窗:你好呀 ? ? ?点击按钮2用于给按钮1解绑单击事件,弹出解绑成功(点击按钮1,没反应)
? ? ? ? var btn1 = document.querySelectorAll('input')[0]
? ? ? ? btn1.addEventListener('click',fun1)
? ? ? ? function fun1(){
? ? ? ? ? ? alert('你好')
? ? ? ? }
? ? ? ? // ?获取按钮2 ?绑定单击事件
? ? ? ? var btn2 = document.querySelectorAll('input')[1]
? ? ? ? btn2.addEventListener('click',function(){
? ? ? ? ? ? // ?按钮1解绑单击事件
? ? ? ? ? ? btn1.removeEventListener('click',fun1)
? ? ? ? ? ? alert('按钮1解绑成功')
? ? ? ? })
? ? </script>
4.事件解绑案例
?<input type="button" value="按钮1">
?<input type="button" value="按钮2">
?<script>
? ?/*?
? ? ?要求:
? ? ? ? ?给按钮1绑定两个单击事件;事件1:弹窗你好 ? 事件2弹出hello
? ? ? ? ?点击按钮2,给按钮1的第一个事件解绑
? ? ? ? ?也就是说: 解绑前可以弹两个,解绑后点击按钮1只能弹hello
? ?*/
? ? ?
? ? ?var btn1 = document.querySelectorAll('input')[0]
? ? ?var btn2 = document.querySelectorAll('input')[1]
? ? ?
? ? ?// ?btn1绑定两个单击事件: 使用事件监听
? ? ?// ?由于需要解绑,使用函数名 ? 所以在绑定时不要使用匿名函数
? ? ?btn1.addEventListener('click',fun1)
? ? ?function fun1(){
? ? ? ? ?alert('你好')
? ? ?}
? ? ?btn1.addEventListener('click',fun2)
? ? ?function fun2(){
? ? ? ? ?alert('hello')
? ? ?}
? ? ?// 点击btn2
? ? ?btn2.addEventListener('click',function(){
? ? ? ? ?// 给按钮1解绑 事件1
? ? ? ? ?btn1.removeEventListener('click',fun1)
? ? ? ? ?alert('按钮1的第一个事件解绑成功')
? ? ?})
?</script>