2010-07-12 3 views
-1

특정 요소를 마우스로 클릭 한 좌표를 배열의 끝으로 밀어 넣으려고합니다.마우스 클릭 위치를 자바 스크립트의 배열로 푸시

var seatsArray = []; 

본문에 : 머리에

: 이것은 내가 무엇을 간단

아마
var coordinates = document.getElementById("image"); 
coordinates.onclick = function(event) { 
    seatsArray.push(offsetX, offsetY); 
} 
document.write("Seats array contains: " + seatsArray + "."); 

뭔가,하지만 난 자바 스크립트에 새로 온 사람, 그래서 어떤 감사하겠습니다 왜 그것이 효과가 없는지에 관해서는 도움을!

coordinates.onclick = function(event) { 
    event = event || window.event; 
    if (!window.event) { // thanks firefox 
    event.offsetX = event.layerX; 
     event.offsetY = event.layerY; 
    } 
    seatsArray.push(event.offsetX, event.offsetY); 
} 

파이어 폭스 offsetX/Y가 layerX/Y이며, 즉 글로벌 이벤트 객체를 가지고 :

감사

+2

무엇에 상대적으로 "좌표"? 문서의 시작 부분, "이미지"요소, 뷰포트? –

+0

id가 "image"인 요소를 기준으로합니다. – IceDragon

+0

센터 또는 가장자리에서부터 거리가 있습니까? 당신이 물을 때 당신은 더 구체적 일 수 있습니다. – galambalazs

답변

1

두 내가 볼 일이에 클릭 이벤트에 변경.

하지만 당신의 Wnt 글로벌 좌표,이 시도하는 경우 :

coordinates.onclick = function(e) { 
e = e || window.event; 

if (e && e.pageX && e.pageY) { 
      e.posX = e.pageX; 
      e.posY = e.pageY; 

     } else if (e && e.clientX && e.clientY) { 
      var scr  = {x:0,y:0}, 
       object = e.srcElement || e.target; 
      //legendary get scrolled 
      for (;object.parentNode;object = object.parentNode) { 
       scr['x'] += object.scrollLeft; 
       scr['y'] += object.scrollTop; 
      } 
      e.posX = e.clientX + scr.x; 
      e.posY = e.clientY + scr.y; 
     } 
seatsArray.push(e.posX, e.posY); 
} 
+0

아 맞습니다. document.write는 내가 지정한 텍스트 만 출력하고 이미지를 클릭하면 좌표가 표시되지 않으므로 배열로 전달되지 않는 것 같습니다. 감사합니다. – IceDragon

+0

그러나 전역 스크립트는 완벽하게 보이지만 여전히 document.write의 배열 출력은 없습니다. "이미지"요소가 확대/축소 및 팬 가능 ()이라는 사실과 관련이 있을까요? 감사합니다. – IceDragon

+0

@IceDragon :'click' 처리기에서'document.write' 호출을 실행하고 있습니까? –

관련 문제