繁体   English   中英

全局变量不更新外部函数

[英]Global variable not updating outside function

到目前为止,试图使在函数内部创建的变量可以全局访问

console.log(proper_head);

每次执行函数时我都需要更新它时不断显示“1”,这是我的函数:

var i = 0;
function change_head() {
    if (i < head_class.length) {
        head.classList.add(head_class[i].name);
        i++;
        var h = i;
        return h;
    } else if (i = 3) {
        head.className = "";
        i -= 3;
        var h = i;
        return h;
    }
}
var proper_head = change_head();

它是通过按下一个按钮来执行的(不确定它是否重要)。 我想出的唯一解决方案是

 setTimeout()

我相信有更好的方法。

您可以使用这样的递归实现:

var i = 0;
function change_head() {
    if (i < head_class.length) {
        head.classList.add(head_class[i].name);
        i++;
        var h = i;
        return h;
    } else if (i = 3) {
        head.className = "";
        i -= 3;
        var h = i;
        return h;
    }
change_head();
}

问题是您的函数仅被调用一次,您可以从其内部调用该函数,但是上面的示例永远不会停止,并且可能会在浏览器中达到最大调用堆栈大小然后崩溃,我建议将其包装起来在某种 if 语句中,使其在某个点停止,例如 i > 50。

编辑:

我明白你的实际问题是什么,你的 if 块都没有触发,第一次按下后,head_class.length === 1 所以“if (i < head_class.length)”不会触发,它也不等于 3 else 块所以什么也没发生,else 块也有错误,尝试将其更改为:

if (i < 3) {
        head.classList.add(head_class[i].name);
        i++;
        var h = i;
        return h;
    } else if (i == 3) {
        head.className = "";
        i -= 3;
        var h = i;
        return h;
    }

i = 3 用于赋值,i == 3 用于比较。

希望这可以帮助

劳埃德

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM