有什么方法可以将事件监听器添加到类中吗?

时间:2019-06-26 00:53:15

标签: javascript html

因此,我正在制作一个网络托管游戏,并且试图将一个事件添加到一个类中。

我在网络上找不到真正有用的信息,因此我尝试使用

document.getElementsByClassName("class").addEventListener("click", function(){…}); 

我希望它测试是否单击了类中的某个项目,但它仍会像这样发生错误-BattleMode.js:4 Uncaught TypeError:document.getElementsByClassName(...)。addEventListener不是一个函数     在BattleMode.js:4;如果我尝试执行其他任何操作,将无法检测到具有某些属性的div。

1 个答案:

答案 0 :(得分:2)

是的。只需记住getElementsByClassName()是复数形式-元素 s

var elements = document.getElementsByClassName("class");

for (var i=0; i<elements.length; i++) {
    elements[i].addEventListener("click", function(){…});
}

请注意,getElementsByClassName()不返回数组。而是返回一个NodeList,它是一个类似数组的对象。因此,无法使用诸如.map().forEach()等常用的数组方法。 NodeList确实具有.length属性,因此您可以对其进行迭代。

不过,您可以使用Array.fromslice()将它们转换为数组:

Array.from(document.getElementsByClassName("class"))
    .forEach(function(element){
        element.addEventListener("click", function(){…});
    });
相关问题