因此,我正在制作一个网络托管游戏,并且试图将一个事件添加到一个类中。
我在网络上找不到真正有用的信息,因此我尝试使用
document.getElementsByClassName("class").addEventListener("click", function(){…});
我希望它测试是否单击了类中的某个项目,但它仍会像这样发生错误-BattleMode.js:4 Uncaught TypeError:document.getElementsByClassName(...)。addEventListener不是一个函数 在BattleMode.js:4;如果我尝试执行其他任何操作,将无法检测到具有某些属性的div。
答案 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.from
或slice()
将它们转换为数组:
Array.from(document.getElementsByClassName("class"))
.forEach(function(element){
element.addEventListener("click", function(){…});
});