2012-03-07 11 views
0

この問題の解決策はおそらくかなり簡単ですが、私はいくつかの助けが必要です。addEventListenerがクリックで機能をトリガーしない

var x; 
for(x in document.getElementsByTagName("img")) 
    x.addEventListener('click',openPage, false); 

function openPage() { 
    alert("clicked"); 
} 

私は<img src="something" />タグをクリックし、アラートが届きません。誰でも知っている理由は?また、私のループは必要ですか?

答えて

1

このコードはfor..inステートメントで 'x'がオブジェクトのキー(この場合はdocument.getElementsByTagName呼び出し)を生成します。何が欲しいのです:

var x, 
    imgs = document.getElementsByTagName("img"); 

for(x in imgs) { 
    if (imgs[x] instanceof Element) { 
     imgs[x].addEventListener('click',openPage, false); 
    } 
} 

function openPage() { 
    alert("clicked"); 
} 

は、私のようなコードを簡素化することができますJavaScriptフレームワーク(のようなjQuery)、使用することをお勧めかもしれません:

$('img').each(function() { 
    $(this).click(function() { 
     alert('Clicked!'); 
     // Now that we're in the callback context, $(this) will be the current 
     // target - the specific image that was clicked. 
     // i.e. $(this).fadeOut() would slowly fade out the clicked image. 
    }); 
}); 
+0

を私はあなたがjavascriptのために掲載のコードを試してみましたが、それは動作しませんでした.. – Dbz

+0

これを見て:http://jsfiddle.net/RZ2wC/ – Dbz

+0

申し訳ありませんが、小さな関数の単語の誤字。私はそれを修正し、私がそれをしていた間にループでもう少し検証を加えました。 :) – Morgon

関連する問題