目录
一、什么是事件?二、常见事件类型三、事件处理的三种方式1. HTML 属性方式(不推荐)2. DOM 属性方式3.addEventListener(推荐)四、事件对象 (event)五、事件冒泡与捕获六、表单事件示例七、事件委托八、其他要点js中的基本事件总结:
特定的场景下发生的一个动作:事件;事件=函数(),事件发生会触发函数执行。\
一、什么是事件?
事件是用户在网页上的交互行为(如点击、滚动、按键)或浏览器自动触发的行为(如页面加载完成)。JavaScript 通过事件监听来响应这些行为。
二、常见事件类型
属性
当以下情况发生时,出现此事件
FF
N
IE
onabort
图像加载被中断
1
3
4
onblur
元素失去焦点
1
2
3
onchange
用户改变域的内容
1
2
3
onclick
鼠标点击某个对象
1
2
3
ondblclick
鼠标双击某个对象
1
4
4
onerror
当加载文档或图像时发生某个错误
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
窗口或框架被调整尺寸
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('第二次点击'); // 可以绑定多个处理函数});
优点:支持多个监听器、可控制事件阶段(捕获/冒泡)
四、事件对象 (event)
事件处理函数会自动接收一个event
对象,包含事件相关信息:
element.addEventListener('click', function(event) { console.log(event.target); // 触发事件的元素 console.log(event.clientX, event.clientY); // 鼠标坐标 event.preventDefault(); // 阻止默认行为(如表单提交) event.stopPropagation(); // 阻止事件冒泡});
五、事件冒泡与捕获
冒泡 (Bubbling):事件从目标元素向上传递到根元素(默认阶段)。捕获 (Capturing):事件从根元素向下传递到目标元素。// 第三个参数为 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);});
七、事件委托
利用事件冒泡,将事件监听绑定到父元素,处理动态子元素:
<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); }});// 动态添加的 li 元素也会自动拥有事件响应
八、其他要点
解绑事件:使用removeEventListener
const handler = () => { console.log('Click') };btn.addEventListener('click', handler);btn.removeEventListener('click', handler);
匿名函数问题:匿名函数无法通过removeEventListener
解绑。
被动事件监听器:优化滚动性能
window.addEventListener('scroll', function(e) { // 逻辑代码}, { passive: true });
通过掌握这些基础知识,你可以实现丰富的交互功能!建议通过实际项目练习加深理解。