知識點1:addEventListener() 方法,事件監聽,可以使用 removeEventListener() 方法來移除事件的監聽。
語法
element.addEventListener(event, function, useCapture);
第一個參數是事件的類型 (如 "click" 或 "mousedown").
第二個參數是事件觸發后調用的函數。
第三個參數是個布爾值用於描述事件是冒泡還是捕獲。該參數是可選的,默認是false。
注意:不要使用 "on" 前綴。 例如,使用 "click" ,而不是使用 "onclick"。
知識點2:當一個事件發生時,分為三個階段:
捕獲階段 從根節點開始順序而下至目標節點,檢測每個節點是否注冊了事件處理程序。如果注冊了事件處理程序,並且 useCapture 為 true,則調用該事件處理程序。(IE 中無此階段。)
目標階段 觸發在目標對象本身注冊的事件處理程序,也稱正常事件派發階段。
冒泡階段 從目標節點到根節點,檢測每個節點是否注冊了事件處理程序,如果注冊了事件處理程序,並且 useCapture 為 false,則調用該事件處理程序。
<div id="out" style="width:500px;height:200px;margin:100px auto;border:1px solid #ccc;"> <div id="middle" style="width:300px;border:1px solid #ccc;margin: 20px auto;height:100px"> <div id="myBtn" style="width:200px;border:1px solid #ccc;margin: 20px auto;">測試監聽事件</div> </div> <div id="demo"></div> </div>
js
var p1 = 5; var p2 = 7; document.getElementById("myBtn").addEventListener("click", function() { console.log("里面") myFunction(p1, p2); },false); document.getElementById("middle").addEventListener("click", function() { console.log("中間") myFunction(3,4); },true); document.getElementById("out").addEventListener("click", function() { console.log("外面") myFunction(3,4); },false); function myFunction(a, b) { var result = a * b; document.getElementById("demo").innerHTML = result; }