實(shí)例講解javascript注冊(cè)事件處理函數(shù)
事件是javascript的核心內(nèi)容,它的重要性這里就不多介紹了。觸發(fā)事件之后就需要有事件處理函數(shù)去處理,例如我們可以定義當(dāng)點(diǎn)擊一個(gè)按鈕之后,將一個(gè)div的背景設(shè)置為綠色,那么就先看一下如何實(shí)現(xiàn)此效果,代碼實(shí)例如下:
<html>
<head>
<meta charset=" utf-8">
<title>javascript如何注冊(cè)事件處理函數(shù)</title>
<style type="text/css">
#mydiv{
width:100px;
height:100px;
background-color:red;
}
</style>
<script type="text/javascript">
function changebg(){
var mydiv=document.getElementById("mydiv");
mydiv.style.backgroundColor="green";
}
</script>
</head>
<body>
<div id="mydiv"></div>
<button id="bt">點(diǎn)擊查看效果</button>
</body>
</html>
在以上代碼中,點(diǎn)擊按鈕就會(huì)將div的背景顏色設(shè)置為綠色,這是因?yàn)榇a為按鈕的onclick事件注冊(cè)了事件處理函數(shù),此函數(shù)可以將div的背景顏色設(shè)置為綠色。下面就結(jié)合實(shí)例簡(jiǎn)單介紹一下如何為對(duì)象的事件注冊(cè)事件處理函數(shù):
方式一:
直接在HTML代碼中注冊(cè)事件處理函數(shù),也就是直接通過(guò)HTML屬性來(lái)設(shè)置事件處理函數(shù),事件處理函數(shù)要執(zhí)行的代碼就是HTML的屬性值,在文章的開(kāi)頭就是使用的此方式。優(yōu)缺點(diǎn)如下:
- 1.容易理解,使用簡(jiǎn)單。
- 2.各主流瀏覽器都支持此方式。
- 3.與HTML代碼混合在一起,使頁(yè)面十分的繁雜,不符合表現(xiàn)與內(nèi)容分離的原則。
- 4.只能夠在同一個(gè)對(duì)象注冊(cè)一個(gè)相同類型的事件處理函數(shù)。
方式二:
事件句柄方式,所謂的事件句柄也就是事件處理函數(shù),指定對(duì)象的指定事件對(duì)應(yīng)一個(gè)事件句柄。使用此種方式注冊(cè)事件處理函數(shù),首先要獲得對(duì)象的引用,然后將事件句柄賦值給對(duì)象的對(duì)應(yīng)的事件處理函數(shù)屬性即可。其實(shí)方式一也是事件句柄方式的一種。
代碼實(shí)例如下:
<html>
<head>
<meta charset=" utf-8">
<title>javascript如何注冊(cè)事件處理函數(shù)</title>
<style type="text/css">
#mydiv{
width:100px;
height:100px;
background-color:red;
}
</style>
<script type="text/javascript">
window.onload=function(){
var mydiv=document.getElementById("mydiv");
var bt=document.getElementById("bt");
bt.onclick=function(){
mydiv.style.backgroundColor="green";
}
}
</script>
</head>
<body>
<div id="mydiv"></div>
<button id="bt">點(diǎn)擊查看效果</button>
</body>
</html>
以上代碼中,首先使用document.getElementById("bt")獲得按鈕對(duì)象的引用,然后將事件句柄(事件處理函數(shù))賦值給按鈕對(duì)象的onclick事件屬性,這樣當(dāng)點(diǎn)擊按鈕時(shí)就會(huì)觸發(fā)onclick事件,進(jìn)而執(zhí)行事件句柄中的代碼。優(yōu)缺點(diǎn)如下:
- 1.簡(jiǎn)單容易理解。
- 2.個(gè)瀏覽器都支持。
- 3.只能夠在同一個(gè)對(duì)象注冊(cè)一個(gè)相同類型的事件處理函數(shù)。
方式三:
是一種更為高級(jí)的事件注冊(cè)方式,那就是事件監(jiān)聽(tīng)器,這種方式解決了在指定對(duì)象只能注冊(cè)一個(gè)指定類型事件的處理函數(shù)問(wèn)題。不過(guò)存在一定的兼容性問(wèn)題,下面分別介紹一下:
1).IE瀏覽器:
在IE瀏覽器中可以使用attachEvent()和detachEvent()方法為指定對(duì)象注冊(cè)事件處理函數(shù)和刪除注冊(cè)的事件處理函數(shù)。
語(yǔ)法格式如下:
element.attachEvent("onevent",eventListener)
此函數(shù)具有兩個(gè)參數(shù),第一個(gè)參數(shù)是事件類型的名稱,第二個(gè)參數(shù)就是要注冊(cè)的事件處理函數(shù)。
代碼實(shí)例如下:
<html>
<head>
<meta charset=" utf-8">
<title>javascript如何注冊(cè)事件處理函數(shù)</title>
<style type="text/css">
#mydiv{
width:100px;
height:100px;
background-color:red;
}
</style>
<script type="text/javascript">
window.onload=function(){
var mydiv=document.getElementById("mydiv");
var bt=document.getElementById("bt");
bt.attachEvent("onclick",changebg);
function changebg(){
mydiv.style.backgroundColor="green";
}
}
</script>
</head>
<body>
<div id="mydiv"></div>
<button id="bt">點(diǎn)擊查看效果</button>
</body>
</html>
以上代碼使用attachEvent()函數(shù)為按鈕注冊(cè)onclick事件處理函數(shù),不過(guò)只能夠在IE瀏覽器中有效。使用detachEvent()函數(shù)可以解除原來(lái)注冊(cè)的事件處理函數(shù),語(yǔ)法格式如下:
element.detachEvent("onevent",eventListener)
格式和attachEvent()函數(shù)式一樣的。
特別說(shuō)明:第一個(gè)參數(shù)的必須帶有on,例如點(diǎn)擊事件就要寫(xiě)成"onclick"。
2).標(biāo)準(zhǔn)瀏覽器:
在標(biāo)準(zhǔn)瀏覽器中(包括IE9和IE9以上瀏覽器),要使用addEventListener()和removeEventListener()函數(shù)注冊(cè)和刪除注冊(cè)處理函數(shù)。
語(yǔ)法格式如下:
element.addEventListener('event', eventListener, useCapture);
此函數(shù)具有三個(gè)參數(shù),第一個(gè)參數(shù)是事件類型名稱,第二個(gè)參數(shù)就是要注冊(cè)的事件處理函數(shù),第三個(gè)函數(shù)規(guī)定此處理函數(shù)是在事件傳遞過(guò)程中的捕獲階段被調(diào)用還是冒泡階段被調(diào)用,在默認(rèn)條件下,此屬性值為false么也就是在冒泡階段調(diào)用事件處理函數(shù)。
特別說(shuō)明:第一個(gè)參數(shù)不能夠帶有on,例如點(diǎn)擊事件不能寫(xiě)為"onclick",而要寫(xiě)成"click"。
代碼實(shí)例如下:
<html>
<head>
<meta charset=" utf-8">
<title>javascript如何注冊(cè)事件處理函數(shù)</title>
<style type="text/css">
#mydiv{
width:100px;
height:100px;
background-color:red;
}
</style>
<script type="text/javascript">
window.onload=function(){
var mydiv=document.getElementById("mydiv");
var bt=document.getElementById("bt");
bt.addEventListener("click",changebg);
function changebg(){
mydiv.style.backgroundColor="green";
}
}
</script>
</head>
<body>
<div id="mydiv"></div>
<button id="bt">點(diǎn)擊查看效果</button>
</body>
</html>
以上代碼在IE9和IE9以上或者其他標(biāo)準(zhǔn)瀏覽器中,點(diǎn)擊按鈕可以將div的背景顏色設(shè)置為綠色。使用removeEventListener()函數(shù)可以解除原來(lái)注冊(cè)的事件處理函數(shù),語(yǔ)法格式如下:
element.removeEventListener('event', eventListener, useCapture);
格式和addEventListener()函數(shù)式一樣的。
跨瀏覽器注冊(cè)事件處理函數(shù):
只要加個(gè)判斷語(yǔ)句即可,代碼如下:
var EventUtil={
//注冊(cè)
addHandler: function(element, type, handler){
if (element.addEventListener){
element.addEventListener(type, handler, false);
} else if (element.attachEvent){
element.attachEvent("on" + type, handler);
} else {
element["on" + type] = handler;
}
},
//移除注冊(cè)
removeHandler: function(element, type, handler){
if (element.removeEventListener){
element.removeEventListener(type, handler, false);
} else if (element.detachEvent){
element.detachEvent("on" + type, handler);
} else {
element["on" + type] = null;
}
}
};
以上就是本文的詳細(xì)內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
- 為radio類型的INPUT添加客戶端腳本(附加實(shí)現(xiàn)JS來(lái)禁用onClick事件思路代碼)
- 怎么通過(guò)onclick事件獲取js函數(shù)返回值(代碼少)
- javascript 動(dòng)態(tài)改變onclick事件觸發(fā)函數(shù)代碼
- 詳解js的事件處理函數(shù)和動(dòng)態(tài)創(chuàng)建html標(biāo)記方法
- JavaScript利用發(fā)布訂閱模式編寫(xiě)事件監(jiān)聽(tīng)函數(shù)
- ES6中javascript實(shí)現(xiàn)函數(shù)綁定及類的事件綁定功能詳解
- JavaScript觸發(fā)onScroll事件的函數(shù)節(jié)流詳解
- 深入理解Node.js 事件循環(huán)和回調(diào)函數(shù)
- js動(dòng)態(tài)添加input按鈕并給按鈕增加onclick的函數(shù)事件(帶參數(shù))完整實(shí)例
相關(guān)文章
javascript使用Blob對(duì)象實(shí)現(xiàn)的下載文件操作示例
這篇文章主要介紹了javascript使用Blob對(duì)象實(shí)現(xiàn)的下載文件操作,結(jié)合實(shí)例形式分析了javascript使用Blob對(duì)象下載文件相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下2020-04-04
jQuery Mobile動(dòng)態(tài)刷新頁(yè)面樣式的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇jQuery Mobile動(dòng)態(tài)刷新頁(yè)面樣式的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
javascript計(jì)時(shí)器編寫(xiě)過(guò)程與實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了javascript計(jì)時(shí)器編寫(xiě)過(guò)程與實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-02-02
微信小程序?qū)崿F(xiàn)簡(jiǎn)單九宮格抽獎(jiǎng)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)簡(jiǎn)單九宮格抽獎(jiǎng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
詳解用函數(shù)式編程對(duì)JavaScript進(jìn)行斷舍離
本篇文章主要介紹了用函數(shù)式編程對(duì)JavaScript進(jìn)行斷舍離,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09

