我有一个页面可以渲染许多具有相同类名的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并在事件时间而不是绑定时间测试类成员)。

09-25 18:32
查看更多