Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 本地存储未按预期工作。页面重定向时不保存_Javascript - Fatal编程技术网

Javascript 本地存储未按预期工作。页面重定向时不保存

Javascript 本地存储未按预期工作。页面重定向时不保存,javascript,Javascript,localStorage在加载新页面时不保存变量 我尝试过使用变量、对象和localStorage将数据从一个.js文件保存到另一个。在javascript中,我使用windows.location更改页面,并重置所有变量数据。所有变量的作用域都是全局的 //在单独的.JS文件中 var beganStory = false; localStorage.setItem("beganStory", beganStory); var isMale = false; localStorage.setI

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.getItemisMale返回false。

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

第一位代码何时运行?你确认它正在运行吗?而ChangeToMale并没有改变任何东西,它只是阅读。这是故意的吗?本地存储要求域100%相同,协议也相同。因此,如果您正在从服务器重定向浏览器,例如http://example.com/ 到https://example.com 您不再有本地存储。您不断覆盖这些值。加载页面时运行的代码需要首先尝试并读取值,并且只有在没有存储任何内容时才进行设置。