Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从tr元素获取数据集_Javascript_Html_Reactjs - Fatal编程技术网

Javascript 如何从tr元素获取数据集

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。我是否做错了什么事,或者可能有另

我正在做我的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。我是否做错了什么事,或者可能有另一种方法来做这件事,很可能你不是点击
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
也有点语义化。我总是忘记最近的
。谢谢你的提醒@罗布