JS addEventListener()方法

article/2025/9/12 22:38:57

addEventListener(),事件监听,用于向指定的元素添加事件监听

语法:addEventListener(event,function,useCapture);

第一个参数event:指事件的类型(如’click’,‘mousedown’)
第二个参数function:事件触发后调用的函数
第三个参数useCapture:设置传递的类型,默认值为false,即冒泡传递(可省略);值为true时,捕获传递。

例:

 		<button id="btn">点击</button><script>document.getElementById("btn").addEventListener("click",function () {console.log(Date());});</script>

(它允许给一个事件注册多个监听器,且不会覆盖已存在的事件)
例:

			<button id="btn">点击</button><script>document.getElementById("btn").addEventListener("click",function () {console.log("我是第一个冒泡传递");})document.getElementById("btn").addEventListener("click",function () {console.log("我是第二个冒泡传递");})</script>

可以添加不同的事件类型
例:

			<button id="btn">点击</button><script>document.getElementById("btn").addEventListener("click",function () {console.log("我是点击的冒泡传递");});document.getElementById("btn").addEventListener("mouseover",function () {console.log("我是鼠标移入的事件传递");});document.getElementById("btn").addEventListener("mouseout",function () {console.log("我是鼠标移出的事件传递");});window.addEventListener("resize",function () {console.log("重置窗口");});</script>

使用匿名函数传递参数
例:

			<button id="btn">点击</button><script>document.getElementById("btn").addEventListener("click",function () {console.log(def(5,8));});function def(a,b) {return a*b;}</script>

removeEventListener(),用来移除事件的监听
例:

		<button id="btn">点击</button><script>document.getElementById("btn").addEventListener("click",one);function one(){console.log("我是第一个冒泡传递");};//移除事件document.getElementById("btn").removeEventListener("click",one);</script>

事件的传递有两种方式:冒泡与捕获

在冒泡中,内部元素的事件会先被触发,然后再触发外部元素; 【从里到外】
在捕获中,外部元素的事件会被先触发,然后才会触发内部元素的事件。【从外到里】

例:

 			<div id="box"><p id="demo">冒泡</p></div><br /><div id="div"><p id="px">捕获</p></div><script>document.getElementById("demo").addEventListener("click",function () {console.log("p元素被点击");});//false可省略document.getElementById("box").addEventListener("click",function () {console.log("div元素被点击");});document.getElementById("px").addEventListener("click",function () {console.log("第二个p元素被点击");},true);document.getElementById("div").addEventListener("click",function () {console.log("第二个div元素被点击");},true);</script>

浏览器的兼容性问题:在IE9之前,只能使用attachEvent

添加:attachEvent()方法
移除:detachEvent()方法

使用 attachEvent 方法有个缺点,this 的值会变成 window 对象的引用而不是触发事件的元素

