JavaScript addEventListener() 方法怎么用?怎么给元素绑定事件监听?

文章导读
Previous Quiz Next JavaScript 的 addEventListener() 方法用于将事件处理函数附加到 HTML 元素。这允许您指定一个函数,当指定的元素上发生特定事件时,该函数将被执行。
📋 目录
  1. 语法
  2. 示例
A A

JavaScript - addEventListener()



Previous
Quiz
Next

JavaScript 的 addEventListener() 方法用于将事件处理函数附加到 HTML 元素。这允许您指定一个函数,当指定的元素上发生特定事件时,该函数将被执行。

事件是特定的发生或动作,如用户点击、按键或页面加载。浏览器检测这些事件并触发相关的 JavaScript 函数(称为事件处理程序)来相应响应。

开发者使用 addEventListener() 方法将特定的 HTML 元素与特定事件发生时的函数行为关联起来。事件示例包括点击、鼠标移动、键盘输入和文档加载。

语法

addEventListener() 的基本语法如下 −

element.addEventListener(event, function, options);

这里的 element 是一个 HTML 元素,例如 button、input 或 div - 可以使用 getElementById、getElementsByClassName、getElementsByTagName 和 querySelector 等方法选择;这些只是几个例子。事件监听器附加到这个特定元素上。

参数

addEventListener() 方法接受以下参数 −

  • event − 一个字符串,表示动作类型 − 例如 "click"、"mouseover" 或 "keydown" 等;它将作为触发执行给定函数的信号。

  • function − 一个命名函数、匿名函数或对现有函数的引用,当指定事件发生时被调用;它本质上是预定时刻执行的操作。

  • options (可选) − 允许指定与事件监听器相关的额外设置,特别是捕获或一次性行为。

示例

示例:点击按钮时显示警报

在这个示例中,我们将显示一个简单的按钮,点击时会在屏幕上显示一个警报。addEventListener 将负责处理 click 事件,这意味着它会在按钮被点击时调用 handleClick 函数,向屏幕抛出一个警报。我们使用 getElementById 来获取要绑定事件监听器的按钮。

这是提交表单、登录、注册等情况下常用的一个事件。

<html>
<head>
   <title>Click Event Example</title>
</head>
<body>
   <p> Click the button below to perform an event </p>
   <button id="myButton">Click Me</button>

   <script>
      // 获取按钮元素
      const button = document.getElementById("myButton");
      // 定义事件处理函数
      function handleClick() {
         alert("Button clicked!");
      }
      // 将事件监听器附加到按钮
      button.addEventListener("click", handleClick);
   </script>

</body>
</html>

示例:鼠标悬停时颜色变化

在这个示例中,我们有一个 div 标签,初始颜色为浅蓝色。当鼠标悬停在该 div 标签上时,它会变为红色,鼠标移出时又变回蓝色。

这里有两个事件,mouseovermouseoutmouseover 表示鼠标移动到元素上,mouseout 表示鼠标移出元素。

这里有两个函数,一个用于 mouseover,一个用于 mouseout。在 mouseover 时,将背景颜色属性设置为浅珊瑚色(一种红色调),在 mouseout 时,将背景颜色设置为浅蓝色。

这类鼠标悬停事件在许多网站的导航栏上很常见。

<html>
<head>
   <title>Mouseover Event Example</title>
   <style>
      #myDiv {
         width: 600px;
         height: 200px;
         background-color: lightblue;
      }
   </style>
</head>
<body>
   <div id="myDiv">Hover over me</div>
   <script>
      // 获取 div 元素
      const myDiv = document.getElementById("myDiv");

      // 定义事件处理函数
      function handleMouseover() {
      myDiv.style.backgroundColor = "lightcoral";
      } 

      // 将事件监听器附加到 div
      myDiv.addEventListener("mouseover", handleMouseover);

      // 附加示例:在 mouseout 时恢复颜色
      function handleMouseout() {
         myDiv.style.backgroundColor = "lightblue";
      }

      myDiv.addEventListener("mouseout", handleMouseout);
   </script>
</body>
</html>

同一个元素可以有多个事件监听器,就像第二个示例中那样,它有两个事件监听器(用于 mouseovermouseout)。可以使用 removeEventListener 函数移除事件监听器。通过在选项中传递参数 once: true,可以确保事件监听器在被调用一次后自动移除,这在某些场景如支付情况下很重要。

重要的是,不要使用 “on” 前缀来指定事件,这意味着对于 click 事件,应该指定为 “click” 而不是 “onclick”。