Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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
当我使用location.href时,是否可以避免html重置javascript变量?_Javascript_Html_Var - Fatal编程技术网

当我使用location.href时,是否可以避免html重置javascript变量?

当我使用location.href时,是否可以避免html重置javascript变量?,javascript,html,var,Javascript,Html,Var,我的新项目是一个小的“拼图”游戏,你进入一个房间,解决里面的一个拼图,然后当你回到关卡选择部分,它会打开下一个关卡 到目前为止,我一直在使用一个变量“lock”来计算每次你击败一个关卡的次数,如果“lock”的值与关卡号码对应,它会让你通过 问题是,当我使用location.href时,似乎会重置“lock”变量 级别选择的Html: //html, link to js and some text <h1> <img src="assets/Nextbutton1.png"

我的新项目是一个小的“拼图”游戏,你进入一个房间,解决里面的一个拼图,然后当你回到关卡选择部分,它会打开下一个关卡

到目前为止,我一直在使用一个变量“lock”来计算每次你击败一个关卡的次数,如果“lock”的值与关卡号码对应,它会让你通过

问题是,当我使用
location.href
时,似乎会重置“lock”变量

级别选择的Html:

//html, link to js and some text
<h1>
<img src="assets/Nextbutton1.png" onclick="t1()" width="100" //1st level button
height="100"> <br>
<img src="assets/Nextbutton2.png" onclick="t2()" width="100" //2nd level button
height="100">

HTML本质上是“无记忆的”。这意味着默认情况下,每次刷新页面时,它都会重置其变量。但是,有一些方法可以保留变量。从中,实现这一点的方法是

  • window.localStorage-存储没有过期日期的数据
  • window.sessionStorage-存储一个会话的数据(关闭浏览器选项卡时数据丢失)
同样来自同一网站:

// Store
localStorage.setItem("lastname", "Smith");

// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("lastname");

请注意,这都是使用普通JavaScript,因为您在问题中没有指出任何框架。

localStorage不仅在页面加载之间同步变量,而且在选项卡之间同步变量

如果您只希望在一个浏览器选项卡中使用此行为,而不影响其他选项卡,则应使用sessionStorage而不是localStorage

在完成一个级别时,您可以尝试使用cookies吗:
localStorage.setItem('lock',lock)。当您需要确定他们可以访问哪些级别时:
lock=localStorage.getItem('lock')
.May您可以将变量作为查询参数传递(在.html扩展名后面加上?var=foo)。但是要小心,这些变量不安全,很容易修改。如果你觉得我的答案是正确的,你能接受吗?谢谢你,这一点,并且发现我必须将“lock”定义为一个整数,最终使系统工作。
var lock;
var taso2;  // future stuff
var taso3 = 2; //future stuff

function joo(){

location.href='index.html'
if (lock == 0) // if statement so you dont progress by playing 1st level over and over
{
lock += 1;}
}

function t2() {
if (lock > 0) {
location.href='Taso2.html';
}
else { alert("You have to beat the previous levels first") }
}

function t1() {
location.href='Taso1.html';
}
// Store
localStorage.setItem("lastname", "Smith");

// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("lastname");