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

首頁 > 編程 > JavaScript > 正文

js事件監(jiān)聽器用法實(shí)例詳解

2019-11-20 12:22:53
字體:
供稿:網(wǎng)友

本文實(shí)例講述了js事件監(jiān)聽器用法。分享給大家供大家參考。具體分析如下:

1、當(dāng)同一個(gè)對(duì)象使用.onclick的寫法觸發(fā)多個(gè)方法的時(shí)候,后一個(gè)方法會(huì)把前一個(gè)方法覆蓋掉,也就是說,在對(duì)象的onclick事件發(fā)生時(shí),只會(huì)執(zhí)行最后綁定的方法。而用事件監(jiān)聽則不會(huì)有覆蓋的現(xiàn)象,每個(gè)綁定的事件都會(huì)被執(zhí)行。如下:

window.onload = function(){  var btn = document.getElementById("yuanEvent");  btn.onclick = function(){   alert("第一個(gè)事件");  }  btn.onclick = function(){   alert("第二個(gè)事件");  }  btn.onclick = function(){   alert("第三個(gè)事件");  } }

最后只輸出:第三個(gè)事件,因?yàn)楹笠粋€(gè)方法都把前一個(gè)方法覆蓋掉了。

原生態(tài)的事件綁定函數(shù)addEventListener:

var eventOne = function(){  alert("第一個(gè)監(jiān)聽事件"); } function eventTwo(){  alert("第二個(gè)監(jiān)聽事件"); } window.onload = function(){  var btn = document.getElementById("yuanEvent");  //addEventListener:綁定函數(shù)  btn.addEventListener("click",eventOne);  btn.addEventListener("click",eventTwo); }

輸出:第一個(gè)監(jiān)聽事件 和 第二個(gè)監(jiān)聽事件

2、采用事件監(jiān)聽給對(duì)象綁定方法后,可以解除相應(yīng)的綁定,寫法如下:

var eventOne = function(){  alert("第一個(gè)監(jiān)聽事件"); } function eventTwo(){  alert("第二個(gè)監(jiān)聽事件"); } window.onload = function(){  var btn = document.getElementById("yuanEvent");  btn.addEventListener("click",eventOne);  btn.addEventListener("click",eventTwo);  btn.removeEventListener("click",eventOne); }

輸出:第二個(gè)監(jiān)聽事件

3、解除綁定事件的時(shí)候一定要用函數(shù)的句柄,把整個(gè)函數(shù)寫上是無法解除綁定的。

錯(cuò)誤寫法:

btn.addEventListener("click",function(){  alert(11); }); btn.removeEventListener("click",function(){  alert(11); });

正確寫法:

btn.addEventListener("click",eventTwo); btn.removeEventListener("click",eventOne); 

總結(jié):對(duì)函數(shù)進(jìn)行封裝后的監(jiān)聽事件如下,兼容各大主流瀏覽器。

/*  * addEventListener:監(jiān)聽Dom元素的事件  *  * target:監(jiān)聽對(duì)象  * type:監(jiān)聽函數(shù)類型,如click,mouseover  * func:監(jiān)聽函數(shù)  */ function addEventHandler(target,type,func){  if(target.addEventListener){   //監(jiān)聽I(yíng)E9,谷歌和火狐   target.addEventListener(type, func, false);  }else if(target.attachEvent){   target.attachEvent("on" + type, func);  }else{   target["on" + type] = func;  } } /*  * removeEventHandler:移除Dom元素的事件  *  * target:監(jiān)聽對(duì)象  * type:監(jiān)聽函數(shù)類型,如click,mouseover  * func:監(jiān)聽函數(shù)  */ function removeEventHandler(target, type, func) {  if (target.removeEventListener){   //監(jiān)聽I(yíng)E9,谷歌和火狐   target.removeEventListener(type, func, false);  } else if (target.detachEvent){   target.detachEvent("on" + type, func);  }else {   delete target["on" + type];  } } var eventOne = function(){  alert("第一個(gè)監(jiān)聽事件"); } function eventTwo(){  alert("第二個(gè)監(jiān)聽事件"); } window.onload = function(){  var bindEventBtn = document.getElementById("bindEvent");  //監(jiān)聽eventOne事件  addEventHandler(bindEventBtn,"click",eventOne);  //監(jiān)聽eventTwo事件  addEventHandler(bindEventBtn,"click",eventTwo );  //監(jiān)聽本身的事件  addEventHandler(bindEventBtn,"click",function(){   alert("第三個(gè)監(jiān)聽事件");  });  //取消第一個(gè)監(jiān)聽事件  removeEventHandler(bindEventBtn,"click",eventOne);  //取消第二個(gè)監(jiān)聽事件  removeEventHandler(bindEventBtn,"click",eventTwo); } 

實(shí)例:

<!DOCTYPE html> <html>  <head>   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">   <title>Event</title>   <script type="text/javascript">    function addEventHandler(target,type,func){     if(target.addEventListener){      //監(jiān)聽I(yíng)E9,谷歌和火狐      target.addEventListener(type, func, false);     }else if(target.attachEvent){      target.attachEvent("on" + type, func);     }else{      target["on" + type] = func;     }    }    function removeEventHandler(target, type, func) {     if (target.removeEventListener){      //監(jiān)聽I(yíng)E9,谷歌和火狐      target.removeEventListener(type, func, false);     } else if (target.detachEvent){      target.detachEvent("on" + type, func);     }else {      delete target["on" + type];     }    }    var eventOne = function(){     alert("第一個(gè)監(jiān)聽事件");    }    function eventTwo(){     alert("第二個(gè)監(jiān)聽事件");    }    window.onload = function(){     var bindEventBtn = document.getElementById("bindEvent");     //監(jiān)聽eventOne事件     addEventHandler(bindEventBtn,"click",eventOne);     //監(jiān)聽eventTwo事件     addEventHandler(bindEventBtn,"click",eventTwo );     //監(jiān)聽本身的事件     addEventHandler(bindEventBtn,"click",function(){      alert("第三個(gè)監(jiān)聽事件");     });     //取消第一個(gè)監(jiān)聽事件     removeEventHandler(bindEventBtn,"click",eventOne);     //取消第二個(gè)監(jiān)聽事件     removeEventHandler(bindEventBtn,"click",eventTwo);    }   </script>  </head>  <body>   <input type="button" value="測(cè)試" id="bindEvent">   <input type="button" value="測(cè)試2" id="yuanEvent">  </body> </html>

PS:這里再為大家提供一個(gè)關(guān)于JS事件的在線工具,歸納總結(jié)了JS常用的事件類型與相關(guān)函數(shù)功能:

javascript事件與功能說明大全:

http://tools.VeVB.COm/table/javascript_event

希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大新县| 利川市| 普兰店市| 灵山县| 渭南市| 洛扎县| 曲靖市| 四川省| 五家渠市| 河曲县| 托里县| 华亭县| 新平| 通渭县| 孟州市| 明水县| 宁津县| 昂仁县| 漠河县| 赤水市| 蓬安县| 仁寿县| 宝山区| 上蔡县| 根河市| 农安县| 盐津县| 奈曼旗| 枣阳市| 巴马| 达州市| 东兰县| 织金县| 遵义市| 洪泽县| 青川县| 互助| 邢台市| 社旗县| 南部县| 象州县|