首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的事件处理程序不允许我访问event.target?

事件处理程序不允许访问event.target的原因可能有以下几种:

  1. 作用域问题:事件处理程序中的this指向的是当前执行环境,而不是事件目标元素。因此,如果想要访问event.target,可以将事件目标元素保存在一个变量中,然后在事件处理程序中使用该变量。
  2. 事件委托:事件委托是一种常用的优化技术,通过将事件处理程序绑定到父元素上,利用事件冒泡机制来处理子元素的事件。在事件委托模式下,event.target指向的是实际触发事件的子元素,而不是绑定事件处理程序的父元素。因此,如果想要访问event.target,可以通过事件对象的其他属性(如currentTarget)来获取实际触发事件的元素。
  3. 事件对象被重用:在某些情况下,浏览器会对事件对象进行重用,即在事件处理程序执行完毕后,事件对象可能会被重置或回收,导致无法再访问其中的属性。为了解决这个问题,可以在事件处理程序中立即将event.target保存在一个变量中,以便后续使用。

总结起来,事件处理程序不允许直接访问event.target可能是由于作用域问题、事件委托或事件对象被重用等原因。为了解决这个问题,可以使用其他属性或将event.target保存在一个变量中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么在公司里访问不了家里电脑?

上篇文章「为什么我们家里IP都是192.168开头?」提到,因为IPv4地址有限,最大42亿个。...SNAT 如果接收端处理完数据了,需要发一个响应给你电脑,那就需要将发送端IP地址填上自己30.30.30.30,将接收端地址填为你公网IP地址20.20.20.20,发往NAT路由器。...那这么说只有用到端口网络协议才能被NAT识别出来并转发? 但这怎么解释ping命令?ping基于ICMP协议,而ICMP协议报文里并不带端口信息。依然可以正常ping通公网机器并收到回包。...ping报头 事实上针对ICMP协议,NAT路由器做了特殊处理。ping报文头里有个Identifier信息,它其实指的是放出ping命令进程id。...像上面提到服务器x,你也不需要自己去搭,已经有很多现成方案,花钱就完事了,比如花某壳。 内网穿透 到这里,我们就可以回答文章标题问题。 为什么在公司里访问不了家里电脑?

2K10

不允许你只会 if err == nil ,请收下这份优雅处理错误指南

Go 错误异常处理,一直都是一个非常好玩的话题。...如果你习惯了 try catch 这样语法后,会觉得处理错误真简单,然后你再来接触 Go 错误异常,你会发现他好复杂啊,怎么到处都是 error,到处都需要处理 error。...所以我们尽量避免去比较 error.Error() 输出值,因为他正常情况下不是给我们人看,而是给程序,同时方便我们调试。 所以,Go 里面的错误其实我们可以进行一系列编程。...总结 Go 错误处理和其他语言不太一样,如果遵守错误处理规范,不对错误进行隐藏,写出来代码一般都是比较健壮。...于是就难免会出现一个包里面,特别多错误处理代码,这就是时间和空间博弈,就看 Go 语言领路人如何取舍了。 其次每个人对错误理解和处理思路方式都不太一样。

62320

为什么程序有bug(一):逻辑篇

