使用'对象.事件=函数'的形式绑定响应函数,它只能同时为一个与元素的一个绑定事件绑定一个响应函数。
1. addEventListener() 增加IE9及以上
-->这是一个增加事件监听器
通过这个方法为元素绑定响应函数
-->参数 1 事件的字符串,不要'on'
2 回调函数
3 是否在捕获阶段触发事件,需要一个布尔值,一般都传false
-->可以同时为一个元素的相同事件同时绑定多个响应函数,这样当事件被触发时,响应函数将会按照函数的绑定顺序执行
例:
btn.addEventListener('click',function(){},false)
2. attachEvent() 只支持IE浏览器5.0 - 10
-->参数 1 事件的字符串,要'on'
2 回调函数
例:
btn.attachEvent('onclick',function(){})
-->执行顺序和addEvEventListener()相反
--> addEventListener()中的this,是绑定事件的对象
--> attachEvent()中的this,是window,需要统一两个方法的this
<button id="btn1">按钮</button>
<script>
let btn1 = document.getElementById('btn1')
function bind(obj,eventStr,callback){
if(obj.addEventListener){
// IE9及以上还有其它浏览器
obj.addEventListener(eventStr,callback,false)
}else{
// this是谁由调用方式决定
// callback.call(obj)
// IE8及以下
obj.attachEvent('on'+eventStr,function(){
callback.call(obj)
})
}
}
bind(btn1,'click',function(){
alert(2)
})
</script>
4. 封装事件监听器
function bind(obj,eventStr,callback){
if(obj.addEventListener){
// IE9及以上还有其它浏览器
obj.addEventListener(eventStr,callback,false)
}else{
// this是谁由调用方式决定
// callback.call(obj)
// IE8及以下
obj.attachEvent('on'+eventStr,function(){
callback.call(obj)
})
}
}
调用:bind(btn1,'click',function(){alert('哈哈')})