我正在尝试将用户输入的值保存在会话存储上,然后检索它们。检索除单选按钮的值外的所有值。这是性别投入。
它适用于名字、姓氏和出生日期,但性别为空。 我可以看到所有值都保存在会话存储中,包括性别。如果我选择"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;
}