You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

事件监听器中,click target如何指向被点击的按钮?

为什么x.target能指代被点击的按钮?

这是JavaScript事件机制的标准行为,拆解来看:

  1. 事件对象会自动传入回调
    当你调用addEventListener绑定点击事件时,浏览器检测到用户点击对应元素后,会自动生成一个事件对象(Event),并把这个对象作为参数传给你的回调函数。你这里把这个参数命名为x(通常大家习惯叫e、evt或者event),它就是这个内置的事件对象。

  2. target属性指向触发事件的源头元素
    事件对象上的target属性,专门用来表示用户实际触发事件的最底层DOM元素。在你的代码里,监听器直接绑定在按钮元素上,用户点击的就是这个按钮,所以x.target自然就指向被点击的那个按钮DOM节点,你也就可以通过它访问按钮的dataset.id属性。

举个和你代码对应的场景:
假设循环到第1个按钮,你给它绑定了点击监听器,用户点击这个按钮时,浏览器就把事件对象传给回调里的x,x.target就是这个按钮元素,x.target.dataset.id就能拿到按钮上的data-id值。

另外补充个小细节:和target类似的还有currentTarget属性,它指向绑定监听器的那个元素。在你的场景里,因为监听器直接绑在按钮上,所以x.target和x.currentTarget是同一个元素;但如果按钮内部还有子元素(比如<button><span>点击</span></button>),用户点击span时,target是span,currentTarget还是按钮。


内容的提问来源于stack exchange,提问作者easymoneysniper23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:17:08