localStorage如何保存复选框
localStorage how to save a checkbox
我想用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
不等于字符串"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);
}
演示:http://jsfiddle.net/Lwxoeyyp/1/
问题是,您将值存储为字符串格式的localStorage中的"true"
。现在,在加载时,页面值将以字符串形式检索,并将字符串"true"与布尔值true进行比较。这将返回false。的一个小变化
if (checked == "true")
现在这应该行得通了。
您还可以通过以下方式检索复选框的状态:
var selCheck = document.getElementById("checkOne");
selCheck.checked = (localStorage.getItem("34_chkOne")=="true");
显然,
"checkOne"是复选框的id。"34_chkOne"是本地存储变量的名称。
要存储价值,只需使用
var selCheck = document.getElementById("checkOne");
localStorage.setItem("34_chkOne", selCheck.checked);
并且,如上所述,将存储string类型的变量。
我正在使用这个jquery代码,并且正在更好地使用
$(function() {
var sound_t_s_data = localStorage.getItem("sound_t_s");
if (sound_t_s_data == "yes") {
$("#sound_t").prop('checked', true);
}
else if(sound_t_s_data == "no"){
$("#sound_t").prop('checked', false);
}
});
$("#sound_t").click(function() {
if ($(this).is(":checked")) {
localStorage.setItem("sound_t_s", "yes");
} else {
localStorage.setItem("sound_t_s", "no");
}
});
如果你想让我们在功能上使用它,比如这个
//Play Audio
const s_a = new Audio("audio/s_a.mp3");
$( "#s_r" ).click(function() {
if ($('#sound_t').is(':checked')) {
s_a.play()
}
});
相关文章:
- 如何保存动态创建的复选框的更改状态
- 如何通过单击唯一按钮保存下拉菜单/复选框菜单选项和占位符值
- 如何使用javascript自动提交保存/重新填充的复选框
- 如何使用复选框启用选项并通过本地存储进行保存
- JavaScript-使用sessionStorage保存文档之间共享的复选框状态
- 将复选框选中的状态保存并加载到数据库
- 如何保存和访问复选框数据 HTML
- 如何将复选框数组中的数据保存到数据库中
- 如何在 javascript 的信息窗口中使用 cookie 保存复选框状态
- 单击时自动保存复选框
- localStorage如何保存复选框
- 具有Raspberry Pi nginx网页保存复选框状态
- 单击时保存复选框的状态
- 在HTML或Javascript中保存复选框状态
- 如何在页面刷新后保存复选框状态
- 引导弹出窗口不保存复选框
- 正在浏览器缓存中保存复选框值
- 保存复选框的动态状态时遇到问题(Javascript,jQuery)
- 本地存储未保存复选框未选中阶段
- jQuery-在cookie中保存复选框条件