Javascript,从onclick保存值并保存数组中的先前值

时间:2017-03-28 12:14:06

标签: javascript arrays for-loop onclick

我正在尝试保存从“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>

2 个答案:

答案 0 :(得分:0)

在JavaScript中,数组就像对象一样。分配时: preValue = firstValue;这只是对变量的引用,因此您无法复制该值。

为了实现这一点,您需要将该数组的每个值复制到先前的值数组。因此,您可以为第一个到上一个赋值运行另一个for循环:

for (var i = 0; i < 1; i++) {
  prevValue[i] = firstValue[i];
}

假设它们的大小相同。

答案 1 :(得分:0)

请参考此代码即可使用,

firstValue是已经存储了值的数组,之后会将旧值赋给preValue数组。

&#13;
&#13;
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;
&#13;
&#13;