Javascript 如何从tr元素获取数据集
我正在做我的react项目,我在我的Javascript 如何从tr元素获取数据集,javascript,html,reactjs,Javascript,Html,Reactjs,我正在做我的react项目,我在我的元素中放置了一个onClick函数和数据集,如下所示 <tr key={index} onClick={ev} data-ti={ddd.id} className={classs}> function ev(e){ const {ti} = e.target.dataset console.log(ti) // returns undefined } 它不是返回一个id,而是返回未定义的id。我是否做错了什么事,或者可能有另
元素中放置了一个onClick
函数和数据集,如下所示
<tr key={index} onClick={ev} data-ti={ddd.id} className={classs}>
function ev(e){
const {ti} = e.target.dataset
console.log(ti) // returns undefined
}
它不是返回一个id,而是返回未定义的id。我是否做错了什么事,或者可能有另一种方法来做这件事,很可能你不是点击
tr
,而是点击了里面的td
。因此,您需要首先获取该td
的parentNode
,然后获取数据属性
const tr=document.querySelector('tr');
tr.addEventListener('click',handleClick,false);
函数handleClick(e){
常量{target:{parentNode}}=e;
const{dataset:{ti}}=parentNode;
控制台日志(ti);
}
试验
您可以简单地在onClick中使用所需值的变量设置事件,比如onClick={ev(ddd.id)}
这是一种方法,但我很惊讶e.target.dataset
不起作用。可能使用currentTarget
来代替?event.target
是单击的元素,this
是其处理程序调用侦听器的元素,因此let ti=this.dataset.ti
非常简单且更有效。这假定单击是在td上。最好使用let tr=e.target.closest('tr');让ti=tr?tr.dataset.ti:null
也有点语义化。我总是忘记最近的
。谢谢你的提醒@罗布