<script type="text/javascript">
window.onload = function() {
var div = document.getElementsByTagName('div')[0];
var el = document.getElementById('pp');
var handler=function(e){
var target = e.Target;
alert(target.tagName);
};
el.addEventListener('click', handler, true);
div.addEventListener('click', handler, true);
};

</script>
</head>
<body>
<div style="border: 1px red solid; width: 200px; height: 300px">
<p id="pp" style="border: 1px blue solid;">这是一段中的内容</p>
<span style="border: 1px blue solid;">这是二段中的内容</span>
</div>
</body>这儿给div 和p添加相同的事件和处理函数,addEventListener第三个参数useCapture无论是false还是true,当点击p时,为什么p注册的监听器会运行两次,都是弹出P, span没有监听器当点击时监听器也运行,弹出SPAN,这是怎么回事????冒泡和捕获

解决方案 »

  1.   

    var handler=function(e){
    var target = e.Target;
    alert(target.tagName);
    };这里表示触发事件的实际对象 所以  p 和 div  这里其实 都是 p
      

  2.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <script type="text/javascript">
    function handler(e){
    var target = e.currentTarget;
    alert(target.tagName);
    };
    window.onload = function() {
    var div = document.getElementsByTagName('div')[0];
    var el = document.getElementById('pp');
    el.addEventListener('click', handler, false);
    div.addEventListener('click', handler, false);
    };</script>
    </head>
    <body>
    <div style="border: 1px red solid; width: 200px; height: 300px">
    <p id="pp" style="border: 1px blue solid;">这是一段中的内容</p>
    <span style="border: 1px blue solid;">这是二段中的内容</span>
    </div>
    </body>
    </html>
    改成这样试试 把false改成true就看出来了