溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

javascript事件處理方式有哪些

發(fā)布時(shí)間:2022-06-30 09:19:14 來源:億速云 閱讀:237 作者:iii 欄目:web開發(fā)

這篇“javascript事件處理方式有哪些”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“javascript事件處理方式有哪些”文章吧。

JavaScript事件處理有三種方式:1、HTML事件處理程序,直接在HTML代碼中添加事件處理程序,語法為“<element 事件=事件函數(shù)...>”;2、DOM0級(jí)事件處理程序,為指定對(duì)象添加事件處理,語法為“元素對(duì)象.事件=function(){...}”;3、DOM2級(jí)事件處理程序,也是對(duì)特定對(duì)象添加,主要用于處理指定和刪除事件處理程序的操作。

本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。

javascript事件處理有幾種方式

Javascript事件處理程序的3種方式

產(chǎn)生了事件,我們就要去處理他,Javascript事件處理程序主要有3種方式:

1、HTML事件處理程序

即我們直接在HTML代碼中添加事件處理程序,如下面這段代碼:

<input id="btn" value="按鈕" type="button" onclick="showmsg();">
  <script>
   function showmsg(){
   alert("HTML添加事件處理");
   }
  </script>

從上面的代碼中我們可以看出,事件處理是直接嵌套在元素里頭的,這樣有一個(gè)毛?。壕褪莌tml代碼和js的耦合性太強(qiáng),如果哪一天想要改變js中showmsg,那么不但要再js中修改,還需要到html中修改,一兩處的修改我們能接受,但是當(dāng)你的代碼達(dá)到萬行級(jí)別的時(shí)候,修改起來就需要?jiǎng)诿駛?cái)了,所以,這個(gè)方式我們并不推薦使用。

2、DOM0級(jí)事件處理程序

即為指定對(duì)象添加事件處理,看下面的一段代碼:

<input id="btn" value="按鈕" type="button">
  <script>
    var btn= document.getElementById("btn");
   btn.onclick=function(){
      alert("DOM級(jí)添加事件處理");
    } 
    btn.onclick=null;//如果想要?jiǎng)h除btn的點(diǎn)擊事件,將其置為null即可
  </script>

從上面的代碼中,我們能看出,相對(duì)于HTML事件處理程序,DOM0級(jí)事件,html代碼和js代碼的耦合性已經(jīng)大大降低。但是,聰明的程序員還是不太滿足,期望尋找更簡便的處理方式,下面來看第三種處理方法。

3、DOM2級(jí)事件處理程序

DOM2也是對(duì)特定的對(duì)象添加事件處理程序,但是主要涉及到兩個(gè)方法,用于處理指定和刪除事件處理程序的操作:addEventListener()和 removeEventListener()。它們都接收三個(gè)參數(shù):要處理的事件名、作為事件處理程序的函數(shù)和一個(gè)布爾值(是否在捕獲階段處理事件),看下面的一段代碼:

<input id="btn" value="按鈕" type="button">
  <script>
   var btn=document.getElementById("btn");
   btn.addEventListener("click",showmsg,false);//這里我們把最后一個(gè)值置為false,即不在捕獲階段處理,一般來說冒泡處
理在各瀏覽器中兼容性較好
   function showmsg(){
   alert("DOM級(jí)添加事件處理程序");
   }
   btn.removeEventListener("click",showmsg,false);//如果想要把這個(gè)事件刪除,只需要傳入同樣的參數(shù)即可
  </script>

這里我們可以看到,在添加刪除事件處理的時(shí)候,最后一種方法更直接,也最簡便。但是馬海祥提醒大家需要注意的是,在刪除事件處理的時(shí)候,傳入的參數(shù)一定要跟之前的參數(shù)一致,否則刪除會(huì)失效!

擴(kuò)展知識(shí):

事件流就是描述了頁面中接受事件的順序,在瀏覽器發(fā)展的初期,兩大瀏覽器廠商IE和Netscape互掐,出現(xiàn)了一個(gè)坑爹的情況,那就是他們對(duì)事件流的解釋出現(xiàn)了兩中截然相反的定義。也就是我們所熟悉的:IE的事件冒泡,Netscape的事件捕獲。先來一張圖,簡要的看下結(jié)構(gòu):

javascript事件處理方式有哪些

1、事件冒泡

事件冒泡即事件最開始由最具體的元素(文檔中嵌套層次最深的那個(gè)節(jié)點(diǎn))接收,然后逐級(jí)向上傳播至最不具體的節(jié)點(diǎn)(文檔)。拿上面的圖來說明,就是當(dāng)點(diǎn)擊text部分時(shí),先由text處的元素接收,然后逐級(jí)傳播至window,即執(zhí)行6-7-8-9-10的過程。

2、事件捕獲

事件捕獲即事件最早由不太具體的節(jié)點(diǎn)接收,而最具體的節(jié)點(diǎn)最后接收到事件。同理,在上面的模型中,就是點(diǎn)擊text部分時(shí),先由window接收,然后逐級(jí)傳播至text元素,即執(zhí)行1-2-3-4-5的過程。

以上就是關(guān)于“javascript事件處理方式有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI