網頁設計中的事件處理程序(HTML事件處理、DOM0級事件處理、DOM2級事件處理、IE事件處理)

**

網頁設計中不同類型的事件處理程序

**

1.HTML 事件處理程序:
  • 先看例子(添加事件處理程序):

    
    <script type="text/javascript">
    	function show(){
    		alert("Hello world!");
    	}
    </script>
    
    <div id="box" onclick = "show()"></div>
    
    
  • 注( 優點 ):事件處理程序中的代碼在執行時,有權訪問全局作用域中的任何代碼;HTML事件處理程序更方便訪問自身的屬性值,例如:

    <!--彈出id值-->
    <div id="box" onclick = "alert(this.id)"></div>
    
  • 缺點:HTML與JavaScript代碼緊密耦合,不利於代碼的可複用性,修改起來耗時、耗力,一旦修改任何一處,另外一處也必將改動;(該事件處理程序現在已經很少有人在用,可以說是被摒棄啦!

2.DOM0 級事件處理程序:
  • 先看例子(添加事件處理程序):

    	var btn = document.getElementById("btn");
    	btn.onclick = function(){
    	//	要執行的代碼塊;
    		alert(this.id);
    	}
    
  • 移除事件處理程序:

    	btn.onclick = null// 設置它的值爲空即可;
    
  • 優點 :
    1.操作簡單,容易理解;
    2.具有跨瀏覽器的優勢,它爲所有現代瀏覽器支持;

  • 缺點:只可以添加一個事件處理程序,添加多個二級事件處理程序請看DOM2 級事件處理程序和IE事件處理程序;

3.DOM2級 事件處理程序(可以包含多個事件,按順序執行):
  • 先看例子(添加事件處理程序):

    	var btn = document.getElementById("btn");
    	
    	btn.addEventListener("click",function(){
    	//	要執行的代碼塊;
    		alert(this.id);
    	}false );
    
    	btn.addEventListener("click",function(){
    	//	要執行的代碼塊;
    		alert("Hello world!");
    	}false );
    	………
    

    使用方法:
    1.先獲得元素的引用;
    2.調用:addEventListener ( 事件名,函數(匿名函數、外部函數),布爾值);布爾值一般爲false,它表示的意義是在冒泡階段註冊事件處理程序,如不是特別需要,不建議在捕獲階段註冊事件處理程序(傳入的參數爲true);

  • 也可以這樣使用二級事件處理程序:

    	var btn = document.getElementById("btn");
    	
    	function show(){
    		//	要執行的代碼塊;
    		alert(this.id);
    	}
    	
    	btn.addEventListener("click",show,false);
    
  • 移除DOM2 級事件處理程序,只能通過removeEventListener()來移除,removeEventListener()裏面的參數必須和addEventListener()裏面的參數保持一致;

    	btn.removeEventListener("click",show,false);
    
4.IE事件處理程序(可以包含多個事件,不按順序執行):
  • 使用方法:
    1.先獲得元素的引用;
    2.調用:addEventListener ( 事件名,函數(匿名函數、外部函數));

  • 先看例子(添加事件處理程序):

    	var btn = document.getElementById("btn");
    	
    	btn.attachEvent("onclick",function(){
    	//	要執行的代碼塊;
    		alert(this.id);
    	} );
    
    	btn.attachEvent("onclick",function(){
    	//	要執行的代碼塊;
    		alert("Hello world!");
    	} );
    	………
    
  • 移除事件處理程序:

       	var btn = document.getElementById("btn");
       	
       	btn.detachEvent("onclick",function(){
       	//	要執行的代碼塊;
       		alert(this.id);
       	});
       
       	btn.detachEvent("onclick",function(){
       	//	要執行的代碼塊;
       		alert("Hello world!");
       	});
       	………
    
  • 注:

    1.IE事件處理程序的執行順序和DOM2級事件相反,從後面開始執行;
    2.IE事件名需要 + “on”,和DOM0 級一樣;
    3.IE事件處理程序只需要兩個參數,其餘和DOM2級事件大同小異;
    4.IE事件處理程序只能依靠detachEvent();來移除,參數前後必須一致;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章