2012-01-18 2 views
1

좋습니다. documents.images 배열에 10 개의 이미지가 있습니다. 이미지를 클릭하면 내가 클릭 한 이미지를 알려주는 알림을 얻으려면 어떻게해야합니까? 내가 이벤트 및 이전 방법에 바인딩하려고자바 스크립트에서 클릭 한 현재 이미지의 번호를 얻는 방법

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

이 작동하지 않는 것 때문에

편집 내가 클릭 이미지의 인덱스를 원하는 이유는 문은 for 루프에 있고 모든 이미지에 바인딩하려고했지만 작동하지 않는 것 같습니다.

+0

jQuery를 사용하고 계신가요? 그것으로 그런 것이 사소한 것이됩니다. –

+0

시도한 코드를 공유 할 수 있습니까? – Unknown

+0

아니, 아직 jquery를 사용하지 않는, 그리고 할당 의이 부분에 대해 나는 비 jquery 솔루션을 찾는 것이 가장 좋을 것이라고 생각합니다. –

답변

2

가 여기에 그 작업을 수행하는 순수 자바 스크립트 방법 :

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. http://jsfiddle.net/kmendes/8LUzg/1/

가 너무 아래에있는 함수를 추가 그것은 오래된 브라우저에서 작업 할 경우

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> 
관련 문제