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>
폐쇄 내에서 이벤트 수신기 핸들러를 래핑해야합니다. – epoch
예상되는 결과는 무엇입니까? – Nit
'alert.' 다음에'position.y'를'0'으로 설정하면 이벤트 핸들러에서'position.y'가'0'입니다. 'position'은 모든 핸들러에 대해 같은 객체입니다. 모든 처리기에 대해 '3'이되는 'i'와 동일합니다. –