最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript 注冊事件代碼

 更新時(shí)間:2011年01月27日 13:42:08   作者:  
最基本的寫法 ,然后實(shí)現(xiàn)Js和HTML的分離,然后又實(shí)現(xiàn)對同一個(gè)元素注冊多個(gè)事件,期間,我們發(fā)現(xiàn)注冊事件的兼容性問題。最后我們對注冊事件的方法進(jìn)行封裝,方便以后使用。
首先是最常規(guī)的方法:
程序代碼
復(fù)制代碼 代碼如下:

<p id="para" title="cssrain demo!" onclick="test()" >test</p>
<script>
function test(){
alert("test");
}
</script>

當(dāng)某一天,我們知道JavaScript要跟HTML結(jié)構(gòu)實(shí)現(xiàn)分離后,就會改了一種寫法:
程序代碼
復(fù)制代碼 代碼如下:

<p id="para" title="cssrain demo!">test</p>
<script>
function test(){
alert("test");
}
window.onload = function(){
document.getElementById("para").onclick = test;
}
</script>

當(dāng)我們工作越來越久后,有時(shí)候我們需要對某個(gè)元素綁定多個(gè)相同的事件類型:
程序代碼
復(fù)制代碼 代碼如下:

<p id="para" title="cssrain demo!">test</p>
<script>
function test(){
alert("test");
}
function pig(){
alert("pig");
}
window.onload = function(){
document.getElementById("para").onclick = test;
document.getElementById("para").onclick = pig;
}
</script>

如果按照上面的寫法,我們只能輸出第二個(gè)函數(shù)。
這時(shí)候我們需要用到attachEvent方法:
程序代碼
復(fù)制代碼 代碼如下:

<p id="para" title="cssrain demo!">test</p>
<script>
function test(){
alert("test");
}
function pig(){
alert("pig");
}
window.onload = function(){
document.getElementById("para").attachEvent("onclick",test);
document.getElementById("para").attachEvent("onclick",pig);
}
</script>

在一段時(shí)間內(nèi),你并沒發(fā)現(xiàn)這段代碼有任何錯(cuò)誤。
某一天,一個(gè)名叫firefox的瀏覽器 闖入你的視野,當(dāng)我們把這段代碼放到firefox中執(zhí)行后,
發(fā)現(xiàn)并不能正常運(yùn)行。 問題就這樣,越來越多,然而作為一名JS程序員,這些都是必須面對的。
為了解決這段代碼的平臺兼容性問題,我翻翻手冊,知道了firefox跟ie的區(qū)別:
firefox中注冊事件使用:addEventListener方法,同時(shí)為了兼容ie,我們必須用到if ... else...
程序代碼
復(fù)制代碼 代碼如下:

<p id="para" title="cssrain demo!">test</p>
<script>
function test(){
alert("test");
}
function pig(){
alert("pig");
}
window.onload = function(){
var element = document.getElementById("para");
if(element.addEventListener){ // firefox , w3c
element.addEventListener("click",test,false);
element.addEventListener("click",pig,false);
} else { // ie
element.attachEvent("onclick",test);
element.attachEvent("onclick",pig);
}
}
</script>

此時(shí),代碼就可以在多個(gè)平臺上工作了。
但隨著水平的進(jìn)步,你不滿足每次都去判斷,你想把這個(gè)判斷封裝起來,以后可以直接調(diào)用:
程序代碼
復(fù)制代碼 代碼如下:

<p id="para" title="cssrain demo!">test</p>
<script>
function test(){
alert("test");
}
function pig(){
alert("pig");
}
function addListener(element,e,fn){
if(element.addEventListener){
element.addEventListener(e,fn,false);
} else {
element.attachEvent("on" + e,fn);
}
}
window.onload = function(){
var element = document.getElementById("para");
addListener(element,"click",test);
addListener(element,"click",pig);
}
</script>

至此,作為一個(gè)程序員的工作就完了。
中間我們從一個(gè)最傳統(tǒng),最基本的寫法 , 然后實(shí)現(xiàn)Js和HTML的分離,然后又實(shí)現(xiàn)對同一個(gè)元素注冊多個(gè)事件,期間,我們發(fā)現(xiàn)注冊事件的兼容性問題。最后我們對注冊事件的方法進(jìn)行封裝,方便以后使用。

