作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例:
1. onclick
- 点击事件
当元素被单击时触发(左键点击)
javascript
button.onclick = function() {
alert("按钮被点击了!");
};
场景:按钮提交、菜单展开、弹窗触发
2. onmouseover
- 鼠标悬停事件
当鼠标进入元素区域时触发(包括子元素)
javascript
div.onmouseover = function() {
this.style.backgroundColor = "yellow";
};
特性:冒泡机制(子元素触发会传播到父元素)
3. onmouseout
- 鼠标移出事件
当鼠标离开元素区域时触发(包括子元素)
javascript
div.onmouseout = function() {
this.style.backgroundColor = "white";
};
典型应用:悬停效果取消、工具提示隐藏
4. onmouseenter
- 精准悬停进入
当鼠标精确进入元素本身时触发(不包含子元素)
javascript
div.onmouseenter = function() {
this.classList.add("highlight");
};
与 mouseover 区别:不冒泡、不响应子元素穿透
5. onmouseleave
- 精准移出
当鼠标完全离开元素本身时触发(不包含子元素)
javascript
div.onmouseleave = function() {
this.classList.remove("highlight");
};
与 mouseout 区别:仅在离开绑定元素时触发
6. onkeydown
- 键盘按下事件
当键盘任意键被按下时触发
javascript
document.onkeydown = function(e) {
if(e.key === "Enter") {
submitForm(); // 按回车提交表单
}
};
关键属性:
-
e.key
:获取按键名称(如 "Enter", "a", "ArrowUp") -
e.ctrlKey
:检测是否按下Ctrl
⚠️ 重要补充
-
事件绑定方式
javascript// 推荐方式(可绑定多个事件) element.addEventListener('click', handler); // 传统方式(会覆盖前一个事件) element.onclick = handler;
-
事件流机制
-
捕获阶段(父→子)
-
冒泡阶段(子→父)
-
使用
e.stopPropagation()
阻止事件传播
-
-
事件对象(Event)
所有事件处理函数都接收事件对象参数:
javascript
element.onclick = function(e) {
console.log(e.clientX, e.clientY); // 获取鼠标坐标
}
🎯 使用建议
事件类型 | 适用场景 | 推荐替代事件 |
---|---|---|
mouseover/out |
简单悬停效果 | mouseenter/leave |
onclick |
通用点击 | addEventListener('click') |
keydown |
快捷键操作 | keyup (松开时触发) |