• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共299篇

    前端 - Javascript

关闭

返回栏目

关闭

返回前端 - Javascript栏目

100 - 事件概述 - 事件概念 - 常见事件类型介绍

作者:

贺及楼

成为作者

更新日期:2025-02-21 18:59:22

事件概述 - 事件概念 - 常见事件类型介绍

一、事件概念

在前端开发中,事件是 JavaScript 与 HTML 文档交互的基础机制。简单来说,事件就是文档或浏览器窗口中发生的特定交互瞬间。当这些瞬间发生时,我们可以编写代码来对其做出响应,从而实现动态的网页效果。

举个生活中的例子,把网页想象成一个热闹的派对现场,而事件就是派对上发生的各种事情,比如有人敲门、音乐响起、有人摔倒等。JavaScript 就像是派对的组织者,当这些事情发生时,组织者可以采取相应的行动,比如开门、调整音乐音量、扶起摔倒的人。

在 HTML 文档中,事件可以由用户的操作触发,比如点击按钮、输入文本、滚动页面等;也可以由浏览器自身触发,比如页面加载完成、窗口大小改变等。

二、事件绑定

在 JavaScript 中,要对事件做出响应,就需要将事件与相应的处理函数进行绑定。下面介绍几种常见的事件绑定方式。

1. HTML 内联事件处理程序

这是一种最简单的事件绑定方式,直接在 HTML 标签中使用事件属性来指定事件处理代码。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <button onclick="alert('你点击了我!')">点击我</button>
  5. </body>
  6. </html>

在这个例子中,当用户点击按钮时,会弹出一个提示框显示“你点击了我!”。不过,这种方式会将 HTML 和 JavaScript 代码混合在一起,不利于代码的维护和复用,不建议在大型项目中使用。

2. DOM0 级事件处理程序

通过 JavaScript 代码获取 DOM 元素,然后直接为元素的事件属性赋值一个函数。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <button id="myButton">点击我</button>
  5. <script>
  6. const button = document.getElementById('myButton');
  7. button.onclick = function () {
  8. alert('你点击了我!');
  9. };
  10. </script>
  11. </body>
  12. </html>

这种方式将 HTML 和 JavaScript 代码分离,提高了代码的可维护性,但一个元素的同一个事件只能绑定一个处理函数。

3. DOM2 级事件处理程序

使用 addEventListener 方法来绑定事件处理函数,这种方式更加灵活,可以为同一个元素的同一个事件绑定多个处理函数。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <button id="myButton">点击我</button>
  5. <script>
  6. const button = document.getElementById('myButton');
  7. button.addEventListener('click', function () {
  8. alert('第一次点击响应');
  9. });
  10. button.addEventListener('click', function () {
  11. alert('第二次点击响应');
  12. });
  13. </script>
  14. </body>
  15. </html>

当用户点击按钮时,会依次弹出两个提示框。

三、常见事件类型介绍

1. 鼠标事件

鼠标事件是最常见的事件类型之一,用于处理用户与鼠标的交互。
| 事件名称 | 描述 | 示例代码 |
| —— | —— | —— |
| click | 当用户点击鼠标左键时触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <button id="clickButton">点击我</button>
  5. <script>
  6. const clickButton = document.getElementById('clickButton');
  7. clickButton.addEventListener('click', function () {
  8. alert('你点击了按钮');
  9. });
  10. </script>
  11. </body>
  12. </html>

| dblclick | 当用户双击鼠标左键时触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <div id="doubleClickDiv">双击我</div>
  5. <script>
  6. const doubleClickDiv = document.getElementById('doubleClickDiv');
  7. doubleClickDiv.addEventListener('dblclick', function () {
  8. alert('你双击了这个区域');
  9. });
  10. </script>
  11. </body>
  12. </html>

| mouseover | 当鼠标指针移动到元素上方时触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <div id="mouseOverDiv" style="width: 100px; height: 100px; background-color: lightblue;">鼠标移上来</div>
  5. <script>
  6. const mouseOverDiv = document.getElementById('mouseOverDiv');
  7. mouseOverDiv.addEventListener('mouseover', function () {
  8. this.style.backgroundColor = 'lightgreen';
  9. });
  10. </script>
  11. </body>
  12. </html>

