你好,
这是我的问题。我有这个 Javascript,当我输入
时,我的名为“position”的变量不会保留分配的值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");
});
这很奇怪,因为当我在这个事件监听器之前或之后检查时,值仍然分配在该变量中。我仍然是 Javascript 的初学者,所以如果我的解释不太清楚,我很抱歉。
感谢您的帮助。
这是 Javascript:
<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>
最佳答案
也许你应该尝试检查 insIde window.position 是什么?难道这个位置不是全局性的吗?
关于javascript - 为什么当我在事件监听器中时我的变量会初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27758469/