国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

JS addEventListener()和attachEvent()方法實(shí)現(xiàn)注冊事件

瀏覽:159日期:2024-04-08 11:21:10

在 JavaScript 的 DOM 事件模型中,通過調(diào)用對象的 addEventListener() 方法注冊事件。用法如下:element.addEventListener(String type, Function listener, boolean useCaptrue);

參數(shù)說明如下:

type:注冊事件的類型名。事件類型與事件屬性不同,事件類型名沒有 on 前綴。例如,對于事件屬性 onclick 來說,所對應(yīng)的事件類型為 click。 listener:監(jiān)聽函數(shù),即事件處理函數(shù)。在指定類型的事件發(fā)生時(shí)將調(diào)用該函數(shù)。在調(diào)用這個(gè)函數(shù)時(shí),默認(rèn)傳遞給它的唯一參數(shù)是 event 對象。 useCaptrue:是一個(gè)布爾值。如果為 true,則指定的事件處理函數(shù)將在事件傳播的捕獲階段觸發(fā);如果為 false,則事件處理函數(shù)將在冒泡階段觸發(fā)。示例1

下面示例使用 addEventListener() 為所有按鈕注冊 click 事件。首先,調(diào)用 document 的 getElementsByTagName() 方法捕獲所有按鈕對象;然后,使用 for 語句遍歷按鈕集(btn),并使用 addEventListener() 方法分別為每一個(gè)按鈕注冊事件函數(shù),獲取當(dāng)前對象所顯示的文本。

<button onclick='btn1();'>按 鈕 1</button><button onclick='btn2(event);'>按 鈕 2</button><script> var btn = document.getElementsByTagName('button'); //捕獲所有按鈕 for(var i in btn){ //遍歷按鈕集合 btn[i].addEventListener('click', function(){ alert(this.innerHTML); }, true); //為每個(gè)按鈕對象注冊一個(gè)事件處理函數(shù),定義在捕獲階段進(jìn)行響應(yīng) }</script>

在瀏覽器中預(yù)覽,單擊不同的按鈕,則瀏覽器會(huì)自動(dòng)顯示按鈕的名稱。效果如圖所示:

JS addEventListener()和attachEvent()方法實(shí)現(xiàn)注冊事件

使用 addEventListener() 方法能夠?yàn)槎鄠€(gè)對象注冊相同的事件處理函數(shù),也可以為同一個(gè)對象注冊多個(gè)事件處理函數(shù)。為同一個(gè)對象注冊多個(gè)事件處理函數(shù)對于模塊化開發(fā)非常有用。

示例2

在下面示例中,為段落文本注冊兩個(gè)事件:mouseover 和 mouseout。當(dāng)光標(biāo)移到段落文本上面時(shí)會(huì)顯示為藍(lán)色背景,而當(dāng)光標(biāo)移出段落文本時(shí)會(huì)自動(dòng)顯示為紅色背景。這樣就不需要破壞文檔結(jié)構(gòu)為段落文本增加多個(gè)事件屬性。

<p id='p1'>為對象注冊多個(gè)事件</p><script> var p1 = document.getElementById('p1'); //捕獲段落元素的句柄 p1.addEventListener('mouseover', function () { this.style.background = ’blue’; }, true); //為段落元素注冊第1個(gè)事件處理函數(shù) p1.addEventListener('mouseout', function () { this.style.background = ’blue’; }, true); //為段落元素注冊第2個(gè)事件處理函數(shù)</script>

IE 事件模型使用 attachEvent() 方法注冊事件。用法如下:

element.attachEvent(etype, eventName)

參數(shù)列表如下:

etype:設(shè)置事件類型,如 onclick、onkeyup、onmousemove 等。 eventName:設(shè)置時(shí)間名稱,也就是事件處理函數(shù)。示例3

在下面示例中,為段落標(biāo)簽 <p> 注冊兩個(gè)事件:mouseover 和 mouseout,設(shè)計(jì)當(dāng)光標(biāo)經(jīng)過時(shí),段落文本背景色顯示為藍(lán)色,當(dāng)光標(biāo)移開之后,背景色顯示為紅色。

<p id='p1'>為對象注冊多個(gè)事件</p><script> var p1 = document.getElementById('p1'); //捕獲段落元素 p1.attachEvent('onmouseover', function () { this.style.background = ’blue’; }); //注冊mouseover事件 p1.attachEvent('onmouseout', function () { this.style.background = ’red’; }); //注冊mouseout事件</script>

使用 attachEvent() 注冊事件時(shí),其事件處理函數(shù)的調(diào)用對象不再是當(dāng)前事件對象本身,而是 window 對象,因此事件函數(shù)中的 this 就指向 window,而不是當(dāng)前對象,如果要獲取當(dāng)前對象,應(yīng)該使用 event 的 srcElement 屬性。

IE 事件模型中的 attachEvent() 方法第 1 個(gè)參數(shù)為事件類型名稱,需要加上 on 前綴,而使用 addEventListener() 方法時(shí),則不需要這個(gè) on 前綴,如 click。

到此這篇關(guān)于JS addEventListener()和attachEvent()方法實(shí)現(xiàn)注冊事件的文章就介紹到這了,更多相關(guān)JS addEventListener()和attachEvent()內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 龙游县| 宣城市| 观塘区| 陕西省| 遂溪县| 陆丰市| 高邮市| 肥城市| 辽宁省| 丹巴县| 平阳县| 长岭县| 平舆县| 江永县| 阳江市| 故城县| 和田县| 义马市| 肇州县| 新巴尔虎左旗| 宜宾市| 道孚县| 彰化县| 蓬莱市| 衢州市| 虞城县| 龙海市| 景泰县| 渝北区| 确山县| 广平县| 高淳县| 潜山县| 调兵山市| 吉林省| 梓潼县| 永泰县| 桂林市| 宁晋县| 鲁甸县| 晋宁县|