1. 程式人生 > >JavaScript三種繫結事件的方式及其用法區別(一個很好的面試題目)

JavaScript三種繫結事件的方式及其用法區別(一個很好的面試題目)

 轉自:https://www.cnblogs.com/mylove103104/p/4667211.html

JavaScript三種繫結事件的方式:

  1. <div id="btn" onclick="clickone()"></div> //直接在DOM裡繫結事件

    <script>

     function clickone(){ alert("hello"); }

    </script>

  2. <div id="btn"></div>

    <script>

     document.getElementById("btn").onclick = function(){ alert("hello"); } //腳本里面繫結

    </script>

  3. <div id="btn"></div>

    <script>

     document.getElementById("btn").addeventlistener("click",clickone,false); //通過偵聽事件處理相應的函式

     function clickone(){ alert("hello"); }

    </script>

那麼問題來了,1 和 2 的方式是我們經常用到的,那麼既然已經有兩種繫結事件的方法為什麼還要有第三種呢?答案是這樣的:

用 "addeventlistener" 可以繫結多次同一個事件,且都會執行,而在DOM結構如果繫結兩個 "onclick" 事件,只會執行第一個;在指令碼通過匿名函式的方式繫結的只會執行最後一個事件。

  1. <div id="btn" onclick="clickone()" onclick="clicktwo()"></div> 

    <script>

     function clickone(){ alert("hello"); } //執行這個

     function clicktwo(){ alert("world!"); }

    </script>

  2. <div id="btn"></div>

    <script>

     document.getElementById("btn").onclick = function(){ alert("hello"); }

     document.getElementById("btn").onclick = function(){ alert("world"); } //執行這個

    </script>

  3. <div id="btn"></div>

    <script>

     document.getElementById("btn").addeventlistener("click",clickone,false);

     function clickone(){ alert("hello"); } //先執行

     document.getElementById("btn").addeventlistener("click",clicktwo,false);

     function clicktwo(){ alert("world"); } //後執行

    </script>

以上;可根據場景靈活選擇。

值得仔細推敲。