時間:2022-05-29 15:03:01 | 來源:網(wǎng)絡(luò)營銷
時間:2022-05-29 15:03:01 來源:網(wǎng)絡(luò)營銷
最近這段時間因為每天要修改網(wǎng)站,為網(wǎng)站做特效,所以看了很多的js接觸事件,自己只會使用一小部分,有時用的時候也比較混亂,現(xiàn)在系統(tǒng)的整理了一下,首先跟大家在億企邦上跟大家分享的是JavaScript事件處理程序的3種方式:<input id="btn1" value="按鈕" type="button" onclick="showmsg();">從上面的代碼中我們可以看出,事件處理是直接嵌套在元素里頭的,這樣有一個毛?。壕褪莌tml代碼和js的耦合性太強,如果哪一天我想要改變js中showmsg,那么我不但要再js中修改,我還需要到html中修改,一兩處的修改我們能接受,但是當你的代碼達到萬行級別的時候,修改起來就需要勞民傷財了,所以,這個方式我們并不推薦使用。
<script>
function showmsg(){
alert("HTML添加事件處理");
}
</script>
<input id="btn2" value="按鈕" type="button">從上面的代碼中,我們能看出,相對于HTML事件處理程序,DOM0級事件,html代碼和js代碼的耦合性已經(jīng)大大降低。但是,聰明的程序員還是不太滿足,期望尋找更簡便的處理方式,下面億企邦就來說說第三種處理方法。
<script>
var btn2= document.getElementById("btn2");
btn2.onclick=function(){
alert("DOM0級添加事件處理");
}
btn.onclick=null;//如果想要刪除btn2的點擊事件,將其置為null即可
</script>
<input id="btn3" value="按鈕" type="button">這里我們可以看到,在添加刪除事件處理的時候,最后一種方法更直接,也最簡便。但是億企邦提醒大家需要注意的是,在刪除事件處理的時候,傳入的參數(shù)一定要跟之前的參數(shù)一致,否則刪除會失效!
<script>
var btn3=document.getElementById("btn3");
btn3.addEventListener("click",showmsg,false);//這里我們把最后一個值置為false,即不在捕獲階段處理,一般來說冒泡處理在各瀏覽器中兼容性較好
function showmsg(){
alert("DOM2級添加事件處理程序");
}
btn3.removeEventListener("click",showmsg,false);//如果想要把這個事件刪除,只需要傳入同樣的參數(shù)即可
</script>
<!doctype html>運行上面的代碼,點擊子元素的時候,我們會發(fā)現(xiàn),執(zhí)行的先后順序是:父節(jié)點捕獲--子節(jié)點捕獲--子節(jié)點冒泡--父節(jié)點冒泡。從這個例子中,大家也就明白了,另外,DOM2級事件規(guī)定事件包括三個階段:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#p{width:400px;height:200px;border:1px solid black;}
#c{width:200px;height:100px;border:1px solid red;}
</style>
</head>
<body>
<div id="p">
i am www.mahaixiang.cn
<div id="c">i like www.mahaixiang.cn</div>
</div>
<script>
var p = document.getElementById('p');
var c = document.getElementById('c');
c.addEventListener('click', function () {
alert('子節(jié)點捕獲')
}, true);
c.addEventListener('click', function () {
alert('子節(jié)點冒泡')
}, false);
p.addEventListener('click', function () {
alert('父節(jié)點捕獲')
}, true);
p.addEventListener('click', function () {
alert('父節(jié)點冒泡')
}, false);
</script>
</body>
</html>
<!doctype html>上面的代碼在ie和其他瀏覽器中都能正常處理事件,以后如果需要使用兼容性的操作,都可以直接調(diào)用這段代碼。
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<input id="btn" type="button" value="按鈕">
<script>
var eventHandler={
addHandler:function(element,type,func){
if(element.addEventListener){
element.addEventListener(type,func,false);
}else if(element.detachEvent){
element.attachEvent('on'+type,func);
}else{
element['on'+type]=func;
}
},
removerHandler:function(element,type,func){
if(element.removeEventListener){
element.removeEventListener(type,func,false);
}else if(element.detachEvent){
element.detachEvent('on'+type,func);
}else{
element['on'+type]=null;
}
}
}
function showmsg(){
alert("hello");
}
var btn=document.getElementById("btn");
eventHandler.addHandler(btn,"click",showmsg);
//eventHandler.removerHandler(btn,"click",showmsg);//去掉事件處理
</script>
</body>
</html>
關(guān)鍵詞:方式,程序,處理
微信公眾號
版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。