如何:';使用JavaScript for循环更新数组中的值';

如何:';使用JavaScript for循环更新数组中的值';,javascript,arrays,Javascript,Arrays,我正在创建一个网页,我想在其中隐藏/显示某些div。为此,我创建了一个for循环,将style.display更改为none或block。使用相同的for循环,我同时想要更新一个数组 当我隐藏div时,数组应该是空的。但是当我显示div时,它应该包含下面列出的值[65、59、80、81、56、55] 我的问题是,;数组在循环内部更新,但不在循环外部更新。为什么不在循环外更新阵列 输出应该是一个更新的数组,可以在for循环外部使用。 var array1 = []; function hideRi

我正在创建一个网页,我想在其中隐藏/显示某些div。为此,我创建了一个for循环,将style.display更改为
none
block
。使用相同的for循环,我同时想要更新一个数组

当我隐藏div时,数组应该是空的。但是当我显示div时,它应该包含下面列出的值
[65、59、80、81、56、55]

我的问题是,;数组在循环内部更新,但不在循环外部更新。为什么不在循环外更新阵列

输出应该是一个更新的数组,可以在for循环外部使用。

var array1 = [];
function hideRightBlock() {
    var x = document.getElementById("text_box_right");
    if (x.style.display === "none") {
        x.style.display = "block";
        var array1 = [65, 59, 80, 81, 56, 55];
    } else {
        x.style.display = "none";
        var array1 = [];
    }
}

您正在
if
else
块内声明一个新变量
array1
。您在其中声明的这个变量的作用域是它在其中声明的相应块。
而是从函数外部修改
array1

var array1 = [];
function hideRightBlock() {
    var x = document.getElementById("text_box_right");
    if (x.style.display === "none") {
        x.style.display = "block";
        array1 = [65, 59, 80, 81, 56, 55];
    } else {
        x.style.display = "none";
        array1 = [];
    }
}
DIFF:
array1=[…]而不是
var array1=[…]

可运行示例

var数组1=[];
函数hideRightBlock(){
var x=document.getElementById(“文本框右”);
如果(x.style.display==“无”){
x、 style.display=“block”;
数组1=[65,59,80,81,56,55];
}否则{
x、 style.display=“无”;
阵列1=[];
}
//仅用于显示数组值
document.getElementById(“数组值”).innerHTML=JSON.stringify(array1);
}
这是盒子
切换



最好启动变量一次
var…
。但我认为这不可能是你的问题。检查元素显示可能有误。最好通过
getComputedStyle
检查元素显示,因为
style.display
只知道内联样式元素,而不知道外部元素

检查下面的插图

var数组1=[];
函数hideRightBlock(){
var x=document.getElementById(“文本框右”);
var computeStyle=window.getComputedStyle(x);
如果(computeStyle.display==“无”){
x、 style.display=“block”;
var array1=[65,59,80,81,56,55];//更好的array1=[65,59,80,81,56,55];
}否则{
x、 style.display=“无”;
var array1=[];//更好的array1=[];
}
控制台日志(array1);
}
#文本框(右){
显示:无;
}
这是文本框右侧

显示/隐藏
您正在条件块内初始化数组,只需将值赋给itOh,这很有意义!虽然它仍然没有更新数组…我添加了一个可运行的示例-它似乎有效!啊,我这边有个问题!非常感谢你!让我猜猜:您的文本框的id不是
text\u-box\u-right
,而是
\text\u-box\u-right
?:)很乐意帮忙!哈哈哈,了解我,这可能就是问题所在。但实际上,这是一个不正确放置的卷曲括号。再次感谢!