一、事件注册方式




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 :
在这里插入图片描述

完整执行过程 :
在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