【Web APIs】JavaScript 事件高级 ① ( 元素注册事件 | 传统方式 注册事件 | 方法监听方式 注册事件 )
·
一、事件注册方式
1、事件注册简介
注册事件 又称为 " 绑定事件 " , 在 DOM 文档 中 为指定的 元素 添加事件 ;
注册事件 有两种方式 :
- 传统方式 : 该方式也被称为 " on + 事件名称 " 模式 , 例如 : onclick、onmouseover 等注册方式 ;
- 方法监听 : 使用 addEventListener() 方法 注册事件 ;
2、传统方式 注册事件
传统事件 注册方式 , 也被称为 " on + 事件名称 " 模式 , 写法简单 , 适用于简单场景 , 所有浏览器都支持该用法 ;
使用该方式注册的方法 , 注册的事件是唯一的 , 同一个元素的同一个事件只能设置一个处理函数 , 最后注册的 处理函数 会覆盖之前注册的 函数 ;
方式一 : 直接在 HTML 元素标签 内部 , 使用 " on + 事件名称 " 定义事件 ;
<button id="btn1" onclick="alert('hello!')">按钮1</button>
方式二 : 在 JavaScript 脚本中 , 获取元素对象 , 为元素对象的 " on + 事件名称 " 成员设置一个函数 ;
var btn1 = document.getElementById('btn1');
// 为 btn1 注册第一个点击事件
btn1.onclick = function() {
alert('hello!');
};
3、方法监听方式 注册事件 ( 推荐使用 )
方法监听 事件注册方式 , 通过 调用 DOM 元素的 addEventListener() 方法 , 为 元素对象 注册事件 , 这也是 W3C 推荐的标准方法 ;
方法监听 事件注册方式 有如下特点 :
- 非唯一性 : 同一个元素的同一个事件可以注册多个监听器 , 它们会按照注册的顺序依次执行 ;
- 灵活性 : 可以更精细地控制事件的触发阶段 ;
- 可移除 : 可以 使用 removeEventListener() 方法移除指定的事件监听器 ;
兼容性 : IE9 之前的浏览器版本 不支持该用法 , 可使用 attachEvent 方法代替 ;
addEventListener() 方法原型 :
element.addEventListener(eventName, functionName[, useCapture]);
- eventName : 事件类型字符串 , 不带 " on " 前缀 , 例如 " click "、 " mouseover " ;
- functionName : 事件处理函数 , 事件触发时执行该函数 ;
- useCapture : 可选参数 , 是一个布尔值 ;
- false : 默认值 , 事件在 冒泡阶段 触发 ;
- true : 事件在 捕获阶段 触发 ;
二、代码示例
1、完整代码示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>事件注册</title>
<style></style>
</head>
<body>
<button id="btn1" onclick="alert('hello1!')">按钮1 传统方式注册事件1</button>
<button id="btn2">按钮2 传统方式注册事件2</button>
<button id="btn3">按钮3 事件监听方式注册事件</button>
<script>
var btn1 = document.getElementById('btn1');
var btn2 = document.getElementById('btn2');
var btn3 = document.getElementById('btn3');
// 1. 传统方式注册事件
btn2.onclick = function() {
alert('hello2!');
}
// 2. 事件侦听注册事件
btn3.addEventListener('click', function() {
alert('hello3!');
})
</script>
</body>
</html>
2、执行结果

点击 按钮1 :
点击 按钮2 :
点击 按钮3 :
完整执行过程 :
更多推荐
所有评论(0)