我想用localstorage保存一个复选框。这样,当我选中该框并关闭浏览器并重新打开它时,仍将对其进行检查。现在,如果我单击复选框,然后按保存按钮,则不会保存该复选框。
我怎样才能做到这一点?
这是我的代码:
<script>
function save(){
var checkbox = document.getElementById('checkbox1zaal1');
if(document.getElementById('checkbox1zaal1').checked) {
localStorage.setItem('checkbox1zaal1', true);
}
}
function load(){
var checked = localStorage.getItem('checkbox1zaal1');
if (checked == true) {
document.getElementById("checkbox1zaal1").setAttribute('checked','checked');
}
}
function wis(){
location.reload();
localStorage.clear()
}
</script>
<body onload="load()">
<input type="button" id="ReserveerButton1" value="save" onclick="save()"/>
<input type="button" id="Wisbutton1" value="delete" onclick="wis()"/>
<input type="checkbox" id="checkbox1zaal1">1e film van de dag</input>
</body>
感谢您的任何建议!
1)。因为布尔值true
不等于string "true"
。因此,比较checked == true
总是false
,并且从未选中复选框。
而是尝试以下方法:
var checked = JSON.parse(localStorage.getItem('checkbox1zaal1'));
if (checked == true) {
document.getElementById("checkbox1zaal1").checked = true;
}
请记住,您存储在localStorage中的任何内容始终都是字符串,只有字符串。这就是为什么当您保存比原始值(例如某些对象)更复杂的东西时,请确保JSON.stringify
首先在其上使用。
从localStorage检索值时,应将其转换回相应的javascript类型。
总的来说load
功能还可以提高:
function load(){
var checked = JSON.parse(localStorage.getItem('checkbox1zaal1'));
document.getElementById("checkbox1zaal1").checked = checked;
}
2)。一旦您尝试取消选中复选框,就会出现另一个问题。您当前不处理它,因此将save
功能更改为以下一项:
function save(){
var checkbox = document.getElementById('checkbox1zaal1');
localStorage.setItem('checkbox1zaal1', checkbox.checked);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句