JavaScript onclick 和 click 的區(qū)別詳解
也就是 addEventListener
和 on
的區(qū)別
為什么需要 addEventListener?
先來看一個片段:
<div id ="box">測試</div>
用 on 的代碼:
windwo.onload = function(){ var box = document.getElementById("box"); box.onclick = ()=>console.log("我是 box1"); box.onclick = ()=>console.log("我是 box2"); } // 運(yùn)行結(jié)果 : 我是 box2
看到了吧,第二個 onclick 事件把第一個onclick 給覆蓋了,雖然大部分情況我們用 on 就可以完成我們想要的效果,但是有時(shí)我們又需要執(zhí)行多個相同的事件,很明顯如果用 on 是無法實(shí)現(xiàn)的。但是可以使用 addEventListener 實(shí)現(xiàn)多次綁定同一個事件并且不會覆蓋上一個事件。
用 addEventListener 的代碼
window.onload = function(){ var box = document.getElementById("box"); box.addEventListener("click",()=>console.log("我是 box1")); box.addEventListener("click",()=>console.log("我是 box2")); } // 運(yùn)行結(jié)果: 我是 box1 //我是 box2
addEventListener
方法第一個參數(shù)填寫事件名,注意不需要寫 on ,第二個參數(shù)可以是一個函數(shù),第三個參數(shù)是指在冒泡階段還是捕獲處理事件程序,如果為 true 代表捕獲階段處理,如果是 false代表冒泡階段處理,第三個參數(shù)可以省略,大多數(shù)情況也不需要用到第三個參數(shù),不寫第三個參數(shù)默認(rèn)false。
第三個參數(shù)的使用
有時(shí)候的情況是這樣的:
<body> <div id = "box"> <div id = "child"></div> </div> </body>
如果我給 box 加 cclick 時(shí)間,如果我直接單擊 box 沒有什么問題,但是如果我單擊的是child元素,那么它是怎么樣執(zhí)行的?
box.addEventListener("click",()=>console.log("box")); child.addEventListener("click",()=>console.log("child")); // 執(zhí)行結(jié)果:child -> box
也就是說,默認(rèn)情況是按照事件冒泡的執(zhí)行順序進(jìn)行的
如果第三個參數(shù)寫的是 true,則按照事件捕獲的執(zhí)行順序進(jìn)行
總結(jié)
1.onclick
事件在同一時(shí)間只能指向一個對象
2.addEventListener
可以給一個事件注冊多個 listener
3.addEventListener
對于任何 dom 元素都是有效的,而 onclick 僅限于 html 元素
4.addEventListener
可以控制 listener 的觸發(fā)階段(捕獲/冒泡)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
window.requestAnimationFrame是什么意思,怎么用
window.requestAnimationFrame 告訴瀏覽器您要執(zhí)行的動畫并且請求瀏覽器的在下一個動畫幀重繪窗口,方法在瀏覽器重繪之前作為一個回調(diào)函數(shù)被調(diào)用,就是告訴瀏覽器在刷新屏幕的時(shí)候,調(diào)用這個方法2013-01-01Javascript中常見的校驗(yàn)如域名、手機(jī)、郵箱等等
Javascript中常見的校驗(yàn)如:驗(yàn)證一般域名校驗(yàn),手機(jī)校驗(yàn),郵箱校驗(yàn),身份證校驗(yàn)等等,下面是具體的實(shí)現(xiàn),感興趣的朋友可以參考下2014-01-01原生JavaScript來實(shí)現(xiàn)對dom元素class的操作方法(推薦)
這篇文章主要介紹了原生JavaScript來實(shí)現(xiàn)對dom元素class的操作方法,提供了代碼toggleClass的測試?yán)?,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08Javascript SHA-1:Secure Hash Algorithm
Javascript SHA-1:Secure Hash Algorithm...2006-12-12在JavaScript中用getMinutes()方法返回指定的分時(shí)刻
這篇文章主要介紹了在JavaScript中用getMinutes()方法返回指定的分時(shí)刻,是JS入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-06-06JavaScript 頁面坐標(biāo)相關(guān)知識整理
對于頁面的一些坐標(biāo)與位置分析,一般需要控制層的位置的朋友有幫助。需要的朋友可以參考下。2010-01-01