Javascript 如何检查是否单击了具有特定ID的元素?

Javascript 如何检查是否单击了具有特定ID的元素?,javascript,Javascript,所以我有以下几个div <div id="az" class="d_1" value="data1"></div> <div id="az" class="d_2" value="data2"></div> <div id="by" class="d_3" value="data3"></div> <div id="az" class="d_4" value="data4"><

所以我有以下几个div

    <div id="az" class="d_1" value="data1"></div>
    <div id="az" class="d_2" value="data2"></div>
    <div id="by" class="d_3" value="data3"></div>
    <div id="az" class="d_4" value="data4"></div>


如果单击了
az
div而没有将
onClick=“reply\u click(this)”
添加到每个div中,如何仅检查

id
属性必须始终是唯一的:

您的class和id属性的结构与它们应该的结构相反。类可以是非唯一的,以引用一组元素

下面是如何使用
addEventListener
和类css选择器来实现所需的示例

功能回复\u点击(){
console.log(this.getAttribute('value'));
}
document.getElementsByClassName('az').forEach(el=>el.addEventListener('click',reply_click))
1
2.
3.

4
在交换ID和类并使用数据属性后,您需要委派,因为ID需要唯一,而div没有值

window.addEventListener(“加载”,函数(){//on page load
document.getElementById(“容器”).addEventListener(“单击”),函数(e){//单击容器中的任何内容
const tgt=e.target;//事件目标(单击的内容)
如果(tgt.classList.contains(“az”){//ignore单击“by”
log(“az单击”,tgt.dataset.value)
}
})
})

D1
D2
D3
D4

为什么您有3个ID相同的(!)div?这是一个无效的HTMLI,我认为您需要交换id和类,然后使用document.getElementsByClassName(“az”)。正如上面指出的,ID应该是唯一的(你的类是唯一的)
[…document.queryselectoral('.az')]。forEach
更易于阅读-只读IE不处理
文档。queryselectoral('.az')。forEach
还可以更好地使用Array.from,但是,对于刚刚学习onclick的人来说,您打算如何以一种足够简单的方式表达事件委托关系呢?我的只比您的多了一个addEventListener;)事实上,我甚至不完全确定我应该使用addEventListener作为示例,而不是简单的onclick,因为它与他正在做的事情更接近。但对,我同意这更好。