1. 程式人生 > >自定義事件處理函數

自定義事件處理函數

rem pan 時間函數 sna 自定義 n) cti .class ntb

解決了傳統事件處理函數的覆蓋問題、可讀性問題、this傳遞問題

 1 //添加時間函數
 2 function addEvent(obj,type,fn){            //obj相當於window,type相當於onload,fn相當於function(){};
 3     var saved = null;            //用於保存上一個事件
 4     if (typeof obj[‘on‘ + type] == ‘function‘) {        //用於判斷事件是否存在
 5         saved = obj[‘on‘ + type];        //保存上一個事件
6 } 7 8 obj[‘on‘ + type] = function(){ 9 if (saved) saved(); 10 fn.call(this); //把this傳過去,傳統onclick會自動傳 11 }; 12 } 13 14 //移除事件函數 15 16 function removeEvent(obj,type){ 17 if (obj[‘on‘ + type]) obj[‘on‘ + type] = null; 18 } 19 20 21 //事件切換器 22 addEvent(window,‘load‘,function
(){ 23 var box = document.getElementById("box"); 24 addEvent(box,‘click‘,toBlue); 25 }); 26 27 function toBlue(){ 28 this.className = "blue"; 29 removeEvent(this,‘click‘); 30 addEvent(this,‘click‘,toRed); 31 } 32 33 function toRed(){ 34 this.className = "red";
35 removeEvent(this,‘click‘); 36 addEvent(this,‘click‘,toBlue); 37 }

自定義事件處理函數