使用'对象.事件=函数'的形式绑定响应函数,它只能同时为一个与元素的一个绑定事件绑定一个响应函数。
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('哈哈')})