js中基本事件的總結(jié)(onclick、onblur、onchange等)
js中的基本事件總結(jié):
特定的場景下發(fā)生的一個動作:事件;事件=函數(shù)(),事件發(fā)生會觸發(fā)函數(shù)執(zhí)行。\
一、什么是事件?
事件是用戶在網(wǎng)頁上的交互行為(如點擊、滾動、按鍵)或瀏覽器自動觸發(fā)的行為(如頁面加載完成)。JavaScript 通過 事件監(jiān)聽 來響應這些行為。
二、常見事件類型
屬性 | 當以下情況發(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
對象,包含事件相關信息:
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 元素也會自動擁有事件響應
八、其他要點
解綁事件:使用 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 });
通過掌握這些基礎知識,你可以實現(xiàn)豐富的交互功能!建議通過實際項目練習加深理解。
相關文章
WEB頁子窗口(showModalDialog和showModelessDialog)使用說明
WEB頁子窗口(showModalDialog和showModelessDialog)使用說明,大家可以看下。2009-10-10JavaScript Undefined,Null類型和NaN值區(qū)別
js中一些空值問題,未定義等一系列的區(qū)別說明2008-10-10javaScript中兩個等于號和三個等于號之間的區(qū)別介紹
這篇文章主要介紹了javaScript中兩個等于號和三個等于號之間的區(qū)別,還不知道的朋友可以學習下2014-06-06JS數(shù)組遍歷中for,for in,for of,map,forEach各自的使用方法與優(yōu)缺點
這篇文章主要介紹了JS數(shù)組遍歷中for,for in,for of,map,forEach各自的使用方法與優(yōu)缺點,需要的朋友可以參考下2022-01-01