addeventlistener绑定事件(js 判断是否存有事件 addeventlistener)

:暂无数据 2026-07-21 15:00:02 :0

addeventlistener绑定事件(js 判断是否存有事件 addeventlistener)

“addeventlistener绑定事件”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看addeventlistener绑定事件(js 判断是否存有事件 addeventlistener)!

本文目录

js 判断是否存有事件 addeventlistener

原生实现无法判断是否有事件。如果确实需要请参照以下代码,另外本代码只使用于调用dom2形式加载或者移除事件功能,对应dom0类型的没有做测试。

以下代码修改了原生的Element对象,是否需要这样做,请自己酌情处理。

《!DOCTYPE html》
《html》
《head lang=“en“》
    《meta charset=“UTF-8“》
    《title》《/title》
    《script type=“text/javascript“》
        /**
         * 此处代码必须放到任何javascript代码之前。另外增加事件只能用addEventListener形式。
         */
        (function() {
            Element.prototype.eventListenerList = {};
            Element.prototype._addEventListener = Element.prototype.addEventListener;
            Element.prototype._removeEventListener = Element.prototype.removeEventListener;
            Element.prototype.addEventListener = function(a,b,c) {
                this._addEventListener(a,b,c);
                if(!this.eventListenerList[a]) this.eventListenerList[a] = ;
                this.eventListenerList[a].push(b);
            };
            Element.prototype.removeEventListener = function(a,b,c){
                this._removeEventListener(a, b,c);
                if(this.eventListenerList[a]){
                    var arr = this.eventListenerList[a];
                    for(var i =0;i《arr.length;i++){
                        if(arr[i].toString() === b.toString()){
                            this.eventListenerList[a].splice(i,1);
                        }
                    }
                }
            }
        })();
        //此后为测试代码。
        window.onload = function(){
            var dom = document.getElementById(“test“);
            //增加三个监听
            dom.addEventListener(“click“,function(){
                console.info(“click function“);
            },false);
            dom.addEventListener(“click“,function(){
                console.info(“click function2“);
            },false);
            dom.addEventListener(“click“,function(){
                console.info(“click function3“);
            },false);
 
            console.log(dom.eventListenerList[“click“].length);
            //读出监听的方法
            var clicks = dom.eventListenerList.click;
            if(clicks) clicks.forEach(function(f) {
                console.log(“I listen to this function: “+f.toString());
            });
            //删除监听
            dom.removeEventListener(“click“,function(){
                console.info(“click function“);
            },false);
             
            console.log(dom.eventListenerList[“click“].length);
        };
    《/script》
《/head》
《body》
    《button id=“test“ 》测试《/button》
《/body》
《/html》

addEventListener和on的区别

addEventListener和on的区别
为什么需要addEventListener?
先来看一个片段:
html代码
《div id=“box“》追梦子《/div》
用on的代码

1 window.onload = function(){
2 var box = document.getElementById(“box“);
3 box.onclick = function(){
4 console.log(“我是box1“);
5 }
6 box.onclick = function(){
7 box.style.fontSize = “18px“;
8 console.log(“我是box2“);
9 }
10 }
     运行结果:“我是box2”

看到了吧,第二个onclick把第一个onclick给覆盖了,虽然大部分情况我们用on就可以完成我们想要的结果,但是有时我们又需要执行多个相同的事件,很明显如果用on完成不了我们想要的,那不用猜,你们肯定知道了,对!addEventListener可以多次绑定同一个事件并且不会覆盖上一个事件。
用addEventListener的代码

1 window.onload = function(){
2 var box = document.getElementById(“box“);
3 box.addEventListener(“click“,function(){
4 console.log(“我是box1“);
5 })
6 box.addEventListener(“click“,function(){
7 console.log(“我是box2“);
8 })
9 }
    运行结果:我是box1
         我是box2

addEventListenert方法第一个参数填写事件名,注意不需要写on,第二个参数可以是一个函数,第三个参数是指在冒泡阶段还是捕获阶段处理事件处理程序,如果为true代表捕获阶段处理,如果是false代表冒泡阶段处理,第三个参数可以省略,大多数情况也不需要用到第三个参数,不写第三个参数默认false

第三个参数的使用
有时候的情况是这样的
《body》
  《div id=“box“》
    《div id=“child“》《/div》
  《/div》
