国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

實例講解javascript注冊事件處理函數

2019-11-20 10:49:42
字體:
來源:轉載
供稿:網友

事件是javascript的核心內容,它的重要性這里就不多介紹了。觸發事件之后就需要有事件處理函數去處理,例如我們可以定義當點擊一個按鈕之后,將一個div的背景設置為綠色,那么就先看一下如何實現此效果,代碼實例如下:

<html> <head> <meta charset=" utf-8"> <title>javascript如何注冊事件處理函數</title><style type="text/css">#mydiv{ width:100px; height:100px; background-color:red;}</style><script type="text/javascript"> function changebg(){ var mydiv=document.getElementById("mydiv"); mydiv.style.backgroundColor="green";}</script></head><body> <div id="mydiv"></div> <button id="bt">點擊查看效果</button> </body></html>

在以上代碼中,點擊按鈕就會將div的背景顏色設置為綠色,這是因為代碼為按鈕的onclick事件注冊了事件處理函數,此函數可以將div的背景顏色設置為綠色。下面就結合實例簡單介紹一下如何為對象的事件注冊事件處理函數:
方式一:
直接在HTML代碼中注冊事件處理函數,也就是直接通過HTML屬性來設置事件處理函數,事件處理函數要執行的代碼就是HTML的屬性值,在文章的開頭就是使用的此方式。優缺點如下:

  • 1.容易理解,使用簡單。
  • 2.各主流瀏覽器都支持此方式。
  • 3.與HTML代碼混合在一起,使頁面十分的繁雜,不符合表現與內容分離的原則。
  • 4.只能夠在同一個對象注冊一個相同類型的事件處理函數。

方式二:
事件句柄方式,所謂的事件句柄也就是事件處理函數,指定對象的指定事件對應一個事件句柄。使用此種方式注冊事件處理函數,首先要獲得對象的引用,然后將事件句柄賦值給對象的對應的事件處理函數屬性即可。其實方式一也是事件句柄方式的一種。
代碼實例如下:

<html> <head> <meta charset=" utf-8"> <title>javascript如何注冊事件處理函數</title><style type="text/css">#mydiv{ width:100px; height:100px; background-color:red;}</style><script type="text/javascript"> window.onload=function(){ var mydiv=document.getElementById("mydiv"); var bt=document.getElementById("bt"); bt.onclick=function(){  mydiv.style.backgroundColor="green"; }}</script></head><body> <div id="mydiv"></div> <button id="bt">點擊查看效果</button></body></html>

以上代碼中,首先使用document.getElementById("bt")獲得按鈕對象的引用,然后將事件句柄(事件處理函數)賦值給按鈕對象的onclick事件屬性,這樣當點擊按鈕時就會觸發onclick事件,進而執行事件句柄中的代碼。優缺點如下:

  • 1.簡單容易理解。
  • 2.個瀏覽器都支持。
  • 3.只能夠在同一個對象注冊一個相同類型的事件處理函數。

方式三:
是一種更為高級的事件注冊方式,那就是事件監聽器,這種方式解決了在指定對象只能注冊一個指定類型事件的處理函數問題。不過存在一定的兼容性問題,下面分別介紹一下:
1).IE瀏覽器:
在IE瀏覽器中可以使用attachEvent()和detachEvent()方法為指定對象注冊事件處理函數和刪除注冊的事件處理函數。
語法格式如下:
element.attachEvent("onevent",eventListener)
此函數具有兩個參數,第一個參數是事件類型的名稱,第二個參數就是要注冊的事件處理函數。
代碼實例如下:

<html> <head> <meta charset=" utf-8"> <title>javascript如何注冊事件處理函數</title><style type="text/css">#mydiv{ width:100px; height:100px; background-color:red;}</style><script type="text/javascript"> window.onload=function(){ var mydiv=document.getElementById("mydiv"); var bt=document.getElementById("bt");  bt.attachEvent("onclick",changebg);  function changebg(){  mydiv.style.backgroundColor="green"; }}</script></head><body> <div id="mydiv"></div> <button id="bt">點擊查看效果</button></body></html>

以上代碼使用attachEvent()函數為按鈕注冊onclick事件處理函數,不過只能夠在IE瀏覽器中有效。使用detachEvent()函數可以解除原來注冊的事件處理函數,語法格式如下:
element.detachEvent("onevent",eventListener)
格式和attachEvent()函數式一樣的。
特別說明:第一個參數的必須帶有on,例如點擊事件就要寫成"onclick"。
2).標準瀏覽器:
在標準瀏覽器中(包括IE9和IE9以上瀏覽器),要使用addEventListener()和removeEventListener()函數注冊和刪除注冊處理函數。
語法格式如下:
element.addEventListener('event', eventListener, useCapture);
此函數具有三個參數,第一個參數是事件類型名稱,第二個參數就是要注冊的事件處理函數,第三個函數規定此處理函數是在事件傳遞過程中的捕獲階段被調用還是冒泡階段被調用,在默認條件下,此屬性值為false么也就是在冒泡階段調用事件處理函數。
特別說明:第一個參數不能夠帶有on,例如點擊事件不能寫為"onclick",而要寫成"click"。
代碼實例如下:

<html> <head> <meta charset=" utf-8"> <title>javascript如何注冊事件處理函數</title><style type="text/css">#mydiv{ width:100px; height:100px; background-color:red;}</style><script type="text/javascript"> window.onload=function(){ var mydiv=document.getElementById("mydiv"); var bt=document.getElementById("bt");  bt.addEventListener("click",changebg);  function changebg(){  mydiv.style.backgroundColor="green"; }}</script></head><body> <div id="mydiv"></div> <button id="bt">點擊查看效果</button></body></html>

以上代碼在IE9和IE9以上或者其他標準瀏覽器中,點擊按鈕可以將div的背景顏色設置為綠色。使用removeEventListener()函數可以解除原來注冊的事件處理函數,語法格式如下:
element.removeEventListener('event', eventListener, useCapture);
格式和addEventListener()函數式一樣的。
跨瀏覽器注冊事件處理函數:
只要加個判斷語句即可,代碼如下:

var EventUtil={  //注冊  addHandler: function(element, type, handler){   if (element.addEventListener){    element.addEventListener(type, handler, false);   } else if (element.attachEvent){    element.attachEvent("on" + type, handler);   } else {    element["on" + type] = handler;   }  },  //移除注冊  removeHandler: function(element, type, handler){   if (element.removeEventListener){    element.removeEventListener(type, handler, false);   } else if (element.detachEvent){    element.detachEvent("on" + type, handler);   } else {    element["on" + type] = null;   }  }        };

以上就是本文的詳細內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 朝阳县| 南昌市| 蒙阴县| 思南县| 丰县| 新竹县| 昌乐县| 亚东县| 尤溪县| 桃园市| 雅江县| 阜新市| 嘉鱼县| 清丰县| 南汇区| 兴仁县| 望江县| 南郑县| 沾化县| 乌兰察布市| 扎赉特旗| 平顺县| 得荣县| 庆元县| 图木舒克市| 沿河| 金堂县| 永吉县| 宜君县| 嵩明县| 新蔡县| 广水市| 清徐县| 曲麻莱县| 连城县| 江永县| 肥西县| 广州市| 报价| 红桥区| 沾益县|