按类名保存/加载复选框状态

Posted

技术标签:

【中文标题】按类名保存/加载复选框状态【英文标题】:Save/Looad checkbox state by class name 【发布时间】:2019-12-05 16:17:32 【问题描述】:

我正在尝试保存和加载某些复选框的状态:

 function saveCheckbox () 
 var a = document.querySelectorAll('input[type="checkbox"]');
 var array = []; 
 a.forEach(function(checkBox)

array.push(className: checkBox.className, checked: checkBox.checked);
);

 localStorage.setItem('Checkboxes', JSON.stringify(array));
 console.log(JSON.stringify(array)); 

似乎保存得很好,也检查了日志,但是当我尝试加载它时,它根本不起作用:

function loadCheckbox()
var a = JSON.parse(localStorage.getItem('Checkboxes'));

 a.forEach(function(checkBox)

 document.getElementsByClassName(checkBox.className).checked = 
 checkBox.checked;

 );
console.log(JSON.stringify(a)); 
 

我在这里做错了什么?

【问题讨论】:

【参考方案1】:

尝试使用不同的变量名称声明 a 并在 loadCheckbox() 中使用 let

let data = JSON.parse(localStorage.getItem('Checkboxes'));

这可能是典型的吊装相关问题。在 javascript 中,它在运行前将所有声明的变量带到顶部。为了避免这些,你应该使用let,它使用块范围的功能。

【讨论】:

以上是关于按类名保存/加载复选框状态的主要内容,如果未能解决你的问题,请参考以下文章

如何从复选框数组中保存布尔状态并在使用 SharedPreferences 加载适配器时加载它们的状态

将QCheckBox的状态保存在文件中,程序重启时加载状态

使用php将复选框状态写入/读取文件

如何像保存文件一样保存和加载选中的复选框 - php

保存复选框的状态

复选框保存/加载NSUserdefaults