【问题标题】: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)); 
 }

我在这里做错了什么?

【问题讨论】:

    标签: javascript checkbox save load


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-19
      • 2015-03-09
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 2012-04-18
      • 2018-01-14
      • 1970-01-01
      相关资源
      最近更新 更多