Javascript 单击元素或其子元素时如何获取该元素的数据属性
我正在做一张桌子Javascript 单击元素或其子元素时如何获取该元素的数据属性,javascript,html,onclick,custom-data-attribute,Javascript,Html,Onclick,Custom Data Attribute,我正在做一张桌子 document.querySelector('table')。addEventListener('click',(e)=>{ console.log(如target); console.log(e.target.dataset.item); }) td{ 填充:8px; 边框:1px纯黑; 背景颜色:蓝色; } 跨度{ 背景色:红色; 填充:4px; } 1. 2. 3. 4. 5. 检查单击元素的名称是否为span使用属性选择其父元素 document.querySe
document.querySelector('table')。addEventListener('click',(e)=>{
console.log(如target);
console.log(e.target.dataset.item);
})
td{
填充:8px;
边框:1px纯黑;
背景颜色:蓝色;
}
跨度{
背景色:红色;
填充:4px;
}
1.
2.
3.
4.
5.
检查单击元素的名称是否为span
使用属性选择其父元素
document.querySelector('table')。addEventListener('click',(e)=>{
var ele=e.target.nodeName==“SPAN”?e.target.parentNode:e.target;
日志(ele.dataset.item);
})
td{
填充:8px;
边框:1px纯黑;
背景颜色:蓝色;
}
跨度{
背景色:红色;
填充:4px;
}
1.
2.
3.
4.
5.
尝试通过您的子标记使用最近的
,而不是数据集
document.querySelector('table')。addEventListener('click',(e)=>{
console.log(例如target.closest(“td”).dataset.item);
})
td{
填充:8px;
边框:1px纯黑;
背景颜色:蓝色;
}
跨度{
背景色:红色;
填充:4px;
}
1.
2.
3.
4.
5.
你为什么先听整张桌子
仅收听“td”元素:
let cells = document.getElementsByTagName('td');
for (var i=0; i < cells.length; i++) {
let cell = cells[i];
cell.addEventListener('click', (e) => {
let element = e.target.nodeName;
if (element === 'TD') {
console.log(e.target.dataset.item);
} else if (element === 'SPAN') {
console.log(e.target.parentNode.dataset.item);
}
});
}
您可以检查单击项的数据集中的键,如果它确实有一些属性,则使用
e.target
,否则向上移动一级e.target.parentNode
:
document.querySelector('table')。addEventListener('click',(e)=>{
var el=Object.keys(e.target.dataset).length?
e、 目标:e.target.parentNode;
console.log(el.dataset.item);
})
td{
填充:8px;
边框:1px纯黑;
背景颜色:蓝色;
}
跨度{
背景色:红色;
填充:4px;
}
1.
2.
3.
4.
5.
您可以使用e.target.closest(“[data item]”)。dataset.item
,如果。谢谢您的回答:)谢谢您的回答:)这是我找到的完美答案。因为在我的表中,
是动态呈现的
table {
background-color: orange;
border-spacing: 10px;
}