定位getelementsByClassName数组的任何元素?

时间:2015-02-23 17:47:08

标签: javascript

我有一个页面,它呈现了许多相同类名的div;

这样的事情可能没有循环吗?

var elements = document.getElementsByClassName('className of divs');
elements[*].onclick = function(){
    alert('I can click any of the divs now!');
};

* =任意数字

2 个答案:

答案 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并在事件时测试类成员资格而不是绑定时间。)