我正在尝试保存从“onclick”中检索到的值,并且还会在单击按钮时将以前从“onclick”中检索到的值保存在不同的数组中。
但似乎在使用“for loop”时,新检索的值会覆盖以前检索到的数据,即使这些值分别保存在不同的数组中。
我现在真的很困惑,有人知道为什么吗?
(如果点击“刷新”按钮,则可以看到保存的当前值。)
var firstValue = [];
var preValue = [];
function returneD(a){
preValue = firstValue;
console.log("returned! preValue: "+preValue);
for (var i = 0; i < 1; i++) {
firstValue[i] = a;
console.log("returned! firstValue: "+firstValue);
}
}
function refresh1(){
console.log("preValue: "+preValue);
console.log("firstValue: "+firstValue);
}
<!DOCTYPE html>
<html>
<head>
<script src="jstest.js"></script>
</head>
<body id="thebody">
<button id="1" onclick="returneD(this.id)">O N E</button>
<button id="2" onclick="returneD(this.id)">T W O</button>
<button id="3" onclick="returneD(this.id)">T H R E E</button>
<button id="4" onclick="returneD(this.id)">F O U R</button>
<br>
<button onclick="refresh1()">refresh</button>
</body>
</html>
答案 0 :(得分:0)
在JavaScript中,数组就像对象一样。分配时:
preValue = firstValue;
这只是对变量的引用,因此您无法复制该值。
为了实现这一点,您需要将该数组的每个值复制到先前的值数组。因此,您可以为第一个到上一个赋值运行另一个for循环:
for (var i = 0; i < 1; i++) {
prevValue[i] = firstValue[i];
}
假设它们的大小相同。
答案 1 :(得分:0)
请参考此代码即可使用,
firstValue是已经存储了值的数组,之后会将旧值赋给preValue数组。
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
int day=c.get(Calendar.DAY_OF_MONTH);
for (int i = 1; i<=14; i++) {
c.add(Calendar.DAY_OF_MONTH, 1);
System.out.println(c.get(Calendar.DATE));
}
}
&#13;
var firstValue = [];
var preValue = [];
function returneD(a){
preValue = a;
console.log("returned! preValue: "+preValue);
for (var i = 0; i < 1; i++) {
firstValue[i] = a;
console.log("returned! firstValue: "+firstValue);
}
}
function refresh1(){
console.log("preValue: "+preValue);
console.log("firstValue: "+firstValue);
}
&#13;