我有一个页面,它呈现了许多相同类名的div;
这样的事情可能没有循环吗?
var elements = document.getElementsByClassName('className of divs');
elements[*].onclick = function(){
alert('I can click any of the divs now!');
};
* =任意数字
答案 0 :(得分:3)
简短而甜蜜的方式......
var elements = document.getElementsByClassName('className of divs');
[].forEach.call(elements, function(e){
e.onclick = function(){
alert('I can click any of the divs now!');
};
});
答案 1 :(得分:1)
如果要为每个元素添加事件处理程序,则需要访问每个元素并依次应用事件处理程序。为此你必须使用一个循环(或类似循环的东西,如map
(注意,因为getElementsByClassName
返回一个HTMLCollection,而不是一个数组,它没有一个本机映射函数)。
您的另一个选择是使用事件委派(将事件处理程序放在祖先元素上,然后检查event.target
并在事件时测试类成员资格而不是绑定时间。)