当我刷新页面时,为什么我的数组会丢失其内容?

时间:2010-05-09 23:18:50

标签: javascript arrays

我创建了一个:

var checkboxFarm = new Array();

然后我想在该数组中记录一个复选框状态,因为有11个复选框。

Button.addEventListener("click", function() {

          rp_farmAtivada(index);

        }, false);

单击时更改数组中的变量:

function rp_farmAtivada(index) {
     checkboxFarm[index] = !checkboxFarm[index];
};

但每次刷新页面时都会丢失所有复选框状态,并且我知道所有数组都会获得“未定义”值。

checkboxFarm数组在脚本的开头定义,因此它应该具有全局范围。

我错过了什么吗?

2 个答案:

答案 0 :(得分:7)

您需要保存复选框的状态才能刷新并保持其状态,因为HTTP是无状态的。

您可以在点击时添加一些AJAX,将结果保存到数据库或cookie中。

然后在DOM就绪时,您可以检索这些先前的结果并相应地更改复选框值(或者使用服务器端语言来回显标记中的默认状态)。

更新

您对LukeN's answer的评论......

  

我可以为所有人定义默认值   数组为true而不设置它   对于每一个?

是的,你可以。看看这段代码......

// I'm using an empty array literal here, more succinct and widespead than the old `new Array()`
var checkboxFarm = []; 

// You will need to define here how many array members you want to have the `true` value
for (var i = 0; i <= 10; i++) {
    checkboxFarm[i] = true;
}

请参阅JSbin在线工作。

答案 1 :(得分:1)

这就是它的工作原理。如果要保存状态,请使用cookie。或者在服务器端脚本中生成值并将它们回显给Javascript。