addEventListener及事件流


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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM