存储在本地存储中的值
{"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。
使用上面使用的方法,我无法删除数据。我的代码有什么问题吗?
答案 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}