JavaScript:单击相同类名的事件

JavaScript:单击相同类名的事件,javascript,Javascript,我有以下代码片段。问题是第二个标签的onclick事件没有触发,该标签与第一个标签具有相同的类。为什么呢? 我在网上搜索并找到了多个解决方案,但都在jQuery中。但我希望它是纯JavaScript的。有人知道我做错了什么吗 var label=document.getElementsByClassName('text'); 标签[0]。onclick=function(){ console.log(true); }; 你好 世界var label=document.getElementsBy

我有以下代码片段。问题是第二个标签的
onclick
事件没有触发,该标签与第一个标签具有相同的类。为什么呢? 我在网上搜索并找到了多个解决方案,但都在jQuery中。但我希望它是纯JavaScript的。有人知道我做错了什么吗

var label=document.getElementsByClassName('text');
标签[0]。onclick=function(){
console.log(true);
};
你好
世界
var label=document.getElementsByClassName('text');
对于(var i=0;i您可以使用:

document.body.onclick=函数(ev){
if(ev.target.getAttribute(“类”)=“文本”){
console.log(true);
}
};
你好
World!
label
是所有元素的数组,类为
text
,因此
label[0]
将只应用于文档中的第一个元素。最简单的方法可能是使用循环,如

for (var i = 0; i<label.length; i++){
    label[i].onclick = function() {
        console.log(true);
};
for(var i=0;i试试这个

var label = document.getElementsByClassName('text');
for (var i = 0; i < label.length; i++) {
    label[i].onclick = function() {
        console.log(true);
    };
}
var label=document.getElementsByClassName('text');
对于(变量i=0;i
getElementsByClassName
返回一个节点数组(集合),并且您只将函数应用于第一个
[0]
element如果有更复杂的DOM结构,最好将此方法应用于第一个父容器。但使用委派+1是一个很好的方向
var label = document.getElementsByClassName('text');
for (var i = 0; i < label.length; i++) {
    label[i].onclick = function() {
        console.log(true);
    };
}