javascript - 如何:“使用 JavaScript for 循环更新数组中的值”
问题描述
我正在创建一个网页,我想在其上隐藏/显示某些 div。为此,我创建了一个 for 循环来将 style.display 更改为none
or 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 = [];
}
}
解决方案
您array1
在if
andelse
块中声明了一个新变量。您在其中声明的这个变量的范围仅限于声明它的相应块。
相反,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 = [];
}
}
差异: array1 = [...];
而不是var 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 = [];
}
//just for displaying array value
document.getElementById("array-value").innerHTML = JSON.stringify(array1);
}
<div id="text_box_right">THIS IS THE BOX</div>
<button type="button" onclick="hideRightBlock()">toggle</button>
<br/>
<br/>
<div id="array-value"></div>
推荐阅读
- c - 接受并返回指针的函数指针
- c++ - 修改后的二分搜索算法超过时间限制
- javascript - Unexpected behavior mixing process.nextTick with async/await. How does the event loop work here?
- javascript - React 16.7 有 State Hook,我可以在任何情况下使用函数组件而不是类组件吗?
- javascript - 如何打开 B 对话框 + 关闭 A 对话框(帮助)
- python - python新手,我收到一个属性错误
- android - 在android中获取多条送货短信
- javascript - 从具有新值Angular / Ionic 3的现有对象创建新对象
- hadoop - 通过 Phoenix View 直接使用 upsert 到 hbase 表
- c++ - 为音频/DSP 实现 Z-1 单元延迟功能的最简单方法?