addEventListener() 跨浏览器的解决方法
例:

		<button id="btn">点击</button><script>var x = document.getElementById("btn");if (x.addEventListener){//大部分浏览器x.addEventListener("click",def);} else if (x.attachEvent){//IE8及以下浏览器x.attachEvent("onclick",def);};function def() {alert("跨浏览器的解决方法");};</script>

冒泡传递和捕获传递:

<div id="cla"><button id="btn"><p id="mp">冒泡</p></button>
</div><br /><div id="box"><button id="btn1"><p id="bh">捕获</p></button>
</div><script>document.getElementById("cla").addEventListener("click",function(){console.log("div标签被点击");});document.getElementById("btn").addEventListener("click",function(){console.log("button标签被点击");});document.getElementById("mp").addEventListener("click",function(){console.log("p标签被点击");});document.getElementById("box").addEventListener("click",function () {console.log("div被捕获");},true);document.getElementById("btn1").addEventListener("click",function () {console.log("button被捕获");},true);document.getElementById("bh").addEventListener("click",function () {console.log("p被捕获");},true);</script>

冒泡传递:
在这里插入图片描述

捕获传递:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/v77pIh6j.shtml

相关文章

JS中addEventListener的使用

使用addEventListener绑定事件&#xff1a;MDN中addEventListener()说明 使用removeEventListener可以解绑事件&#xff1a; MDN中removeEventListener()说明 1&#xff0c;我们使用addEventListener的时候&#xff0c;主要用来实现事件的绑定监听的 存在三个参数 target.addE…

addEventListener()使用方法

document.addEventListener() 方法用于向文档添加事件句柄&#xff0c;即事件监听。先看下面代码&#xff0c;稍后进行讲解。 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title> </head> <body>&…

关于JS中addEventListener的使用

关于JS中addEventListener的使用 MDN中addEventListener()说明 使用removeEventListener可以解绑事件 MDN中removeEventListener()说明 主要用来实现事件的绑定 存在三个参数 target.addEventListener(type, listener, useCapture); type: 表示监听事件类型的字符串。类似于…

JavaScript属性及正则表达式

目录 offset、client、scroll属性offsetclientscroll 正则表达式什么是正则表达式正则表达式的特点正则表达式的创建正则表达式的检验正则表达式的修饰符模式修饰符边界符预定义符转义特殊字符字符类字符组合取反符量词符括号字符 正则表达式的优先级String类中的方法match方法…

前端js正则表达式

正则表达式 第一章 正则表达式字符匹配攻略 1.1. 两种模糊匹配 1.1.1. 横向模糊匹配 一个正则可匹配的字符串的长度不是固定的&#xff0c;可以是多种情况的。譬如 {m,n}&#xff0c;表示连续出现最少 m 次&#xff0c;最多 n 次。其实现的方式是使用量词。例如let reg /a…

JS正则表达式字符匹配

正则表达式字符匹配 这是阅读《JavaScript正则表达式迷你书》后整理的一些笔记。 正则表达式是匹配模式&#xff0c;要么匹配字符&#xff0c;要么匹配位置。 下面主要介绍匹配字符的情况&#xff0c;匹配位置的情况我也正在学习中。 两种模糊匹配&#xff1a; 1.横向模糊匹…

JS正则表达式

JS正则表达式 0.前言 首先是一些资料[在线测试网站](regex101: build, test, and debug regex)和简明易懂教程。 正则表达式是一组由字母和符号组成的特殊文本&#xff0c;它可以用来从文本中找出满足你想要的格式的句子。 一个正则表达式是一种从左到右匹配主体字符串的模式。…

Spring框架总结

简介 创立于 2003年 , 是为了解决企业级开发的复杂性的! 是一个分层的se/ee(javase和java ee)一站式轻量级开源框架 作用&#xff1a; 1.Spring是一个开元的轻量级的应用开发框架&#xff0c;其目的是用于简化企业级应用程序开发&#xff0c;减少侵入&#xff1b; 2.Spring的…

Spring框架特点

Spring是什么&#xff1f; spring是一个轻量级的 IOC&#xff08;控制反转&#xff09;和AOP(面向切面)的编程。 什么是IOC? IOC(控制反转) &#xff1a;传统JAVA SE 程序设计&#xff0c;我们直接在程序内部通过new来创建对象&#xff0c;是程序主动去创建依赖对象&#x…

Spring框架常用注解

Spring常用注解 Controller Controller 用来响应页面&#xff0c;表示当前的类为控制器。 在SpringMVC 中&#xff0c;控制器Controller 负责处理由DispatcherServlet 分发的请求&#xff0c;它把用户请求的数据经过业务处理层处理之后封装成一个Model &#xff0c;然后再把该…

浅谈我对spring框架的理解

总所周知&#xff0c;java界乃由五大传统框架&#xff1a;1.核心业务层框架&#xff08;地位不可动摇&#xff09;spring,2.控制层框架&#xff1a;spring MVC与struts2, 持久层框架&#xff1a;Mybatis&#xff0c;hibernate。 先从spring说起吧&#xff0c;了解过spring的同学…

Spring框架(一):spring框架的简介

一、spring框架的概念 Spring是一个开源轻量级的控制反转(IoC)和面向切面(AOP)的容器框架&#xff0c;它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而&#xff0c;Spring的用途不仅限于服务…

关于对Spring框架的详解

Spring框架 基本概念Spring的形成主要模块三层架构Spring的优点对于Spring 框架中都用到设计模式&#xff1a; 基本概念 Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而&#xff0c;Spring的用途不仅仅限于服务…

【Spring框架】Spring框架介绍

文章目录 Spring框架介绍Spring两大核心技术 Spring的优点Spring体系介绍核心容器数据访问/集成Web页面其他模块 Spring框架介绍 Spring框架是分层的 Java SE/EE 应用 full-stack 全栈式轻量级开源框架&#xff0c;以 IOC(Inverse Of Control&#xff1a;控制反转)和 AOP(Aspe…

【Java】Spring框架

一、Spring简介 简介 Spring是分层的Java SE/EE应用full-stack轻量级开源框架&#xff0c;以IoC&#xff08;Inverse Of Control&#xff1a;反转控制&#xff09;和AOP&#xff08;Aspect Oriented Programming&#xff1a;面向切面编程&#xff09;为内核。提供了展现层Spr…

spring框架解析(全)

spring概述 spring容器启动 springIoc控制反转 spring依赖注入 spring事务 spring事件监听 springaop面向切面编程 –AOP用例搭建 –注解配置 Spring AOP详解 –Transactional注解 spring注解大全 spring概述 spring是一个轻量级的容器,用于管理业务相关对象的。其两…

Spring框架学习

Spring框架 1、Spring框架介绍及搭建 Spring简介(官网&#xff1a;Spring | Home) Spring框架是一个开放源代码的J2EE应用程序框架&#xff0c;由Rod Johnson发起&#xff0c;是针对bean的生命周期进行管理的轻量级容器&#xff08;lightweight container&#xff09;。 Spr…

什么是spring框架?spring特点与好处,使用spring框架的好处是什么.

Spring是一个开源框架&#xff0c;Spring是于2003 年兴起的一个轻量级的Java 开发框架&#xff0c;由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其…

什么是spring框架?spring框架到底有什么用?spring框架到底做了些什么?

什么是spring框架&#xff0c;spring框架究竟有什么用呢&#xff1f;我们可以用spring框架来做些什么呢&#xff1f;这是我今天要说的内容。 当然&#xff0c;百度spring框架会出现一大堆spring框架的介绍&#xff0c;以及IOC和AOP。但是这些官方的语言&#xff0c;看书都有解…

【Spring框架一】——Spring框架简介

系列文章目录 Spring框架简介 系列文章目录前言一、什么是Spring框架&#xff1f;二、Spring框架的优势1.简化开发流程&#xff1a;Spring提供了许多现成的功能&#xff0c;可以使得开发人员在构建应用程序时减少编写重复代码的工作。2.提高可维护性&#xff1a;Spring框架采用…