javascript - 为什么当我在事件监听器中时我的变量会初始化?

标签 javascript html function variables initializing

你好,

这是我的问题。我有这个 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/

相关文章:

html - Bootstrap 4 navbar-toggler 位置随定义的高度变化?

html - 在不同的行上向右浮动和向左浮动

Javascript 函数数组

c++ - 模板,没有调用错误的匹配函数

javascript - jquery部分展开和折叠

javascript - 在 NextJS/React 中加载 Skeleton 实现

javascript - jquery多个不同的id与一个变量

javascript - 警告框关闭后如何将按钮的文本更改为 "No Sign Ups!"?

javascript - 将 HTML DIV 转换为可重用的全局函数?也许是 JavaScript?

javascript - 将变量传递给 chrome.tabs.onUpdated.addListener() - Chrome 扩展