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

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

JavaScript實(shí)現(xiàn)添加及刪除事件的方法小結(jié)

2024-05-06 16:24:21
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

這篇文章主要介紹了JavaScript實(shí)現(xiàn)添加及刪除事件的方法,實(shí)例總結(jié)了javascript對(duì)事件的添加及刪除的技巧,涉及javascript事件綁定的方法及瀏覽器兼容的相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例總結(jié)了JavaScript實(shí)現(xiàn)添加及刪除事件的方法。分享給大家供大家參考。具體如下:

JavaScript添加、刪除事件的方法,也就是讓某些方法生效指定次數(shù),可以是一次、兩次或更多次,但指定次數(shù)執(zhí)行完畢后就刪除該方法,使其失效,如果你經(jīng)常從事JS編程,你就會(huì)知道這種功能用得比較多。

先來(lái)看看一個(gè)比較簡(jiǎn)單的例子:

 

 
  1. function $(id) 
  2. return document.getElementByIdx_x(id); 
  3. var ev = null
  4. var count1 = 0; 
  5. var count2 = 0; 
  6. var oncount1 = 0; 
  7. var oncount2 = 0; 
  8. var isSetEv1 = false
  9. var isSetEv2 = false
  10. //創(chuàng)建事件的通用函數(shù) 
  11. var EventUtil = function(){}; 
  12. var flag = new Flag(); 
  13. //監(jiān)控變量值 
  14. function Flag() 
  15. var tempflag = false
  16. var method = null
  17. this.SetMethod = function(value) 
  18. method = value; 
  19. }  
  20. this.SetValue = function(value) 
  21. tempflag = value; 
  22. if(tempflag == true && method){eval_r(method)}  
  23. this.GetValue = function() 
  24. return tempflag; 
  25. EventUtil.addEventHandler = function(obj,EventType,Handler) 
  26. //如果是FF 
  27. if(obj.addEventListener) 
  28. obj.addEventListener(EventType,Handler,false); 
  29. }  
  30. //如果是IE 
  31. else if(obj.attachEvent) 
  32. obj.attachEvent('on'+EventType,Handler); 
  33. }  
  34. else 
  35. obj['on'+EventType] = Handler; 
  36. //取消事件傳入的參數(shù)值要跟綁定時(shí)完全一樣才可以 
  37. EventUtil.removeEventHandler = function(obj,EventType,Handler) 
  38. //如果是FF 
  39. if(obj.removeEventListener) 
  40. obj.removeEventListener(EventType,Handler,false); 
  41. }  
  42. //如果是IE 
  43. else if(obj.detachEvent) 
  44. obj.detachEvent('on'+EventType,Handler); 
  45. }  
  46. else 
  47. obj['on'+EventType] = Handler; 
  48. function setEvent1(e) 
  49. ev = e;//針對(duì)火狐獲取event相關(guān)屬性  
  50. flag.SetMethod('addList1()'); 
  51. flag.SetValue (true); 
  52. function setEvent2(e) 
  53. ev = e;//針對(duì)火狐獲取event相關(guān)屬性 
  54. flag.SetMethod('addList2()'); 
  55. flag.SetValue (true); 
  56. function isSetEvent1(state) 
  57. isSetEv1 = state;//ie下方法名不能和全局變量名相同 
  58. function isSetEvent2(state) 
  59. isSetEv2 = state; 
  60. function add1(obj) 
  61. oncount1 = oncount1 + 1; 
  62. if(isSetEv1) 
  63. obj.innerHTML = "設(shè)置了事件,添加了 <b>" + oncount1 + "</b> 篇文章,左邊列表1自動(dòng)增加!"
  64. else 
  65. obj.innerHTML = "沒(méi)有設(shè)置事件,添加了 <b>" + oncount1 + "</b> 篇文章,左邊列表1沒(méi)有變化!"
  66. function add2(obj) 
  67. oncount2 = oncount2 + 1; 
  68. if(isSetEv2) 
  69. obj.innerHTML = "設(shè)置了事件,添加了 <b>" + oncount2 + "</b> 篇文章,左邊列表2自動(dòng)增加!"
  70. else 
  71. obj.innerHTML = "沒(méi)有設(shè)置事件,添加了 <b>" + oncount2 + "</b> 篇文章,左邊列表2沒(méi)有變化!"
  72. function addList1() 
  73. count1 = count1 + 1; 
  74. $("list1").innerHTML = "動(dòng)態(tài)添加了 <b>" + count1 + "</b> 篇文章了!"
  75. function addList2() 
  76. count2 = count2 + 1; 
  77. $("list2").innerHTML = "動(dòng)態(tài)添加了 <b>" + count2 + "</b> 篇文章了!"

