事件处置惩罚步伐

打印 上一主题 下一主题

主题 1652|帖子 1652|积分 4956

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
事件处置惩罚步伐


一、事件处置惩罚步伐的定义

事件处置惩罚步伐是一段代码,用于响应特定的事件。在网页开发中,事件是在文档或浏览器窗口中发生的特定交互瞬间,如用户点击按钮、页面加载完成等。事件处置惩罚步伐则是针对这些事件执行的函数,它能让网页实现交互性和动态性。
二、事件处置惩罚步伐的绑定方式

2.1 HTML 内联事件处置惩罚步伐

原理:

直接在 HTML 标签中利用事件属性来绑定事件处置惩罚步伐,事件属性的值是 JavaScript 代码。
示例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4.     <button onclick="alert('你点击了按钮!')">点击我</button>
  5. </body>
  6. </html>
复制代码
优缺点



  • 优点是简朴直接,适合简朴的交互。
  • 缺点是 HTML 和 JavaScript 代码耦合度高,不利于代码的维护和复用。
2.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>
复制代码
优缺点:



  • 优点是兼容性好,所有浏览器都支持。
  • 缺点是一个元素的一个事件只能绑定一个处置惩罚步伐,假如多次绑定,后面的会覆盖前面的。
2.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. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <meta charset="UTF-8" />
  5.     <title>title</title>
  6. </head>
  7. <body>
  8.     <!-- 创建一个按钮 -->
  9.     <button id="myButton">点击我</button>
  10.     <script>
  11.         // 获取按钮元素
  12.         const button = document.getElementById('myButton');  
  13.         // 初始化点击次数为 0
  14.         let clickCount = 0;
  15.         // 为按钮添加点击事件监听器
  16.         button.addEventListener('click',  function () {
  17.             // 点击次数加 1
  18.             clickCount++;
  19.             if (clickCount === 1) {
  20.                 // 第一次点击时显示相应信息
  21.                 alert('第一次点击响应');
  22.             } else if (clickCount === 2) {
  23.                 // 第二次点击时显示相应信息
  24.                 alert('第二次点击响应');
  25.             }
  26.         });
  27.     </script>
  28. </body>
  29. </html>
复制代码
优缺点:



  • 优点是可以为同一个事件绑定多个处置惩罚步伐,并且可以控制事件的捕捉和冒泡阶段。
  • 缺点是部门旧浏览器(如 IE8 及以下)不支持,需要利用
    attachEvent() 方法作为替换。
三、事件对象

定义:

当事件触发时,会主动创建一个事件对象,它包罗了与该事件相关的信息,如事件范例、触发事件的元素、鼠标位置等。
示例:

  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 (event) {
  8.             console.log(' 事件类型:', event.type);  // 事件类型: click
  9.             console.log(' 触发事件的元素:', event.target); // 触发事件的元素:<button id="myButton">点击我</button>
  10.         });
  11.     </script>
  12. </body>
  13. </html>
复制代码
常见事件属性和方法:



  • type:返回事件的范例,如 click、mouseover 等。
  • target:返回触发事件的元素。
  • preventDefault():阻止事件的默认举动,如阻止链接的跳转、表单的提交等。
  • stopPropagation():阻止事件的冒泡或捕捉。
四、事件流

定义:

事件流:形貌了事件在页面中触发的顺序,主要有事件捕捉和事件冒泡两种机制。
事件捕捉:事件从文档的根节点开始,依次向下查找触发事件的元素,直到找到目标元素。在这个过程中,假如元素绑定了相应的捕捉阶段的事件处置惩罚步伐,会依次执行。
事件冒泡:事件从目标元素开始,依次向上流传到文档的根节点。假如元素绑定了相应的冒泡阶段的事件处置惩罚步伐,会依次执行。
示例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4.     <div id="outer">
  5.         <div id="inner">点击我</div>
  6.     </div>
  7.     <script>
  8.         const outer = document.getElementById('outer');  
  9.         const inner = document.getElementById('inner');  
  10.         outer.addEventListener('click',  function() {
  11.             console.log(' 外层 div 冒泡阶段触发');
  12.         }, false);
  13.         outer.addEventListener('click',  function() {
  14.             console.log(' 外层 div 捕获阶段触发');
  15.         }, true);
  16.         inner.addEventListener('click',  function() {
  17.             console.log(' 内层 div 冒泡阶段触发');
  18.         }, false);
  19.         inner.addEventListener('click',  function() {
  20.             console.log(' 内层 div 捕获阶段触发');
  21.         }, true);
  22.     </script>
  23. </body>
  24. </html>
复制代码
这段代码的主要功能是展示事件在DOM中的捕捉和冒泡机制。当你点击inner div时,起首会触发outer div的捕捉阶段事件处置惩罚步伐,然后是inner div的捕捉阶段事件处置惩罚步伐。接着,事件开始冒泡,起首触发inner div的冒泡阶段事件处置惩罚步伐,最后是outer div的冒泡阶段事件处置惩罚步伐。通过这种方式,可以控制事件处置惩罚步伐的执行顺序。
五、事件委托

原理:

利用事件冒泡的原理,将事件处置惩罚步伐绑定到父元素上,当子元素触发事件时,事件会冒泡到父元素上,从而触发父元素上的事件处置惩罚步伐。通过判断事件的 target 属性,可以确定是哪个子元素触发了事件。
示例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4.     <ul id="myList">
  5.         <li>列表项 1</li>
  6.         <li>列表项 2</li>
  7.         <li>列表项 3</li>
  8.     </ul>
  9.     <script>
  10.         const list = document.getElementById('myList');  
  11.         list.addEventListener('click',  function(event) {
  12.             if (event.target.tagName  === 'LI') {
  13.                 console.log(' 你点击了列表项:', event.target.textContent);  
  14.             }
  15.         });
  16.     </script>
  17. </body>
  18. </html>
复制代码
优缺点:



  • 优点:是可以减少事件处置惩罚步伐的绑定命量,进步性能;便于动态添加和删除子元素,无需为新添加的子元素重新绑定事件处置惩罚步伐。
  • 缺点:是需要对事件的 target 属性进行判断,增长了代码的复杂度。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表