js中基本事件的總結(jié)(onclick、onblur、onchange等)
js中的基本事件總結(jié):
特定的場景下發(fā)生的一個動作:事件;事件=函數(shù)(),事件發(fā)生會觸發(fā)函數(shù)執(zhí)行。\
一、什么是事件?
事件是用戶在網(wǎng)頁上的交互行為(如點擊、滾動、按鍵)或瀏覽器自動觸發(fā)的行為(如頁面加載完成)。JavaScript 通過 事件監(jiān)聽 來響應(yīng)這些行為。
二、常見事件類型
屬性 | 當以下情況發(fā)生時,出現(xiàn)此事件 | FF | N | IE |
onabort | 圖像加載被中斷 | 1 | 3 | 4 |
onblur | 元素失去焦點 | 1 | 2 | 3 |
onchange | 用戶改變域的內(nèi)容 | 1 | 2 | 3 |
onclick | 鼠標點擊某個對象 | 1 | 2 | 3 |
ondblclick | 鼠標雙擊某個對象 | 1 | 4 | 4 |
onerror | 當加載文檔或圖像時發(fā)生某個錯誤 | 1 | 3 | 4 |
onfocus | 元素獲得焦點 | 1 | 2 | 3 |
onkeydown | 某個鍵盤的鍵被按下 | 1 | 4 | 3 |
onkeypress | 某個鍵盤的鍵被按下或按住 | 1 | 4 | 3 |
onkeyup | 某個鍵盤的鍵被松開 | 1 | 4 | 3 |
onload | 某個頁面或圖像被完成加載 | 1 | 2 | 3 |
onmousedown | 某個鼠標按鍵被按下 | 1 | 4 | 4 |
onmousemove | 鼠標被移動 | 1 | 6 | 3 |
onmouseout | 鼠標從某元素移開 | 1 | 4 | 4 |
onmouseover | 鼠標被移到某元素之上 | 1 | 2 | 3 |
onmouseup | 某個鼠標按鍵被松開 | 1 | 4 | 4 |
onreset | 重置按鈕被點擊 | 1 | 3 | 4 |
onresize | 窗口或框架被調(diào)整尺寸 | 1 | 4 | 4 |
onselect | 文本被選定 | 1 | 2 | 3 |
onsubmit | 提交按鈕被點擊 | 1 | 2 | 3 |
onunload | 用戶退出頁面 | 1 | 2 | 3 |
三、
三、事件處理的三種方式
1. HTML 屬性方式(不推薦)
直接在 HTML 元素中定義事件:
<button onclick="alert('Clicked!')">點擊我</button>運行 HTML
2. DOM 屬性方式
通過 JavaScript 為 DOM 元素屬性賦值:
const btn = document.querySelector('button');
btn.onclick = function() {
console.log('按鈕被點擊');
};
// 缺點:無法綁定多個相同事件3. addEventListener(推薦)
btn.addEventListener('click', function(event) {
console.log('第一次點擊');
});
btn.addEventListener('click', () => {
console.log('第二次點擊'); // 可以綁定多個處理函數(shù)
});優(yōu)點:支持多個監(jiān)聽器、可控制事件階段(捕獲/冒泡)
四、事件對象 (event)
事件處理函數(shù)會自動接收一個 event 對象,包含事件相關(guān)信息:
element.addEventListener('click', function(event) {
console.log(event.target); // 觸發(fā)事件的元素
console.log(event.clientX, event.clientY); // 鼠標坐標
event.preventDefault(); // 阻止默認行為(如表單提交)
event.stopPropagation(); // 阻止事件冒泡
});五、事件冒泡與捕獲
- 冒泡 (Bubbling):事件從目標元素向上傳遞到根元素(默認階段)。
- 捕獲 (Capturing):事件從根元素向下傳遞到目標元素。
// 第三個參數(shù)為 true 表示捕獲階段,false 表示冒泡階段(默認)
parent.addEventListener('click', () => {
console.log('父元素捕獲階段');
}, true);
child.addEventListener('click', () => {
console.log('子元素冒泡階段');
});六、表單事件示例
const form = document.querySelector('form');
form.addEventListener('submit', function(event) {
event.preventDefault(); // 阻止表單默認提交
const input = document.querySelector('#username');
console.log('輸入的值:', input.value);
});七、事件委托
利用事件冒泡,將事件監(jiān)聽綁定到父元素,處理動態(tài)子元素:
<ul id="list"> <li>Item 1</li> <li>Item 2</li> </ul>
運行 HTML
document.getElementById('list').addEventListener('click', function(event) {
if (event.target.tagName === 'LI') {
console.log('點擊了:', event.target.textContent);
}
});
// 動態(tài)添加的 li 元素也會自動擁有事件響應(yīng)八、其他要點
解綁事件:使用 removeEventListener
const handler = () => { console.log('Click') };
btn.addEventListener('click', handler);
btn.removeEventListener('click', handler);匿名函數(shù)問題:匿名函數(shù)無法通過 removeEventListener 解綁。
被動事件監(jiān)聽器:優(yōu)化滾動性能
window.addEventListener('scroll', function(e) {
// 邏輯代碼
}, { passive: true });通過掌握這些基礎(chǔ)知識,你可以實現(xiàn)豐富的交互功能!建議通過實際項目練習(xí)加深理解。
相關(guān)文章
WEB頁子窗口(showModalDialog和showModelessDialog)使用說明
WEB頁子窗口(showModalDialog和showModelessDialog)使用說明,大家可以看下。2009-10-10
JavaScript Undefined,Null類型和NaN值區(qū)別
js中一些空值問題,未定義等一系列的區(qū)別說明2008-10-10
javaScript中兩個等于號和三個等于號之間的區(qū)別介紹
這篇文章主要介紹了javaScript中兩個等于號和三個等于號之間的區(qū)別,還不知道的朋友可以學(xué)習(xí)下2014-06-06
JS數(shù)組遍歷中for,for in,for of,map,forEach各自的使用方法與優(yōu)缺點
這篇文章主要介紹了JS數(shù)組遍歷中for,for in,for of,map,forEach各自的使用方法與優(yōu)缺點,需要的朋友可以參考下2022-01-01
有關(guān)于JS輔助函數(shù)inherit()的問題
本篇為大家介紹有關(guān)于JS輔助函數(shù)inherit()的一些問題。2013-04-04

