首页 > 解决方案 > localStorage 未按预期工作。页面重定向时不保存

问题描述

加载新页面时,localStorage 不保存变量。

我尝试使用变量、对象和现在的 localStorage 将数据从一个 .js 文件保存到另一个文件。在 javascript 中,我使用 windows.location 更改页面并重置所有变量数据。所有变量在范围内都是全局的。

// 在单独的 .JS 文件中

var beganStory = false;
localStorage.setItem("beganStory", beganStory);
var isMale = false;
localStorage.setItem("isMale", isMale);

// 在另一个 .JS 文件中

document.querySelector("#boy").addEventListener("click", ChangeToMale);
document.querySelector("#boy").addEventListener("click", Redirect);

document.querySelector("#girl").addEventListener("click", Redirect);

function Redirect()
{
    window.location = "StatsPicker.html";
}

function ChangeToMale()
{
    console.log("Changed To Male!");
    alert(localStorage.getItem("isMale"));
    localStorage.setItem("isMale", true);
    alert(localStorage.getItem("isMale"));
}

我希望当用户单击 id 为 boy 的元素时保存变量。实际结果是当页面被重定向并且我使用 localStorage.getItem("isMale") 它返回 false。

标签: javascript

解决方案


每当您的页面刷新时,不仅变量会“重置”,实际上您在该页面上的整个 JS 脚本集都会重新运行。在您的情况下,这将包括在 localStorage中设置isMale的部分。false


推荐阅读