再來(lái)看看一個(gè)簡(jiǎn)化的例子:

 

 
  1. //通用的添加和刪除事件的方法(兼容IE和firefox) 
  2. function AddEventHandler(oTarget, sEventType, fnHandler){ 
  3. if (oTarget.addEventListener) {//非IE 
  4. oTarget.addEventListener(sEventType, fnHandler, false); 
  5. }else if (oTarget.attachEvent) {//IE 
  6. oTarget.attachEvent('on' + sEventType, fnHandler); 
  7. }else { 
  8. oTarget['on' + sEventType] = fnHandler; 
  9. function RemoveEventHandler(oTarget, sEventType, fnHandler){ 
  10. if (oTarget.removeEventListener) {//非IE 
  11. oTarget.removeEventListener(sEventType, fnHandler, false); 
  12. }else if (oTarget.detachEvent) {//IE 
  13. oTarget.detachEvent('on' + sEventType, fnHandler); 
  14. }else { 
  15. oTarget['on' + sEventType] = null

最后再來(lái)看一個(gè)完整的實(shí)例:

 

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  3. <html xmlns="http://www.w3.org/1999/xhtml"
  4. <head> 
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  6. <title>JavaScript添加、刪除事件的方法</title> 
  7. <script type="text/javascript"
  8. var EventUtil=new Object; 
  9. EventUtil.addEvent=function(oTarget,sEventType,funName){ 
  10. if(oTarget.addEventListener){//for DOM; 
  11. oTarget.addEventListener(sEventType,funName, false); 
  12. }else if(oTarget.attachEvent){ 
  13. oTarget.attachEvent("on"+sEventType,funName); 
  14. }else
  15. oTarget["on"+sEventType]=funName; 
  16. }; 
  17. EventUtil.removeEvent=function(oTarget,sEventType,funName){ 
  18. if(oTarget.removeEventListener){//for DOM; 
  19. oTarget.removeEventListener(sEventType,funName, false); 
  20. }else if(oTarget.detachEvent){ 
  21. oTarget.detachEvent("on"+sEventType,funName); 
  22. }else
  23. oTarget["on"+sEventType]=null
  24. }; 
  25. function removeClick(){ 
  26. alert("click"); 
  27. var oDiv=document.getElementById("odiv"); 
  28. oDiv.style.cursor="auto"
  29. EventUtil.removeEvent(oDiv,"click",removeClick); 
  30. function addLoadEvent(func){ 
  31. var oldonload=window.onload; 
  32. if(typeof window.onload !="function"){ 
  33. window.onload=func; 
  34. }else
  35. window.onload=function(){ 
  36. oldonload(); 
  37. func(); 
  38. addLoadEvent(addClick); 
  39. function addClick(){ 
  40. var oDiv=document.getElementById("odiv"); 
  41. oDiv.style.cursor="pointer"
  42. EventUtil.addEvent(oDiv,"click",removeClick); 
  43. </script> 
  44. </head> 
  45. <body> 
  46. <p>第一次點(diǎn)的時(shí)候彈出警告,并移除click事件,再點(diǎn)點(diǎn)擊就失效了</p> 
  47. <div id="odiv" style="background:#003399; height:70px; width:126px; margin:0 auto; color:skyblue; ">第一次警告,第二次沒(méi)反應(yīng)!</div> 
  48. </body> 
  49. </html> 

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 延吉市| 莱芜市| 宣化县| 水富县| 蒙阴县| 安吉县| 新安县| 和田市| 泽州县| 内江市| 桦南县| 镇安县| 开封县| 平定县| 阿尔山市| 腾冲县| 大名县| 赣榆县| 西林县| 南涧| 宜兰县| 泽州县| 隆德县| 申扎县| 内江市| 瑞金市| 砀山县| 永泰县| 察哈| 恩施市| 龙南县| 剑阁县| 新安县| 镇康县| 桦南县| 二连浩特市| 德令哈市| 棋牌| 顺义区| 忻城县| 辉县市|