18

我正在使用Robert Nyman 的脚本来获取文档中具有相同类的所有元素,但它不适用于 onclick 或任何其他事件:

var photo = document.getElementsByClassName("photo_class","img",document.getElementById("photo_wrap")); 
photo.onclick = function(){alert("Finaly!");

也许你知道如何解决它?谢谢!

4

5 回答 5

28

我猜照片是一个数组。如果是这种情况,请尝试:

var photo = document.getElementsByClassName(
    "photo_class","img",document.getElementById("photo_wrap")
);

for (var i=0; i < photo.length; i++) {
    photo[i].onclick = function(){
        alert("Finaly!");
    }
};
于 2012-12-02T08:14:49.033 回答
6

尝试

photo[0].onclick = function(){alert("Finaly!");};

getElementsByClass 返回数组

于 2012-12-02T08:09:29.750 回答
3

你有没有机会尝试这样做?

var photo = document.querySelector("#photo_wrap img.photo_class");
photo.onclick = function() {alert("Hello!");};
于 2012-12-02T08:10:28.677 回答
2

getElementsByClassName接受一个参数,类名并返回一个节点列表

如果您希望类名为“photo_class”的“photo_wrap”中的 <img> 元素采用相同的事件处理程序,则可以执行以下操作

var container = document.getElementById('photo_wrap');
var elements = container.getElementsByTagName('photo_class');
for(var x = 0; x < elements.length; x++) {
    // ignore anything which is not an <img>
    if(elements[x].nodeName != "IMG") {
       continue;
    }

    elements[x].addEventListener("click",function(){

      // do something when element is clicked
      this.style.backgroundColor = 'red'; // change element bgcolor to red

    },false);
}
于 2012-12-02T08:15:30.493 回答
-4

使用 jquery,您可以轻松地定位具有特定类的所有元素并为其分配 onclick 事件,如下所示:

$(".photo_class").click(function(){
                            alert("Finally!")});

如果要定位具有 id 的特定元素,则可以使用以下调用:

$("#photo_element_id").click(function(){
                            alert("Finally!")});
于 2012-12-02T08:16:17.490 回答