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

Fer*_*SBS 2 javascript arrays

我创建了一个:

var checkboxFarm = new Array();
Run Code Online (Sandbox Code Playgroud)

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

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

          rp_farmAtivada(index);

        }, false);
Run Code Online (Sandbox Code Playgroud)

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

function rp_farmAtivada(index) {
     checkboxFarm[index] = !checkboxFarm[index];
};
Run Code Online (Sandbox Code Playgroud)

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

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

我错过了什么吗?

ale*_*lex 7

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

您可以在单击时添加一些AJAX以将结果保存到数据库或cookie.

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

更新

您对LukeN答案的评论......

我可以将所有数组的默认值定义为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;
}
Run Code Online (Sandbox Code Playgroud)

看到它在JSbin在线工作.