事件監(jiān)聽事件代理

DOM0 事件和DOM2級在事件監(jiān)聽使用方式上有什么區(qū)別?

Dom0中的事件處理函數(shù)
DOM0中通過on開頭加上事件,click事件的事件處理程序就是onclick,load事件的事件處理程序就是onload
后添加的事件處理程序會覆蓋掉之前添加的處理程序,只能有一個(gè)是有效的;DOM0級以屬性賦值的方式綁定事件程序;

  1. html中綁定事件
<input id='myBtn' type="button" value="這是個(gè)按鈕 "onclick="showMessage()" />
  1. 對應(yīng)的程序
function showMessage(){
 console.log(this.id);
}
//還有一種方法,獲取對應(yīng)的DOM,綁定屬性值
var btn=document.getElementById("myBtn");
btn.onclick=function(){
 console.log(this.id);
}
  1. 取消事件
    DOM0級事件處理程序可以認(rèn)為是元素的方法。刪除DOM0級事件處理程序,將相應(yīng)屬性值設(shè)置為null即可。
btn.onclick=null;

缺點(diǎn):1.HTML與JavaScript代碼緊密耦合,對代碼修改和維護(hù)都造成了不便。2.如果一個(gè)事件綁定多個(gè)程序,后面的程序會覆蓋前面的程序

DOM2的事件監(jiān)聽
DOM2中通過addEventListener()添加事件監(jiān)聽,通過removeEventListener()來移除事件監(jiān)聽

var btn=document.quertSelector(".mybtn")
btn.addEventListener('click',showMessage,false)
btn.removeEventListener('click',showMessage,false)

實(shí)現(xiàn)了js和html分離,也可以綁定多個(gè)元素

btn.addEventListener('click',showMessage,false)
btn.addEventListener('click',showMessage2,false)
btn.addEventListener('click',showMessage3,false)

attachEvent與addEventListener的區(qū)別?

低版本的IE不支持addEventListener()事件監(jiān)聽,它通過attachEvent()來實(shí)現(xiàn)事件的監(jiān)聽

  1. 參數(shù)的區(qū)別 addEventListener()接受三個(gè)參數(shù)(事件類型,事件方法,布爾值{如果是true則是在捕獲階段調(diào)用事件方法,如果是false則是在事件冒泡階段處理}),attachEvent()接受二個(gè)參數(shù)(事件類型,事件方法)

  2. 第一個(gè)參數(shù)的值不同 addEventListener()的第一個(gè)值參數(shù)是事件類型(click,load),attachEvent()則是事件處理函數(shù)名稱(onclick,onload)

  3. 事件處理程序的作用域的不同 addEventListener的作用域是元素本身,this是指的觸發(fā)元素,而attachEvent事件處理程序會在全局變量內(nèi)運(yùn)行,所以this是window

  4. 為一個(gè)事件添加多個(gè)事件處理程序時(shí),執(zhí)行順序不同 addEventListener會從上到下的依次執(zhí)行,而attachEvent當(dāng)事件監(jiān)聽多的時(shí)候,是沒有規(guī)律的執(zhí)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目1: DOM0 事件和DOM2級在事件監(jiān)聽使用方式上有什么區(qū)別? DOM0級事件,添加多個(gè)事件處理程序時(shí), 會...
    饑人谷_林嘉俊閱讀 348評論 0 0
  • 聲明:本文來源于http://www.webzsky.com/?p=731我只是在這里作為自己的學(xué)習(xí)筆記整理一下(...
    angryyan閱讀 7,239評論 1 6
  • 一、問答 1. dom對象的innerText和innerHTML有什么區(qū)別? innerHTML: 也就是從對象...
    饑人谷_羅偉恩閱讀 695評論 0 2
  • 題目1: DOM0 事件和DOM2級在事件監(jiān)聽使用方式上有什么區(qū)別? Dom0級Dom0級事件處理程序是將一個(gè)函數(shù)...
    QQQQQCY閱讀 389評論 0 0
  • 1.DOM0 事件和DOM2級在事件監(jiān)聽使用方式上有什么區(qū)別? DOM0級事件在DOM0級事件處理程序,事件名以'...
    24_Magic閱讀 314評論 0 0

友情鏈接更多精彩內(nèi)容