[英]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.