天天看點

JavaScript事件詳解

一、事件流

    1.事件流:描述的是在頁面中接受事件的順序

    2.事件冒泡:由最具體的元素接收,然後逐級向上傳播至最不具體的元素的節點(文檔)

    3.事件捕獲:最不具體的節點先接收事件,而最具體的節點應該最後接收事件

二、事件處理

    1.HTML事件處理:直接添加到HTML結構中

    2.DOM0級事件處理:把一個函數指派給一個事件處理程式屬性

    3.DOM2級事件處理:

        addEventListener("事件名","事件處理函數",布爾值)

        true:事件捕獲

        false:事件冒泡

        removeEventListener();

    4.IE事件處理程式

        attachEvent

        detachEvent

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<div id="div">
			<button id="btn1">按鈕</button>
		</div>
		<!--<script>
			function demo(){
				alert("Hello HTML事件處理");
			}
		</script>-->
		<!--<script>
			var btn1 = document.getElementById("btn1");
			btn1.onclick = function(){alert("Hello DOM0級事件處理程式")};//被覆寫掉
			btn1.onclick = function(){alert("Hello DOM0級事件處理程式2")};
			btn1.onclick = function(){alert("Hello DOM0級事件處理程式3")};
		</script>-->
		<!--<script>
			var btn1 = document.getElementById("btn1");
			btn1.addEventListener("click",demo1);
			btn1.addEventListener("click",demo2);
			btn1.addEventListener("click",demo3);
			function demo1(){
				alert("DOM2級事件處理程式1");
			}
			function demo2(){
				alert("DOM2級事件處理程式2");
			}
			function demo3(){
				alert("DOM2級事件處理程式3");
			}
			btn1.removeEventListener("click",demo2)
		</script>-->
		<script>
			var btn1 = document.getElementById("btn1");
			if(btn1.addEventListener){
				btn1.addEventListener("click",demo);
			}else if(btn1.attachEvent){
				btn1.attachEvent("onclick",demo)
			}else{
				btn1.onclick = demo();
			}
			function demo(){
				alert("Hello");
			}
		</script>
	</body>
</html>      

三、事件對象

     1、事件對象:在觸發DOM事件的時候都會産生一個對象

     2、事件對象event:

        type:擷取事件類型

        target:擷取事件目标

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<div id="div">
			<button id="btn1">按鈕</button>
			<a href="http://www.baidu.com" id="aid">百度</a>
		</div>
		<script>
			document.getElementById("btn1").addEventListener("click",showType);
			document.getElementById("div").addEventListener("click",showDiv);
			document.getElementById("aid").addEventListener("click",showA);
			function showType(event){
//				alert(event.type);
				alert(event.target);
				event.stopPropagation();//阻止事件冒泡
			}
			function showDiv(){
				alert("div")
			}
			function showA(event){
//				event.stopPropagation();
//				event.preventDefault();
			}
		</script>
	</body>
</html>