码迷,mamicode.com
首页 > 其他好文 > 详细

addEventListener及事件流

时间:2016-06-18 00:04:46      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

addEventListener

定义和用法

addEventListener 用于向指定元素添加事件句柄(又称事件处理函数)

语法

element.addEventListener(event, function, useCapture)

element   文档节点,duocument,window。

event      必须有。是一个字符串,指定事件名(一般不使用“on前缀”,例如“click,mouseover”)。

function  必须有。指定要事件触发时执行的函数(可以是函数,也可以是函数名)。

useCapture 可选。布尔值(true 或者false)指定事件是否在捕获阶段还是在冒泡阶段执行,一般情况下默认值为false

1、如果为true则事件句柄在捕获阶段执行

2、如果为false则事件句柄在冒泡阶段执行

 

实例

通过点击按钮改变背景色(主要代码):

document.getElementById("Btn").addEventListener("click",function(){
document.getElementById("box").style.backgroundColor = ‘green‘;
});

实例

可以在文档中添加多个事件,添加的事件不会覆盖已存在的事件, 该下实例演示了如何在<button>元素中添加两个点击事件:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<style type="text/css">
    #box{
        width:50px;
        height:50px;
        background-color: red;
    }
</style>
<body>
    <div id="box">
    </div>
    <button id="Btn">点击</button>
    <script type="text/javascript">
       document.getElementById("Btn").addEventListener("click",function(){
           document.getElementById("box").style.backgroundColor = green;
       });
       document.getElementById("Btn").addEventListener("click",function(){
          this.style.backgroundColor = red;
       });
    </script>
</body>
</html>

实例

可以通过函数名来引用外部函数(主要代码):

    document.getElementById("Btn").addEventListener("click",changeColor ,true);
       function changeColor(){
           document.getElementById("box").style.backgroundColor = ‘green‘;
       }

有useCapture值时:就要想到 addEventListener-事件流

当一个事件发生时,会有三个阶段

捕获触发  从根节点开始挨个往下,检测每个节点是否检查是否调用了事件处理函数。如果调用了事件处理函数,并且 useCapture 为 true,则调用该事件处理函数。

目标触发  触发在目标对象本身调用了事件处理函数。

冒泡触发  从目标节点到根节点,检测每个节点是否调用了事件处理函数。如果调用了事件处理函数,并且 useCapture 为 false,则调用该事件处理函数。

 

1、  捕获时,以下执行结果为 2,1

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <button id="Btn">点击</button>
    <script type="text/javascript">
        //捕获时触发, 当useCapture为true时触发,因此以下执行的结果是2,1
        var btn=document.getElementById(Btn);
        btn.addEventListener(click,function(){alert(1);},false);
        document.body.addEventListener(click, function(){alert(2);},true); //捕获时触发
    </script>
</body>
</html>

2、  冒泡时,以下执行结果为1,2

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <button id="Btn">点击</button>
    <script type="text/javascript">
        //冒泡时触发, 当useCapture为false时触发,因此以下执行的结果是1,2
        var btn=document.getElementById(Btn);
        btn.addEventListener(click,function(){alert(1);},false);
        document.body.addEventListener(click, function(){alert(2);},false); //冒泡时触发
    </script>
</body>
</html>

 

addEventListener及事件流

标签:

原文地址:http://www.cnblogs.com/hy-sunny/p/5595391.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!