我有一个页面可以渲染许多具有相同类名的div;
这样的事情有可能没有循环吗?
var elements = document.getElementsByClassName('className of divs');
elements[*].onclick = function(){
alert('I can click any of the divs now!');
};
* =任何数字
最佳答案
如果要向每个元素添加事件处理程序,则需要访问每个元素并依次应用事件处理程序。为此,您必须使用一个循环(或类似map
之类的循环(请注意,由于getElementsByClassName
返回HTMLCollection,而不是数组,因此它没有本机映射函数))。
您的另一种选择是使用事件委托(将事件处理程序放在祖先元素上,然后检查event.target
并在事件时间而不是绑定时间测试类成员)。