按类名保存/加载复选框状态
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
,它使用块范围的功能。
【讨论】:
以上是关于按类名保存/加载复选框状态的主要内容,如果未能解决你的问题,请参考以下文章