相關(guān)文章

  • 判斷l(xiāng)i是否有樣式的js代碼

    判斷l(xiāng)i是否有樣式的js代碼

    下面的代碼注意實(shí)現(xiàn)先判斷l(xiāng)i是否有樣式,如果沒有,就添加一個(gè)樣式,原理呢,就是批量檢測li的className屬性
    2008-09-09
  • 淺談javascript中執(zhí)行環(huán)境(作用域)與作用域鏈

    淺談javascript中執(zhí)行環(huán)境(作用域)與作用域鏈

    本文主要介紹了javascript中執(zhí)行環(huán)境(作用域)與作用域鏈,并在文章結(jié)尾處做出了總結(jié),感興趣的朋友可以看下
    2016-12-12
  • javascript 選擇文件夾對話框(web)

    javascript 選擇文件夾對話框(web)

    web程序開發(fā)中經(jīng)常會遇見選擇文件夾的時(shí)候,這對于web程序員是一件麻煩的事情,由于本地安全限制JS不能訪問本地文件,所以選擇文件夾一般都避而不談,筆者在寫一個(gè)程序的時(shí)候也遇見了同樣的問題,開始嘗試使用JS來遍歷文件,結(jié)果都沒有成功
    2009-07-07
  • 微信小程序代碼上傳、審核發(fā)布小程序

    微信小程序代碼上傳、審核發(fā)布小程序

    這篇文章主要為大家詳細(xì)介紹了微信小程序代碼上傳、審核發(fā)布小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • js實(shí)現(xiàn)微信/QQ直接跳轉(zhuǎn)到支付寶APP打開口令領(lǐng)紅包功能

    js實(shí)現(xiàn)微信/QQ直接跳轉(zhuǎn)到支付寶APP打開口令領(lǐng)紅包功能

    最近支付寶的領(lǐng)紅包可真是刷爆了各個(gè)微信群啊,滿群都是支付寶口令,可是這樣推廣很麻煩,下面小編給大家?guī)砹薺s實(shí)現(xiàn)微信/QQ直接跳轉(zhuǎn)到支付寶APP打開口令領(lǐng)紅包功能,需要的朋友參考下
    2018-01-01
  • 淺析JS原始值和引用值問題

    淺析JS原始值和引用值問題

    如果一個(gè)值是引用類型的,那么它的存儲空間將從堆中分配。由于引用值的大小會改變,所以不能把它放在棧中,否則會降低變量查尋的速度。相反,放在變量的??臻g中的值是該對象存儲在堆中的地址,這篇文章主要介紹了JS原始值和引用值 ,需要的朋友可以參考下
    2021-12-12
  • javascript拖曳互換div的位置實(shí)現(xiàn)示例

    javascript拖曳互換div的位置實(shí)現(xiàn)示例

    一個(gè)div拖動互換位置的demo,還有很大優(yōu)化的空間,利用dom元素的dragstart/ondragover/ondrop事件完成,感興趣的可以了解一下
    2021-06-06
  • 基于Layui自定義模塊的使用方法詳解

    基于Layui自定義模塊的使用方法詳解

    今天小編就為大家分享一篇基于Layui自定義模塊的使用方法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 基于javascript原生判斷DOM是否加載完畢

    基于javascript原生判斷DOM是否加載完畢

    這篇文章主要介紹了基于javascript原生判斷DOM是否加載完畢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • js實(shí)現(xiàn)人才網(wǎng)站職位選擇功能的方法

    js實(shí)現(xiàn)人才網(wǎng)站職位選擇功能的方法

    這篇文章主要介紹了js實(shí)現(xiàn)人才網(wǎng)站職位選擇功能的方法,涉及javascript動態(tài)操作頁面元素結(jié)點(diǎn)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08

最新評論

朝阳市| 石渠县| 沙坪坝区| 靖西县| 诸暨市| 兰考县| 马尔康县| 平乡县| 柏乡县| 新绛县| 宝山区| 铜陵市| 舒城县| 永康市| 扎兰屯市| 临邑县| 望奎县| 和平区| 福贡县| 常宁市| 仙居县| 潼关县| 宜城市| 肃南| 方正县| 潼关县| 永康市| 华阴市| 蓬莱市| 唐海县| 兖州市| 青龙| 陇川县| 广灵县| 砀山县| 绥阳县| 图木舒克市| 雅江县| 凤山市| 密云县| 镇雄县|