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

为何表格行点击事件的event.target是单元格而非行?

为什么点击表格行时事件target是单元格而非行?

这不是操作错误,是DOM事件的事件冒泡机制导致的:

  • event.target代表的是实际被点击的最内层DOM元素,你点击的是单元格<td>,所以它自然就是target,哪怕事件监听器是绑在父元素<tr>上的。
  • 而event.currentTarget才是绑定了事件监听器的元素,也就是你真正关注的<tr>,直接用它就能获取data-index,不用去取parentElement。

修改你的handler函数就能解决问题:

function handler ( event ) {
  console.log( event.target.innerText ); // 依然能拿到点击的单元格内容
  console.log( event.currentTarget.getAttribute( "data-index" ) ); // 直接获取行的data-index
}

再补充下事件冒泡的逻辑:当你点击单元格时,事件会从<td>开始向上逐层冒泡(依次经过<tr>、<table>、<body>等),绑定在<tr>上的监听器会在事件冒泡到<tr>时触发,但target始终指向最初被点击的那个元素,也就是<td>。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:27:36