js中基本事件的總結(jié)(onclick、onblur、onchange等)
js中的基本事件總結(jié):
特定的場(chǎng)景下發(fā)生的一個(gè)動(dòng)作:事件;事件=函數(shù)(),事件發(fā)生會(huì)觸發(fā)函數(shù)執(zhí)行。\
一、什么是事件?
事件是用戶在網(wǎng)頁(yè)上的交互行為(如點(diǎn)擊、滾動(dòng)、按鍵)或?yàn)g覽器自動(dòng)觸發(fā)的行為(如頁(yè)面加載完成)。JavaScript 通過(guò) 事件監(jiān)聽(tīng) 來(lái)響應(yīng)這些行為。
二、常見(jiàn)事件類型
屬性 | 當(dāng)以下情況發(fā)生時(shí),出現(xiàn)此事件 | FF | N | IE |
onabort | 圖像加載被中斷 | 1 | 3 | 4 |
onblur | 元素失去焦點(diǎn) | 1 | 2 | 3 |
onchange | 用戶改變域的內(nèi)容 | 1 | 2 | 3 |
onclick | 鼠標(biāo)點(diǎn)擊某個(gè)對(duì)象 | 1 | 2 | 3 |
ondblclick | 鼠標(biāo)雙擊某個(gè)對(duì)象 | 1 | 4 | 4 |
onerror | 當(dāng)加載文檔或圖像時(shí)發(fā)生某個(gè)錯(cuò)誤 | 1 | 3 | 4 |
onfocus | 元素獲得焦點(diǎn) | 1 | 2 | 3 |
onkeydown | 某個(gè)鍵盤(pán)的鍵被按下 | 1 | 4 | 3 |
onkeypress | 某個(gè)鍵盤(pán)的鍵被按下或按住 | 1 | 4 | 3 |
onkeyup | 某個(gè)鍵盤(pán)的鍵被松開(kāi) | 1 | 4 | 3 |
onload | 某個(gè)頁(yè)面或圖像被完成加載 | 1 | 2 | 3 |
onmousedown | 某個(gè)鼠標(biāo)按鍵被按下 | 1 | 4 | 4 |
onmousemove | 鼠標(biāo)被移動(dòng) | 1 | 6 | 3 |
onmouseout | 鼠標(biāo)從某元素移開(kāi) | 1 | 4 | 4 |
onmouseover | 鼠標(biāo)被移到某元素之上 | 1 | 2 | 3 |
onmouseup | 某個(gè)鼠標(biāo)按鍵被松開(kāi) | 1 | 4 | 4 |
onreset | 重置按鈕被點(diǎn)擊 | 1 | 3 | 4 |
onresize | 窗口或框架被調(diào)整尺寸 | 1 | 4 | 4 |
onselect | 文本被選定 | 1 | 2 | 3 |
onsubmit | 提交按鈕被點(diǎn)擊 | 1 | 2 | 3 |
onunload | 用戶退出頁(yè)面 | 1 | 2 | 3 |
三、
三、事件處理的三種方式
1. HTML 屬性方式(不推薦)
直接在 HTML 元素中定義事件:
<button onclick="alert('Clicked!')">點(diǎn)擊我</button>運(yùn)行 HTML
2. DOM 屬性方式
通過(guò) JavaScript 為 DOM 元素屬性賦值:
const btn = document.querySelector('button');
btn.onclick = function() {
console.log('按鈕被點(diǎn)擊');
};
// 缺點(diǎn):無(wú)法綁定多個(gè)相同事件3. addEventListener(推薦)
btn.addEventListener('click', function(event) {
console.log('第一次點(diǎn)擊');
});
btn.addEventListener('click', () => {
console.log('第二次點(diǎn)擊'); // 可以綁定多個(gè)處理函數(shù)
});優(yōu)點(diǎn):支持多個(gè)監(jiān)聽(tīng)器、可控制事件階段(捕獲/冒泡)
四、事件對(duì)象 (event)
事件處理函數(shù)會(huì)自動(dòng)接收一個(gè) event 對(duì)象,包含事件相關(guān)信息:
element.addEventListener('click', function(event) {
console.log(event.target); // 觸發(fā)事件的元素
console.log(event.clientX, event.clientY); // 鼠標(biāo)坐標(biāo)
event.preventDefault(); // 阻止默認(rèn)行為(如表單提交)
event.stopPropagation(); // 阻止事件冒泡
});五、事件冒泡與捕獲
- 冒泡 (Bubbling):事件從目標(biāo)元素向上傳遞到根元素(默認(rèn)階段)。
- 捕獲 (Capturing):事件從根元素向下傳遞到目標(biāo)元素。
// 第三個(gè)參數(shù)為 true 表示捕獲階段,false 表示冒泡階段(默認(rèn))
parent.addEventListener('click', () => {
console.log('父元素捕獲階段');
}, true);
child.addEventListener('click', () => {
console.log('子元素冒泡階段');
});六、表單事件示例
const form = document.querySelector('form');
form.addEventListener('submit', function(event) {
event.preventDefault(); // 阻止表單默認(rèn)提交
const input = document.querySelector('#username');
console.log('輸入的值:', input.value);
});七、事件委托
利用事件冒泡,將事件監(jiān)聽(tīng)綁定到父元素,處理動(dòng)態(tài)子元素:
<ul id="list"> <li>Item 1</li> <li>Item 2</li> </ul>
運(yùn)行 HTML
document.getElementById('list').addEventListener('click', function(event) {
if (event.target.tagName === 'LI') {
console.log('點(diǎn)擊了:', event.target.textContent);
}
});
// 動(dòng)態(tài)添加的 li 元素也會(huì)自動(dòng)擁有事件響應(yīng)八、其他要點(diǎn)
解綁事件:使用 removeEventListener
const handler = () => { console.log('Click') };
btn.addEventListener('click', handler);
btn.removeEventListener('click', handler);匿名函數(shù)問(wèn)題:匿名函數(shù)無(wú)法通過(guò) removeEventListener 解綁。
被動(dòng)事件監(jiān)聽(tīng)器:優(yōu)化滾動(dòng)性能
window.addEventListener('scroll', function(e) {
// 邏輯代碼
}, { passive: true });通過(guò)掌握這些基礎(chǔ)知識(shí),你可以實(shí)現(xiàn)豐富的交互功能!建議通過(guò)實(shí)際項(xiàng)目練習(xí)加深理解。
相關(guān)文章
javascript與java有什么關(guān)系(區(qū)別與相似)
Java和JavaScript的編程語(yǔ)言,名稱聽(tīng)起來(lái)相似,但卻是兩個(gè)公司開(kāi)發(fā)的不同的產(chǎn)品。Java是SUN公司推出的新一代面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,特別適合于Internet應(yīng)用程序開(kāi)發(fā);而JavaScript是Netscape公司的產(chǎn)品,可以嵌入Web頁(yè)面中的基于對(duì)象和事件驅(qū)動(dòng)的解釋性語(yǔ)言。2023-02-02
javascript 數(shù)組學(xué)習(xí)資料收集
由于javascript 數(shù)組應(yīng)用比較廣泛,使用的朋友越來(lái)越多,腳本之家特為大家整理了一些js 數(shù)據(jù)方面的學(xué)習(xí)資料,大家看完了,基本上應(yīng)該對(duì)數(shù)組有個(gè)理解了。2010-04-04
Javascript入門(mén)學(xué)習(xí)第九篇 Javascript DOM 總結(jié)
作為一個(gè)js-DOM開(kāi)發(fā)者,你必須知道的一些DOM方法:2008-07-07
Javascript基礎(chǔ)教程之函數(shù)對(duì)象和屬性
這篇文章主要介紹了Javascript基礎(chǔ)教程之函數(shù)對(duì)象和屬性,需要的朋友可以參考下2015-01-01
javascript中call apply 與 bind方法詳解
網(wǎng)上文章雖多,大多復(fù)制粘貼,且晦澀難懂,我希望能夠通過(guò)這篇文章,能夠清晰的提升對(duì)apply、call、bind的認(rèn)識(shí),并通過(guò)一些具體的示例給大家展示下這3個(gè)方法的用法,希望大家能夠喜歡。2016-03-03
簡(jiǎn)單的ajax連接庫(kù)分享(不用jquery的ajax)
自己寫(xiě)了一個(gè)簡(jiǎn)單的ajax連接庫(kù),沒(méi)有使用jquery的ajax,這個(gè)代碼要比jquery輕量,大家參考使用吧,2014-01-01

