如何删除存储在本地存储中的特定项?

时间:2017-07-07 08:13:17

标签: javascript local-storage

存储在本地存储中的值

{"10":true,"11":true,"16":false}

我想删除存储在本地存储中的特定数据,例如10

var checkboxValues = JSON.parse(localStorage.getItem('checkboxValues')) || {};

$.each(checkboxValues, function(key, value) {
                if(value===true) {
                    delete checkboxValues[key];
                    }
                }
            });

我在onload期间存储了所有复选框的id和value,并希望在用户提交表单时删除带有true值的复选框id。

使用上面使用的方法,我无法删除数据。我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:0)

在将json对象保存到localstorage之前,请将json对象转换为字符串,然后将其存储在localstorage中,如下所示

JSON.stringify({"10":true,"11":true,"16":false});

然后在解析它正常工作的地方,只需保存就可以将json对象转换为字符串 这是更新的代码

var jsonData = JSON.stringify({"10":true,"11":true,"16":false});
localStorage.setItem('checkboxValues', jsonData);

var checkboxValues = JSON.parse(localStorage.getItem('checkboxValues')) || {};

$.each(checkboxValues, function(key, value) {
    if(value===true) {
        delete checkboxValues[key];
    }
});

这里显示它工作正常 https://iamlalit.tinytake.com/sf/MTc1ODUwMl81Nzc4NzMw

答案 1 :(得分:0)

要从localStorage中删除项目,您必须使用removeItem()功能,但在您的情况下,您确实需要更新它。首先,你必须覆盖现有的价值。请参阅下面的代码。这是Fiddle



//set the value for first time suppose
localStorage.setItem("checkboxValues", JSON.stringify({
  "10": true,
  "11": true,
  "16": false
}));
   //get the value and update
var checkboxValues = JSON.parse(localStorage.getItem('checkboxValues')) || {};
$.each(checkboxValues, function(key, value) {
  if (value === true) {
    delete checkboxValues[key];
  }
})
   //store the updated value back to localStorage
localStorage.setItem("checkboxValues", JSON.stringify(checkboxValues));
console.log(JSON.stringify(checkboxValues));//logs {"16":false}
console.log(JSON.parse(localStorage.getItem('checkboxValues')));
// logs an object with only one property {16:false}