2012-01-18 16 views
1

私はdocuments.images配列の10の画像を持っています。私が画像をクリックすると。私がクリックした画像を教えてくれます。私はイベントと前の道にバインドしようとしていますjavascriptでクリックした現在の画像の番号を取得するには

document.images[i].addEventListener("click", function(){MakeMove(i)}, false); 

これを動作するようには思えないので、

EDIT 私は私がクリックした画像のインデックスをしたい理由がありますステートメントはforループにあり、すべてのイメージにバインドすることを意図しましたが、それは動作していないようです。ここで

+0

jQueryを使用している可能性はありますか?そのようなことは簡単になります。 –

+0

あなたは試したコードを共有できますか? – Unknown

+0

まだ、jqueryを使用していないので、割り当てのこの部分では、非jqueryソリューションを見つけるのが最善であると信じています。 –

答えて

2

はそれを行うには、純粋なJavaScriptの方法です:

window.onload = function() { 
    for (var i = 0; i < document.images.length; i++) { 
     var image = document.images[i]; 
     image.setAttribute("index", i + ""); 
     image.onclick = function() { 
      var index = this.getAttribute("index"); 
      alert("This is image #" + index); 
     }; 
    } 
}; 

トリックは、その属性を読んで、その後、インデックスとカスタム属性を割り当てています。

Live test case

0

終了タグの直前

<script type="text/javascript"> 
function listen(evnt, elem, func) { 
    if (elem.addEventListener) { // W3C DOM 
     elem.addEventListener(evnt,func,false); 
    } else if (elem.attachEvent) { // IE DOM 
     var r = elem.attachEvent("on"+evnt, func); 
     return r; 
    } 
} 


listen("click", document.getElementsByTagName("body")[0], function(event) { 
    var images = document.images, 
     clicked = event.target; 
    for(var i =0, il = images.length; i<il;i++) { 
     if(images[i] === clicked) { 
      return alert("You clicked on the " + (i + 1) + "th image"); 
     } 
    } 

}); 
</script> 
0
window.onload = function() { 
    for (var i = 0; i < document.images.length; i++) { 
     var image = document.images[i]; 
     image.onclick = function() { 
      var images = Array.prototype.slice.call(document.images); 
      alert(Array.indexOf(images,this)); 
     } 
    }; 
}; 

、htmlファイルの一番下にJSFiddleこれを入れて:あなたは、それは古いブラウザ上で動作するようにしたい場合は、あまりにも下に機能を追加しhttp://jsfiddle.net/kmendes/8LUzg/1/

を互換性:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf

関連する問題