Js on及addEventListener原理用法區(qū)別解析
一.首先介紹兩者的用法:
1.on的用法:以onclick為例
第一種:
obj.onclick = function(){ //do something.. }
第二種:
obj.onclick= fn; function fn (){ //do something... }
第三種:當(dāng)函數(shù)fn有參數(shù)的情況下使用匿名函數(shù)來傳參:
obj.onclick = function(){fn(param)}; function fn(param){ //do something.. }
不能夠這樣寫:錯(cuò)誤寫法:obj.onclick= fn(param):
因?yàn)檫@樣寫函數(shù)會(huì)立即執(zhí)行,不會(huì)等待點(diǎn)擊觸發(fā),特別注意一下
2.addEventListener的用法:
形式:
addEventListener(event,funtionName,useCapture)
參數(shù):
- event:事件的類型如 “click”
- funtionName:方法名
- useCapture(可選):布爾值,指定事件是否在捕獲或冒泡階段執(zhí)行。
- true - 事件句柄在捕獲階段執(zhí)行
- false- false- 默認(rèn)。事件句柄在冒泡階段執(zhí)行
寫法:
第一種:
obj.addEventListener("click",function(){ //do something }));
第二種,沒參數(shù)可以直接寫函數(shù)名
obj.addEventListener("click",fn,fasle)); function fn(){ //do something.. }
第三種:函數(shù)有參數(shù)時(shí)需要使用匿名函數(shù)來傳遞參數(shù)
obj.addEventListener("click",function(){fn(parm)},false);
二.兩者的區(qū)別
1.on事件會(huì)被后面的on的事件覆蓋
以onclick為例:
//obj是一個(gè)dom對(duì)象,下同//注冊(cè)第一個(gè)點(diǎn)擊事件 obj.onclick(function(){ alert("hello world"); }); //注冊(cè)第二個(gè)點(diǎn)擊事件 obj.onclick(function(){ alert("hello world too"); });
最終會(huì)只有彈框輸出:
hello world too
2.addEventListener 則不會(huì)覆蓋。
//注冊(cè)第一個(gè)點(diǎn)擊事件 obj.addEventListener("click",function(){ alert("hello world"); })); //注冊(cè)第二個(gè)點(diǎn)擊事件 obj.addEventListener("click",function(){ alert("hello world too"); }));
這樣會(huì)連續(xù)輸出:
hello world
hello world too
三.addEventListener注意事項(xiàng):
1.特別說明addEventListener不被IE9以下兼容,IE9以下用使用attachEvent()
obj.attachEvent(event,funtionName);
參數(shù):
event:事件類型(需要寫成“onclick”前面加on,這個(gè)與addEventListener不同)
funtionName:方法名(要參數(shù)是也是需要使用匿名函數(shù)來傳參)
四.事件集合:
1.鼠標(biāo)事件:
- click(單擊)
- dbclick(雙擊)
- mousedown(鼠標(biāo)按下)
- mouseout(鼠標(biāo)移走)
- mouseover(鼠標(biāo)移入)
- mouseup(鼠標(biāo)彈起)
- mousemove(鼠標(biāo)移動(dòng))
2.鍵盤事件:
- keydown(鍵按下)
- keypress(按鍵)
- keyup(鍵起來)
- 3.HTML事件:
- load(加載頁(yè)面)
- unload(卸載離開頁(yè)面)
- change(改變內(nèi)容)
- scroll(滾動(dòng))
- focus(獲得焦點(diǎn))
- blur(失去焦點(diǎn))
五.總結(jié):
onXXX與addEventListener都是為dom元素添加事件監(jiān)聽,使其在事件發(fā)生后執(zhí)行相應(yīng)的代碼,操作。有了它們我們實(shí)現(xiàn)了頁(yè)面與用戶交互。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js中onclick和addEventListener的區(qū)別
- js中onclick和addEventListener的區(qū)別詳解
- js中addEventListener()與removeEventListener()用法案例分析
- JavaScript使用addEventListener添加事件監(jiān)聽用法實(shí)例
- window.addEventListener來解決讓一個(gè)js事件執(zhí)行多個(gè)函數(shù)
- JS在IE和FF下attachEvent,addEventListener學(xué)習(xí)筆記
- Javascript 的addEventListener()及attachEvent()區(qū)別分析
- JS中addEventListener的使用示例詳解
相關(guān)文章
JS自動(dòng)生成動(dòng)態(tài)HTML驗(yàn)證碼頁(yè)面
這篇文章主要介紹了JS自動(dòng)生成動(dòng)態(tài)HTML驗(yàn)證碼頁(yè)面,輸入錯(cuò)誤自動(dòng)清空輸入框的功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06新年快樂! javascript實(shí)現(xiàn)超級(jí)炫酷的3D煙花特效
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)超級(jí)炫酷的3D煙花特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01JavaScript?中URL?查詢字符串(query?string)的序列與反序列化的方法
在 JavaScript 中,可以使用?URLSearchParams?對(duì)象來處理 URL 中的查詢字符串,這篇文章主要介紹了JavaScript?中URL查詢字符串(query?string)的序列與反序列化,需要的朋友可以參考下2023-01-01javascript之通用簡(jiǎn)單的table選項(xiàng)卡實(shí)現(xiàn)(二)
上篇中的選項(xiàng)卡存在這樣的問題:把邏輯封裝在table.js中,不夠靈活,也就是說如果某個(gè)選項(xiàng)卡是實(shí)現(xiàn)異步請(qǐng)求或者跳轉(zhuǎn),而非div的顯隱切換,那么就得修過table.js來達(dá)到目的,顯然不是我所需要的。2010-05-05一文教你實(shí)現(xiàn)JavaScript防抖優(yōu)化代碼
在我們前端編程中,假如我們要給后端發(fā)送請(qǐng)求,萬一手抖多點(diǎn)了幾次,多發(fā)送了幾遍怎么辦,那就得用防抖處理,下面小編就來教大家如何實(shí)現(xiàn)防抖吧2023-11-11ES6字符串模板,剩余參數(shù),默認(rèn)參數(shù)功能與用法示例
這篇文章主要介紹了ES6字符串模板,剩余參數(shù),默認(rèn)參數(shù)功能與用法,結(jié)合具體實(shí)例形式分析了ECMAScript6中的6字符串模板,剩余參數(shù),默認(rèn)參數(shù)的概念、作用、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-04-04JavaScript判斷當(dāng)前時(shí)間是在某個(gè)時(shí)間點(diǎn)之前/之后
本文主要介紹了JavaScript判斷當(dāng)前時(shí)間是在某個(gè)時(shí)間點(diǎn)之前/之后,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Bootstrap treeview實(shí)現(xiàn)動(dòng)態(tài)加載數(shù)據(jù)并添加快捷搜索功能
本文實(shí)現(xiàn)了運(yùn)用bootstrap treeview實(shí)現(xiàn)動(dòng)態(tài)加載數(shù)據(jù),并且添加快捷搜索功能,需要的朋友參考下2018-01-01js+html5實(shí)現(xiàn)的自由落體運(yùn)動(dòng)效果代碼
這篇文章主要介紹了js+html5實(shí)現(xiàn)的自由落體運(yùn)動(dòng)效果,通過JavaScript結(jié)合html5元素調(diào)用時(shí)間函數(shù)實(shí)時(shí)計(jì)算實(shí)現(xiàn)物體自由下落及動(dòng)能損耗的效果,需要的朋友可以參考下2016-01-01