本来是希望 when <10 之后应该continue,在写第一个when<0时候头脑还是很清晰。但是呢,当写第二个时候就用四肢写代码了,习惯性打了个return。...} 这里本来意思针对请求类型不同进行处理,但是我们在进行对比时候,用Request类型和Response类型进行比较,显然存在问题。...a>=10时,在成功或者失败回调要处理不一样逻辑。...accountService == null){ waitBind();//等待绑定成功、然后跨进程获取数据 } Info info = pushService.aidlGetInfo(); } 发现这个问题现象是程序刚启动时随机出现几次...但是,我们在清除accountID时只清除了数据库,没有清除缓存,再次登录时候用缓存值。这样就会导致程序陷入了死循环。所以在进行存储操作时,需要考虑好同步问题。

89620

『设计模式』反射,反射程序快乐!为什么老是加班?为什么工资不如他多?原来是不懂反射!

看完不会,请评论,亲自给你解释,嘻嘻! ? 什么是动态语言? 动态语言,是指程序在运行时可以改变其结构:新函数可以被引进,已有的函数可以被删除等在结构上变化。...,正在运行中访问修饰符,注解等等。...喜欢问问题小朋友要来了? 为什么没有getDeclaredConstructor方法和getDeclaredConstructors方法? 为什么为什么? 有啊!!...关于为什么要使用private访问权限构造器,使用这个构造器不就不能外部访问了嘛,不也就无法进行实例化对象了吗?...总结 这时候又会有小朋友问: 为什么要这么麻烦,直接调用不就好了?

1.1K20

为什么数据库应用程序这么慢?

应用问题:处理时间慢 每当客户端向SQL Server发送请求时,要检索所需数据集,完成请求所需处理时间都包括: 应用程序处理时间:应用程序在发送下一个请求之前处理上一个响应中数据需要多长时间...专注于一个小型可重复工作流将让您隔离问题。 接下来问题当然是为什么要花10秒钟?缩小问题第一个也是最简单方法是将应用程序尽可能靠近SQL Server,在同一台机器上或在同一个LAN上运行。...调查申请处理时间 您将在两个地方之间看到时间:发送应用程序响应和获取下一个请求(应用程序处理时间)之间或在发出SQL Server请求和获取响应(SQL处理时间)之间时间。...或者,如果您对扩展事件和XQuery有信心,您应该可以通过该路径获取类似的数据。 首先通过捕获工作流Profiler跟踪,只需使用“标准(默认)”跟踪模板。...当数据移动到不同位置(如云端)时,会发生什么?或者不同大陆客户试图访问?或者您需要构建地理上多样化灾难恢复环境?

2.2K30

996程序员们,为什么不建议你买保险?

996程序员们工作强度高、压力大,一旦患病,对家庭生活质量会产生极大威胁。 可以说,一人患上重疾,就等于一家人被判了死刑。 如何避免呢?很多人想到买保险,但我劝你不要着急买!...为此,邀请了好朋友资深保险规划师杨震,请他从客观中立角度给大家开一次讲座,全面解读保险里陷阱,避免大家日后被坑。讲座开始前,先上一波干货,给大家分析一下日常买保险常见各种不正确姿势。...而那些花高价买万能险、返还险等,认为包括了“教育金”和“养老金”,不但有保障,还可以理财,很划算。但其实,这种保险价格比纯保障型贵好几倍,同样价格,保额也严重不足。...但很多人不知道,国家早已对各大保险公司疾病进行了统一,前25种重疾病种各家保险公司定义都是相同。 所以,我们看重数量应该是,重疾条款中附加轻症和中症项目。...要不然,我们花再多钱也是白搭,更得不到风险防御效果。 买保险4个正确打开方式 买保险各种不正确姿势,每天都在我们身边上演,这么深水,怎么才能避免被坑钱呢?

2.8K20

运维告诉CPU飙升300%,为什么程序上线就奔溃了 | Java Debug 笔记

代码层面从功能上看没有任何问题但是投入使用后却让头大问题描述====系统上点击数据录入功能在全局监控中会受到相关消息通知。...然后客户注册时候将这些接口和客户端绑定在一起当我们监听程序坚挺到数据变动就会对绑定到相关接口客户端发送最新数据业务定位业务上很好定位,问题就是出现在我们监听程序中。...在这种并发场景下应该是不会出问题。现在出了问题肯定我们程序逻辑有缺陷上面是我们发送消息代码。代码也很简单。先获取所有符合发送条件客户端 。...我们1W个用户同事在线可能有5000+ 。 那么我们需要5000次以上反射着肯定是吃不消。这也是为什么本文开头说功能正常不代表业务正常。解决方案====这就是量变引起质变。...而且我们系统对数据实时性也是可以接受一定时间延迟在这里又加上缓存这样就解决了我们循环问题经过测试本次改动在CPU上大概优化了100倍。

17910

为什么程序员总是发现不了自己Bug? 程序员: 不认识他啊

因此,如何处理修复 Bug 过程也值得我们细细琢磨。 想分享一些程序员修复他们源代码时所经历想法。相信很多开发人员和软件工程师经历过这些艰辛,然后在事后一笑而过。以下你经历过哪些? 1....这种汹涌澎拜斗争是经常要面对,而且显然会困扰许多软件开发人员。 2.“为什么这个脚本需要这么多库?”...但是这一切都取决于你需要,如果你觉得在程序中间休息更令人懊恼的话,那就不要中断。 10.“应该把这个项目束之高阁,以后再来处理它。” 休息另一个选择是离开你项目,而不仅仅是远离你电脑。...“哦,天哪,以前为什么不写点注释呢?” 当涉及到比较基础前端 HTML / CSS / JS 时,我们没有必要写注释。...当我一筹莫展时,往往会选择从头开始,因为这样才有可能找到完成项目的正确道路。 为什么程序员发现不了自己 Bug? ?

1.1K10

【前端 · 面试 】JavaScript 之你不一定会基础题(二)

在捕获阶段: 浏览器检查元素最外层祖先,是否在捕获阶段中注册了一个onclick事件处理程序,如果是,则运行它。...在冒泡阶段,恰恰相反: 浏览器检查实际点击元素是否在冒泡阶段中注册了一个onclick事件处理程序,如果是,则运行它 然后它移动到下一个直接祖先元素,并做同样事情,然后是下一个,等等,直到它到达<...这两个阶段如下图所示: [bubbling-capturing] 在现代浏览器中,默认情况下,所有事件处理程序都在冒泡阶段进行注册,这也是为什么只有一个阻止冒泡方法方法 event.stopPropagation...关于 this 和 event.target ,总结如下: 在整个事件流程中,event.target 永远都指向真正触发了事件流程元素 ,即处于事件触阶段元素。...~ 学习有趣知识,结识有趣朋友,塑造有趣灵魂! 大家好,是〖编程三昧〗作者 隐逸王,公众号是『编程三昧』,欢迎关注,希望大家多多指教! 你来,怀揣期望,有墨香相迎!

53010

解析Javascript事件冒泡机制

事件阐述不是本文重点,尚未了解朋友,可以访问W3school教程 进行了解,这将有助于更好地理解以下内容 。 2.冒泡机制 什么是冒泡呢?         ...这显然不是我们想要! 我们希望是点谁显示谁信息而已。为什么会出现上述情况呢?...方法二:事件包含最初触发事件节点引用 和 当前处理事件节点引用,那如果节点只处理自己触发事件即可,不是自己产生事件处理。...比如span 点击事件,产生一个event 事件对象,event.target 指向了span元素,span处理事件时,event.currentTarget 指向也是span元素,这时判断两者相等...比如,如果span 元素处理函数没有执行冒泡终止,则事件会传到div2 上,这样会造成div2 提示信息; 方法二缺点:方法二为每一个元素都增加了事件监听处理函数,事件处理逻辑都很相似,即都有判断

57740

如何点击穿透Electron不规则窗体透明区域

在“Electron团队为什么要干掉remote模块“有详细描述。...上面的代码中,设置窗口对象监听mousemove事件,当鼠标移入窗口圆形内容区时候,不允许鼠标事件穿透。当鼠标移入透明区时,允许鼠标事件穿透。...当鼠标在圆形区域外移动时,窗口对象mousemove事件触发,event.target为document.documentElement对象(这个事件并不是在html或body元素上触发,而是在窗口对象上触发...至此,上文代码中判断成立,当鼠标在前文所述四个区域移动时,鼠标事件允许穿透。鼠标在圆形区域移动时,鼠标事件不允许穿透。...至此,上文所述判断成立,运行程序,鼠标在正方形四角区域内点击,鼠标事件具备了穿透效果。

2.6K10

「非推广」为什么说本是设计师专属『数位板』,也是程序猿+科研狗开会神器?

简介:本来是有一个绘画梦想,毕竟,这个年代少年,谁不是看着二次元长大呢。当我入手一款数位板后(可以让你用笔代替鼠标的东西,适于在电脑上绘画), 发现其作用远不止于绘画。...利用不同搜索引擎进行检索,都没有找到原作者,如果知道原作者,欢迎联系将标明出处 上面这个小漫画有趣地阐述了『人生三大错觉』: •手机来消息了?•Ta是不是喜欢?•能反杀,冲!...那么, 数位板看起来与我们这样非设计师八竿子打不着,为什么要推荐大家都花几百块钱买一个呢? 如果没有绘画需求,确实不会想到买数位板,甚至不会知道有这么个东西。...2020.10.28 给朋友讲论文板书笔记 如上,跟朋友线上讨论问题时,一般会创建一个白花花 PowerPoint ,然后: •涉及到想具体说明东西,就用 Ctrl + Alt + A 截图,...哈哈哈,觉得不差几百元的话,推荐你去购物平台搜索数位板,并且关注公众号 Piper蛋窝 ,回复 微信 加我微信,与我交流,加入(业余)设计师/程序员大本营吼吼吼~

76220

JavaScript事件详解

冒泡(Bubbling)阶段 事件将沿着DOM树向上转送,再次逐个访问目标元素祖先节点到document节点。该过程中每一步。浏览器都将检测那些不是捕捉事件监听器事件监听器,并执行它们。...事件委托 利用触发冒泡事件原理,只指定一个事件处理程序,就可以管理某一类型所有事件。...一般就是一次性将父元素绑定事件,通过判断event.target 来执行相应方法,后续添加子元素时候不用再次绑定。...在JavaScript中,添加到页面上事件处理程序数量将直接关系到页面的整体运行性能,因为需要不断与dom节点进行交互,访问dom次数越多,引起浏览器重绘与重排次数也就越多,就会延长整个页面的交互就绪时间...,这就是为什么性能优化主要思想之一就是减少DOM操作原因;如果要用事件委托,就会将所有的操作放到js程序里面,与dom操作就只需要交互一次,这样就能大大减少与dom交互次数,提高性能; 每个函数都是一个对象

69010

一篇文章搞懂前端事件监听

,进行一些事件处理; Web当中,事件在浏览器窗口中被触发,并且通过绑定到某些元素上或者浏览器窗口本身,那么我们就可以 给这些元素或者window窗口来绑定事件处理程序,来对事件进行监听。...事实上对于事件有一个概念叫做事件流,为什么会产生事件流呢?...事实上,还有另外一种监听事件方式就是从外层到内层(body -> span),这种称之为事件捕获(Event Capture); 为什么会产生两种不同处理流呢?...:事件类型; target:当前事件发生元素; currentTarget:当前处理事件元素; offsetX、offsetY:点击元素位置; 常见方法: preventDefault:...:", event.type) console.log("事件元素:", event.target, event.currentTarget) console.log("事件发生位置:",

63910

js事件防止冒泡

大家好,又见面了,是全栈君。 1. 事件目标 如今。事件处理程序变量event保存着事件对象。而event.target属性保存着发生事件目标元素。...与.target类似,这种方法也是一种纯JavaScript特性,但在跨浏览器环境中则无法安全地使用 。 只是,仅仅要我们通过jQuery来注冊全部事件处理程序。就能够放心地使用这种方法。 以下。...默认操作 假设我们把单击事件处理程序注冊到一个锚元素,而不是一个外层上,那么就要面对另外一个问题:当用户单击链接时。浏览器会载入一个新页面。...这样行为与我们讨论事件处理程序不是同一个概念,它是单击锚元素默认操作。类似地,当用户在编辑完表单后按下回车键时。会触发表单submit事件,在此事件发生后,表单提交才会真正发生。...事件传播和默认操作是相互独立两套机制,在二者不论什么一方发生时,都能够终止还有一方。假设想要同一时候停止事件传播和默认操作,能够在事件处理程序中返回false。

2.4K40

关于事件前端面试题总结

本文首发于前端面试总结@知乎专栏,各位可以通过点击文章下方阅读原来来访问原文地址 问题一览 mouseover和mouseenter两个事件有什么区别?...移动端click事件会延迟300ms触发事件回调(只在部分手机浏览器上出现)。 为什么会这样? 因为手机浏览器中需要处理如翻页这样复杂手势。...它总是引用事件处理程序附加到元素,而不是event.targetevent.target标识事件发生元素。...其实,这些问题都是想确认你是否有事件委托意识。 事件委托是指利用“事件冒泡”,只通过指定一个事件处理程序,来管理某一类型所有事件。...也就是说,当此事件处理程序被触发时,通过当前事件对象中target来确认究竟是在哪个元素触发事件,从而达到一次注册 处理多个元素触发事件目的。

1.5K50

为什么子线程更新了 UI 没报错?借此,纠正一些Android 程序一个知识误区

半小时前, XRecyclerView 群里面,一位群友私聊,问题是: 为什么子线程更新了 UI 没报错? 叫他发下代码看,如下,十分简单代码。...他用了 OkHttp 异步 enqueue 请求,并在成功后更新了 textView text。 明确一点: okhttp 同步异步回调都是在子线程里面的。...那么这样来说,按照我们被一直灌输原理: 子线程不能刷新UI,上面这段代码妥妥地爆错啊。 而我要说是: 上面的代码不一定爆错,它还会稳稳顺利执行。 你十分怀疑了? 你可以尝试下。...原因 在看到他发给我代码,onCreate 里面的部分,一切已经明了,这也是之前面试几年经验的人设过坑。下面直接讲原因,源码分析那些你们自己去看吧,你应该去看。...e.printStackTrace(); } title.setText("执行不了

1.2K70

50道JavaScript详解面试题,你需要了解一下

17、在JavaScript中使用事件委托时 例如,当我们必须侦听页面加载期间可能不存在事件时,可以使用事件委托,并在父元素上提供事件处理程序并查看event.target。...33、为什么在导入模块时使用别名? 大多数时候,我们处理具有默认命名约定简单导入,除此之外,有时我们不得不处理名称,因为有的名称较长。在这种情况下,使用别名是有帮助。...是的,这些事件处理程序是Web API一部分。 37、创建新对象三种可能方法是什么?...event.currentTarget随着事件起泡而变化,event.target保持不变。 41、Array sort()方法默认排序是什么? 按字符值从最小到最大。 42、什么是比赛条件?...阴影DOM API提供了一种隐藏单独DOM,附加到不是通过正常访问元件JS DOM操作API。它提供Web组件封装。

3.5K40
领券