无法检索 html 格式中的性别广播输入的值



我正在尝试将用户输入的值保存在会话存储上,然后检索它们。检索除单选按钮的值外的所有值。这是性别投入。

它适用于名字、姓氏和出生日期,但性别为空。 我可以看到所有值都保存在会话存储中,包括性别。如果我选择"male","male"将被存储为true,其余的为false。

function validate(){
//get form values
var firstname = document.getElementById("firstname").value;
var lastname = document.getElementById("lastname").value;
var dateofbirth = document.getElementById("dateofbirth").value;
var female = document.getElementById("female").checked;
var male = document.getElementById("male").checked;
var other = document.getElementById("other").checked;
else {
setDetails(firstname, lastname, dateofbirth, female, male, other);
}
}
function getDetails(){
if (typeof(Storage)!=="undefined"){
if (sessionStorage.getItem("firstname") !== null){   
document.getElementById("firstname").value = sessionStorage.getItem("firstname");   
}
if (sessionStorage.getItem("lastname") !== null){   
document.getElementById("lastname").value = sessionStorage.getItem("lastname"); 
}
if (sessionStorage.getItem("dateofbirth") !== null){   
document.getElementById("dateofbirth").value = sessionStorage.getItem("dateofbirth");   
}
if (sessionStorage.getItem("female") == true){  
document.getElementById("female").checked = sessionStorage.getItem("female");   
}
if (sessionStorage.getItem("male") == true){  
document.getElementById("male").checked = sessionStorage.getItem("male");   
}
if (sessionStorage.getItem("other") == true){   
document.getElementById("other").checked = sessionStorage.getItem("other"); 
}
}
function setDetails(firstname, lastname, dateofbirth, female, male, other) {
if (typeof(Storage)!=="undefined"){
sessionStorage.setItem("firstname", firstname);
sessionStorage.setItem("lastname", lastname);
sessionStorage.setItem("dateofbirth", dateofbirth);
sessionStorage.setItem("female", female);
sessionStorage.setItem("male", male);
sessionStorage.setItem("other", other);
}
}

保存在 sessionStorage 和 localStorage 中的值始终是字符串。当您保存 true/false 的布尔值时,您实际上是在保存"true"或"false"的字符串。

因此,当您设置输入的"检查"值时,您需要将新值转换为布尔值。例如:

if (sessionStorage.getItem("female") === 'true') {  
document.getElementById("female").checked = sessionStorage.getItem("female") === 'true';  
}

或者更好的是:

var female = sessionStorage.getItem("female") === 'true';
if (female) {  
document.getElementById("female").checked = female;  
}

最新更新