《/body》
如果我给box加click事件,如果我直接单击box没有什么问题,但是如果我单击的是child元素,那么它是怎么样执行的?(执行顺序)

1 box.addEventListener(“click“,function(){
2 console.log(“box“);
3 })
4
5 child.addEventListener(“click“,function(){
6 console.log(“child“);
7 })
  执行的结果:
        child
        box

也就是说,默认情况事件是按照事件冒泡的执行顺序进行的。

如果第三个参数写的是true,则按照事件捕获的执行顺序进行的。

1 box.addEventListener(“click“,function(){
2 console.log(“box“);
3 },true)
4
5 child.addEventListener(“click“,function(){
6 console.log(“child“);
7 })
  执行的结果:
        box
        child

事件冒泡执行过程:
        从最具体的的元素(你单击的那个元素)开始向上开始冒泡,拿我们上面的案例讲它的顺序是:child-》box
事件捕获执行过程:
        从最不具体的元素(最外面的那个盒子)开始向里面冒泡,拿我们上面的案例讲它的顺序是:box-》child

addEventListener添加事件与普通添加事件有区别吗

在标签中直接用onclick绑定事件,相当于对象的引用,也就如果有多个标签绑定此事件函数,其实公用同一个函数对象,在此函数中用this关键字,总是指向的是此函数定义时所属的对象,而不是此标签对象,而在js中写代码绑定事件,相当于复制一份此事件函数当做此标签对象的属性,所以在函数中用this关键字,指向的是此标签对象本身。

关于addeventlistener绑定事件,js 判断是否存有事件 addeventlistener的介绍到此结束,希望对大家有所帮助。

addeventlistener绑定事件(js 判断是否存有事件 addeventlistener)

本文编辑:admin

更多文章:


协方差计算公式(协方差的计算公式)

协方差计算公式(协方差的计算公式)

这篇文章给大家聊聊关于协方差计算公式,以及协方差的计算公式对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 08:10

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

本篇文章给大家谈谈易语言网页api接口怎么调用,以及易语言,怎么读取网页json的api对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 08:00

majority of(the majority of 和 a majority of的区别以及用法例句)

majority of(the majority of 和 a majority of的区别以及用法例句)

这篇文章给大家聊聊关于majority of,以及the majority of 和 a majority of的区别以及用法例句对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 07:40

汉字机内码查询表(1个汉字的机内码是几位谢谢)

汉字机内码查询表(1个汉字的机内码是几位谢谢)

大家好,关于汉字机内码查询表很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于1个汉字的机内码是几位谢谢的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 07:20

promote翻译(英语翻译倡导怎么说)

promote翻译(英语翻译倡导怎么说)

其实promote翻译的问题并不复杂,但是又很多的朋友都不太了解英语翻译倡导怎么说,因此呢,今天小编就来为大家分享promote翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 06:30

用手机如何导航?开车用手机导航哪个软件最好

用手机如何导航?开车用手机导航哪个软件最好

今天给各位分享用手机如何导航的知识,其中也会对用手机如何导航进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 06:20

多线程技术有什么用(多线程有什么作用)

多线程技术有什么用(多线程有什么作用)

其实多线程技术有什么用的问题并不复杂,但是又很多的朋友都不太了解多线程有什么作用,因此呢,今天小编就来为大家分享多线程技术有什么用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 05:40

another time(another time和other time的区别)

another time(another time和other time的区别)

大家好,another time相信很多的网友都不是很明白,包括another time和other time的区别也是一样,不过没有关系,接下来就来为大家分享关于another time和another time和other time的区

2026年10月11日 05:00

java开发工具包jdk(JDK是什么意思)

java开发工具包jdk(JDK是什么意思)

其实java开发工具包jdk的问题并不复杂,但是又很多的朋友都不太了解JDK是什么意思,因此呢,今天小编就来为大家分享java开发工具包jdk的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 04:50

mysql 命令(MySQL的基本命令)

mysql 命令(MySQL的基本命令)

大家好,如果您还对mysql 命令不太了解,没有关系,今天就由本站为大家分享mysql 命令的知识,包括MySQL的基本命令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 03:00

最近更新

majority of(the majority of 和 a majority of的区别以及用法例句)
2026-10-11 07:40:02 浏览:0
热门文章

标签列表