知识点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; }