飞天意大利面神兽
2016-05-20 14:34
var even={ addandler:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false); }else if(element.attachEvent){ element.attachEvent(type,"on"+handler,false); }else{ element["on"+type]=handler; } } }
把其中的false改成true,点击的结果是,先是触发了最外层的onclik事件,然后再触发this的onclik事件。相反了。请问这是为什么?
http://www.imooc.com/video/2139
当false时,为事件冒泡流,
即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点) 接受,然后逐级向上传播至最不具体的那个节点(文档)。
当为true时,为事件捕获流
不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件。
请看1-1事件冒泡和1-2事件捕获,建议你边学边做笔记,好记性不如烂笔头
不好意思,第二行是回答其他问题的,
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> window.onload=function(){ var bt=document.createElement("input"); bt.type="button"; bt.value="按钮"; bt.id="btn"; document.body.appendChild(bt); bt.style.width="160px"; bt.style.height="60px"; //请把点击事件加载window.onload里面 var a=document.getElementById("btn"); a.addEventListener("click",asd,false); } function asd(){ alert(this.value); } </script> </head> <body> </body> </html>
解决问题请采纳,谢谢
一个是按事件冒泡的顺序,一个是按事件捕获的顺序
DOM事件探秘
99546 学习 · 1197 问题
相似问题