JavaScript事件處理程序:讓網(wǎng)頁(yè)對(duì)用戶(hù)的操作做出響應(yīng)
JavaScript中的事件是用戶(hù)或?yàn)g覽器自身所執(zhí)行的某種動(dòng)作或發(fā)生的某種情況,如單擊、雙擊、鼠標(biāo)移動(dòng)、按下鍵盤(pán)按鍵等。我們可以編寫(xiě)JavaScript代碼來(lái)響應(yīng)這些事件。在本文中,我們將一起來(lái)學(xué)習(xí)JavaScript事件處理程序。
HTML元素上的事件處理程序可以是該元素在頁(yè)面加載時(shí)將要執(zhí)行的函數(shù),或在用戶(hù)與該元素交互時(shí)執(zhí)行的函數(shù)。
// HTML中的事件處理程序 <button onclick="alert('hello world')">Click me</button>
通過(guò)給HTML元素指定onXXX屬性來(lái)指定事件處理程序,在該屬性中編寫(xiě)JavaScript代碼即可。如上面例子中,當(dāng)用戶(hù)點(diǎn)擊按鈕時(shí),瀏覽器會(huì)執(zhí)行alert('hello world')這段代碼。
但是,這種方式還是不夠優(yōu)雅,我們可以用JavaScript中的addEventListener方法來(lái)指定事件處理程序,例如:
// JavaScript中的事件處理程序 var button = document.querySelector('button'); button.addEventListener('click', function(){ alert('hello world'); });
這種方式更加靈活,可以在開(kāi)發(fā)中更好地分離HTML、JavaScript和CSS,使代碼更加清晰。
事件處理程序還可以通過(guò)事件冒泡和事件捕獲來(lái)處理。當(dāng)一個(gè)事件發(fā)生在一個(gè)元素上時(shí),事件會(huì)向上冒泡到父元素,直到到達(dá)HTML文檔的根節(jié)點(diǎn)。事件捕獲與事件冒泡相反,它從根節(jié)點(diǎn)開(kāi)始,然后向下移動(dòng),直到到達(dá)觸發(fā)事件的元素。
// 事件冒泡和事件捕獲 var body = document.querySelector('body'); body.addEventListener('click', function(){ alert('body'); }, true); var button = document.querySelector('button'); button.addEventListener('click', function(){ alert('button'); }, true);
在上面的例子中,當(dāng)我們點(diǎn)擊button元素時(shí),首先會(huì)觸發(fā)body元素上的事件處理程序,然后才是button元素上的。這是因?yàn)槲覀冊(cè)赼ddEventListener方法的第三個(gè)參數(shù)中指定為true,表示使用事件捕獲處理程序。
除了可以通過(guò)addEventListener方法來(lái)指定事件處理程序外,我們還可以通過(guò)removeEventListener方法來(lái)刪除這些事件處理程序。
// 刪除事件處理程序 var button = document.querySelector('button'); var alertMessage = function(){ alert('hello world'); }; button.addEventListener('click', alertMessage); button.removeEventListener('click', alertMessage);
在上面的例子中,我們首先定義了alertMessage函數(shù),然后使用addEventListener方法將其指定為button元素的click事件處理程序,最后通過(guò)removeEventListener方法刪除了該處理程序。
最后,我們需要注意的是,如果我們給元素設(shè)置了多個(gè)事件處理程序,那么它們將按照添加時(shí)的順序執(zhí)行。
以上就是關(guān)于JavaScript事件處理程序的簡(jiǎn)單介紹,希望讀者可以通過(guò)這篇文章更好地理解事件處理程序的使用和作用。