JavaScript三種繫結事件的方式及其用法區別(一個很好的面試題目)
阿新 • • 發佈:2018-12-22
轉自: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> 以上;可根據場景靈活選擇。
值得仔細推敲。