Javascript 复选框不为';t检查到正确的值
我有应该是简单的代码,但出于某种原因,我不明白正确设置复选框的逻辑有什么问题。我使用的是本地存储,因此检查状态在会话之间是持久的 这是我的密码。发生的情况是出于某种原因,即使Javascript 复选框不为';t检查到正确的值,javascript,html,css,checkbox,Javascript,Html,Css,Checkbox,我有应该是简单的代码,但出于某种原因,我不明白正确设置复选框的逻辑有什么问题。我使用的是本地存储,因此检查状态在会话之间是持久的 这是我的密码。发生的情况是出于某种原因,即使console.log在应该为false时打印出false,或者在应该为true时打印出true,无论哪种方式,复选框最终都会被选中 var checkboxElement = document.getElementById("checkbox").getElementsByTagName('input')[0]
console.log
在应该为false时打印出false,或者在应该为true时打印出true,无论哪种方式,复选框最终都会被选中
var checkboxElement = document.getElementById("checkbox").getElementsByTagName('input')[0]
checkboxElement.addEventListener('click', function() {
console.log(checkboxElement.checked)
if (localStorage != undefined) {
localStorage.setItem("checkbox", checkboxElement.checked)
}
});
if(localStorage != undefined)
{
console.log("Local storage supported.");
//set defaults
if (localStorage.getItem("checkbox") == undefined) {
localStorage.setItem("checkbox", false)
}
var isChecked = localStorage.getItem("checkbox")
checkboxElement.checked = isChecked
console.log(isChecked)
}
由于localStorage将值存储为字符串,因此当您有
false
时,它实际上存储为'false'
,这是一个真实值,因此即使复选框未选中,它也将标记为选中
var isChecked = localStorage.getItem("checkbox") === 'true';
checkboxElement.checked = isChecked;
console.log(isChecked)
演示:因为localStorage将值存储为字符串,所以当您有
false
时,它实际上存储为'false'
,这是一个真实值,因此即使取消选中复选框,它也将标记为选中
var isChecked = localStorage.getItem("checkbox") === 'true';
checkboxElement.checked = isChecked;
console.log(isChecked)
演示:检查底部第三行<代码>复选框元素。选中的需要一个布尔值。如果未提供布尔值,它将通过遵循一些规则将该值强制为布尔值(这种转换/强制多次会产生奇怪的结果)
isChecked
包含“真”/“假”(作为字符串)。我使用了三元运算符来生成字符串“true”/“false”的正确布尔表示
检查底部的第三行<代码>复选框元素。选中的需要一个布尔值。如果未提供布尔值,它将通过遵循一些规则将该值强制为布尔值(这种转换/强制多次会产生奇怪的结果)
isChecked
包含“真”/“假”(作为字符串)。我使用了三元运算符来生成字符串“true”/“false”的正确布尔表示