| mouseout | 当鼠标指针移出元素时触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <div id="mouseOutDiv" style="width: 100px; height: 100px; background-color: lightblue;">鼠标移上来再移走</div>
  5. <script>
  6. const mouseOutDiv = document.getElementById('mouseOutDiv');
  7. mouseOutDiv.addEventListener('mouseout', function () {
  8. this.style.backgroundColor = 'lightblue';
  9. });
  10. </script>
  11. </body>
  12. </html>

2. 键盘事件

键盘事件用于处理用户与键盘的交互。
| 事件名称 | 描述 | 示例代码 |
| —— | —— | —— |
| keydown | 当用户按下键盘上的任意键时触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <input type="text" id="keyInput">
  5. <script>
  6. const keyInput = document.getElementById('keyInput');
  7. keyInput.addEventListener('keydown', function (event) {
  8. console.log('你按下了键:', event.key);
  9. });
  10. </script>
  11. </body>
  12. </html>

| keyup | 当用户释放键盘上的任意键时触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <input type="text" id="keyUpInput">
  5. <script>
  6. const keyUpInput = document.getElementById('keyUpInput');
  7. keyUpInput.addEventListener('keyup', function (event) {
  8. console.log('你释放了键:', event.key);
  9. });
  10. </script>
  11. </body>
  12. </html>

| keypress | 当用户按下并释放一个可打印字符键时触发(不包括功能键) |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <input type="text" id="keyPressInput">
  5. <script>
  6. const keyPressInput = document.getElementById('keyPressInput');
  7. keyPressInput.addEventListener('keypress', function (event) {
  8. console.log('你输入了字符:', String.fromCharCode(event.charCode));
  9. });
  10. </script>
  11. </body>
  12. </html>

3. 表单事件

表单事件用于处理用户与表单元素的交互。
| 事件名称 | 描述 | 示例代码 |
| —— | —— | —— |
| submit | 当用户提交表单时触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <form id="myForm">
  5. <input type="text" name="username">
  6. <input type="submit" value="提交">
  7. </form>
  8. <script>
  9. const myForm = document.getElementById('myForm');
  10. myForm.addEventListener('submit', function (event) {
  11. event.preventDefault(); // 阻止表单默认提交行为
  12. alert('表单已提交');
  13. });
  14. </script>
  15. </body>
  16. </html>

| change | 当表单元素的值发生改变并失去焦点时触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <input type="text" id="changeInput">
  5. <script>
  6. const changeInput = document.getElementById('changeInput');
  7. changeInput.addEventListener('change', function () {
  8. alert('输入框的值已改变');
  9. });
  10. </script>
  11. </body>
  12. </html>

| input | 当表单元素的值发生改变时立即触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <input type="text" id="inputInput">
  5. <script>
  6. const inputInput = document.getElementById('inputInput');
  7. inputInput.addEventListener('input', function () {
  8. console.log('输入框当前的值:', this.value);
  9. });
  10. </script>
  11. </body>
  12. </html>

4. 窗口事件

窗口事件用于处理与浏览器窗口相关的交互。
| 事件名称 | 描述 | 示例代码 |
| —— | —— | —— |
| load | 当页面或图像加载完成时触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <img src="example.jpg" id="myImage">
  5. <script>
  6. const myImage = document.getElementById('myImage');
  7. myImage.addEventListener('load', function () {
  8. alert('图像加载完成');
  9. });
  10. window.addEventListener('load', function () {
  11. alert('页面加载完成');
  12. });
  13. </script>
  14. </body>
  15. </html>

| resize | 当浏览器窗口大小改变时触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. <script>
  5. window.addEventListener('resize', function () {
  6. console.log('窗口大小已改变,当前宽度:', window.innerWidth, '当前高度:', window.innerHeight);
  7. });
  8. </script>
  9. </body>
  10. </html>

| scroll | 当用户滚动页面时触发 |

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body style="height: 2000px;">
  4. <script>
  5. window.addEventListener('scroll', function () {
  6. console.log('页面滚动了,当前滚动距离:', window.scrollY);
  7. });
  8. </script>
  9. </body>
  10. </html>

四、总结

事件是前端开发中非常重要的概念,通过合理地使用事件和事件处理函数,我们可以实现各种动态的网页效果,提升用户体验。不同类型的事件适用于不同的场景,开发者需要根据具体需求选择合适的事件类型进行处理。同时,要注意事件绑定的方式,尽量采用 addEventListener 方法,以提高代码的灵活性和可维护性。