事件的概念
事件:指的是文檔或者瀏覽器窗口中發生的一些特定交互瞬間。我們可以通過偵聽器(或者處理程序)來預定事件,以便事件發生的時候執行相應的代碼。
一、事件流
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:獲取事件目標
stopPropagation():阻止事件冒泡
preventDefault():阻止事件默認行為
<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title></head><body><div id="div"><button id="btn1">按鈕</button><a 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>新聞熱點
疑難解答