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 に答える
2

getElementsByClassName1 つのパラメータ (クラス名) を取り、ノード リストを返します

クラス名が「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 に答える