2015-01-03 5 views
1

안녕하세요,이벤트 수신기에있을 때 변수가 초기화되는 이유는 무엇입니까?

여기 내 문제입니다. 내가 입력 할 때이 자바 스크립트 내 변수에 할당 된 값을 유지하지 않습니다 "위치"라는있는

under[i].addEventListener("click", function(){ 

      alert(position.y + " " + position.x); 

      score[i].setAttribute("style","-webkit-transform: translateY(-" + position.y + "px); -webkit-transition: .5s ease-in-out .01s;"); 

      under[i].classList.add("popout"); 
      score[i].classList.add("popScore"); 

      under[i].classList.remove("underlayer_score"); 
      score[i].classList.remove("scores_teams"); 

     }); 

그것은 이상한 내가 전이나 값이 여전히 변수에 할당이의 EventListener 후 검사 할 때 때문이다. 나는 아직도 자바에서 초보자이므로 미안하지만 내 설명이 분명하지 않다.

도움 주셔서 감사합니다. 여기

는 자바 스크립트입니다 : 어쩌면

<script> 

    var under = new Array(10); 
     score = new Array(10); 

    var position = 0; 

    for(var i = 0; i <= 2; i++){ 

     under[i] = document.getElementsByClassName('underlayer_score')[i]; 
     score[i] = document.getElementsByClassName('scores_teams')[i]; 

    } 

    function getPosition(element) { 
     var xPosition = 0; 
     var yPosition = 0; 

     while(element) { 
      xPosition += (element.offsetLeft - element.scrollLeft + element.clientLeft); 
      yPosition += (element.offsetTop - element.scrollTop + element.clientTop); 
      element = element.offsetParent; 
     } 
     return { x: xPosition, y: yPosition }; 
    } 


    for(var i = 0; i <= 2; i++){ 

     position = getPosition(score[i]); 

     under[i].addEventListener("click", function(){ 

      alert(position.y + " " + position.x); 

      score[i].setAttribute("style","-webkit-transform: translateY(-" + position.y + "px); -webkit-transition: .5s ease-in-out .01s;"); 

      under[i].classList.add("popout"); 
      score[i].classList.add("popScore"); 

      under[i].classList.remove("underlayer_score"); 
      score[i].classList.remove("scores_teams"); 

     }); 

     alert(position.y); 

     position.x = 0; 
     position.y = 0; 

    } 

</script> 
+1

폐쇄 내에서 이벤트 수신기 핸들러를 래핑해야합니다. – epoch

+0

예상되는 결과는 무엇입니까? – Nit

+0

'alert.' 다음에'position.y'를'0'으로 설정하면 이벤트 핸들러에서'position.y'가'0'입니다. 'position'은 모든 핸들러에 대해 같은 객체입니다. 모든 처리기에 대해 '3'이되는 'i'와 동일합니다. –

답변

1

당신이 window.position 안에 무엇이 확인하려고 하는가? 글로벌 포지션이 아닌가?