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

首頁 > 語言 > JavaScript > 正文

js事件監聽器用法實例詳解

2024-05-06 16:21:07
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了js事件監聽器用法,以實例形式較為詳細的分析了javascript事件監聽器使用注意事項與相關技巧,需要的朋友可以參考下

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

1、當同一個對象使用.onclick的寫法觸發多個方法的時候,后一個方法會把前一個方法覆蓋掉,也就是說,在對象的onclick事件發生時,只會執行最后綁定的方法。而用事件監聽則不會有覆蓋的現象,每個綁定的事件都會被執行。如下:

 

 
  1. window.onload = function(){  
  2. var btn = document.getElementById("yuanEvent");  
  3. btn.onclick = function(){  
  4. alert("第一個事件");  
  5. }  
  6. btn.onclick = function(){  
  7. alert("第二個事件");  
  8. }  
  9. btn.onclick = function(){  
  10. alert("第三個事件");  
  11. }  

最后只輸出:第三個事件,因為后一個方法都把前一個方法覆蓋掉了。

原生態的事件綁定函數addEventListener:

 

 
  1. var eventOne = function(){  
  2. alert("第一個監聽事件");  
  3. }  
  4. function eventTwo(){  
  5. alert("第二個監聽事件");  
  6. }  
  7. window.onload = function(){  
  8. var btn = document.getElementById("yuanEvent");  
  9. //addEventListener:綁定函數  
  10. btn.addEventListener("click",eventOne);  
  11. btn.addEventListener("click",eventTwo);  

輸出:第一個監聽事件 和 第二個監聽事件

2、采用事件監聽給對象綁定方法后,可以解除相應的綁定,寫法如下:

 

 
  1. var eventOne = function(){  
  2. alert("第一個監聽事件");  
  3. }  
  4. function eventTwo(){  
  5. alert("第二個監聽事件");  
  6. }  
  7. window.onload = function(){  
  8. var btn = document.getElementById("yuanEvent");  
  9. btn.addEventListener("click",eventOne);  
  10. btn.addEventListener("click",eventTwo);  
  11. btn.removeEventListener("click",eventOne);  

輸出:第二個監聽事件

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

錯誤寫法:

 

 
  1. btn.addEventListener("click",function(){  
  2. alert(11);  
  3. });  
  4. btn.removeEventListener("click",function(){  
  5. alert(11);  
  6. }); 

正確寫法:

 

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

總結:對函數進行封裝后的監聽事件如下,兼容各大主流瀏覽器。

 

 
  1. /*  
  2. * addEventListener:監聽Dom元素的事件  
  3.  
  4. * target:監聽對象  
  5. * type:監聽函數類型,如click,mouseover  
  6. * func:監聽函數  
  7. */ 
  8. function addEventHandler(target,type,func){  
  9. if(target.addEventListener){  
  10. //監聽IE9,谷歌和火狐  
  11. target.addEventListener(type, func, false);  
  12. }else if(target.attachEvent){  
  13. target.attachEvent("on" + type, func);  
  14. }else{  
  15. target["on" + type] = func;  
  16. }  
  17. }  
  18. /*  
  19. * removeEventHandler:移除Dom元素的事件  
  20.  
  21. * target:監聽對象  
  22. * type:監聽函數類型,如click,mouseover  
  23. * func:監聽函數  
  24. */ 
  25. function removeEventHandler(target, type, func) {  
  26. if (target.removeEventListener){  
  27. //監聽IE9,谷歌和火狐  
  28. target.removeEventListener(type, func, false);  
  29. else if (target.detachEvent){  
  30. target.detachEvent("on" + type, func);  
  31. }else {  
  32. delete target["on" + type];  
  33. }  
  34. }  
  35. var eventOne = function(){  
  36. alert("第一個監聽事件");  
  37. }  
  38. function eventTwo(){  
  39. alert("第二個監聽事件");  
  40. }  
  41. window.onload = function(){  
  42. var bindEventBtn = document.getElementById("bindEvent");  
  43. //監聽eventOne事件  
  44. addEventHandler(bindEventBtn,"click",eventOne);  
  45. //監聽eventTwo事件  
  46. addEventHandler(bindEventBtn,"click",eventTwo );  
  47. //監聽本身的事件  
  48. addEventHandler(bindEventBtn,"click",function(){  
  49. alert("第三個監聽事件");  
  50. });  
  51. //取消第一個監聽事件  
  52. removeEventHandler(bindEventBtn,"click",eventOne);  
  53. //取消第二個監聽事件  
  54. removeEventHandler(bindEventBtn,"click",eventTwo);  
  55. }  

實例:

 

 
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5. <title>Event</title>  
  6. <script type="text/javascript">  
  7. function addEventHandler(target,type,func){  
  8. if(target.addEventListener){  
  9. //監聽IE9,谷歌和火狐  
  10. target.addEventListener(type, func, false);  
  11. }else if(target.attachEvent){  
  12. target.attachEvent("on" + type, func);  
  13. }else{  
  14. target["on" + type] = func;  
  15. }  
  16. }  
  17. function removeEventHandler(target, type, func) {  
  18. if (target.removeEventListener){  
  19. //監聽IE9,谷歌和火狐  
  20. target.removeEventListener(type, func, false);  
  21. else if (target.detachEvent){  
  22. target.detachEvent("on" + type, func);  
  23. }else {  
  24. delete target["on" + type];  
  25. }  
  26. }  
  27. var eventOne = function(){  
  28. alert("第一個監聽事件");  
  29. }  
  30. function eventTwo(){  
  31. alert("第二個監聽事件");  
  32. }  
  33. window.onload = function(){  
  34. var bindEventBtn = document.getElementById("bindEvent");  
  35. //監聽eventOne事件  
  36. addEventHandler(bindEventBtn,"click",eventOne);  
  37. //監聽eventTwo事件  
  38. addEventHandler(bindEventBtn,"click",eventTwo );  
  39. //監聽本身的事件  
  40. addEventHandler(bindEventBtn,"click",function(){  
  41. alert("第三個監聽事件");  
  42. });  
  43. //取消第一個監聽事件  
  44. removeEventHandler(bindEventBtn,"click",eventOne);  
  45. //取消第二個監聽事件  
  46. removeEventHandler(bindEventBtn,"click",eventTwo);  
  47. }  
  48. </script>  
  49. </head>  
  50. <body>  
  51. <input type="button" value="測試" id="bindEvent">  
  52. <input type="button" value="測試2" id="yuanEvent">  
  53. </body>  
  54. </html> 

希望本文所述對大家的javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 延安市| 库伦旗| 温州市| 莒南县| 靖西县| 海林市| 万载县| 中牟县| 宾阳县| 库尔勒市| 康保县| 麦盖提县| 大城县| 满城县| 高雄市| 宝鸡市| 鄂托克旗| 青海省| 平顶山市| 海林市| 金川县| 黄山市| 高雄市| 肥乡县| 凤冈县| 庆元县| 太白县| 黑龙江省| 青神县| 新宾| 桓仁| 襄樊市| 靖州| 绥宁县| 寻乌县| 麟游县| 鄂托克旗| 开平市| 德惠市| 资阳市| 大城县|