导航到另一个页面(也使用相同的js文件)时,Javascript全局变量不会保留

Ang*_*ber -1 javascript

我在angus.js中共享了这样的js代码

var g_colour;

function getcolour() {
  return g_colour;
}

function setcolour(colour) {
  g_colour = colour;
}
Run Code Online (Sandbox Code Playgroud)

这是由html第1页和第2页访问的,如下所示:

1.HTML:

<html>
<head>
<title>Global javascript example</title>
</head>
<body>
<a href="2.html">Page2</a>
<script src="angus.js"></script>
<form name="frm">
<input type="button" value="Setblue" onclick="setcolour('blue');" />
<input type="button" value="Setyellow" onclick="setcolour('yellow');" />
<input type="button" value="getcolour" onclick="alert(getcolour());" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

2.HTML:

<html>
<head>
<title>Global javascript example page 2</title>
</head>
<body>
<a href="1.html">Page1</a>
<script src="angus.js"></script>
<form name="frm">
<input type="button" value="Setblue" onclick="setcolour('blue');" />
<input type="button" value="Setyellow" onclick="setcolour('yellow');" />
<input type="button" value="getcolour" onclick="alert(getcolour());" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我在一个页面中设置颜色并导航到第2页,然后然后访问颜色,则返回undefined.即我似乎在加载新的html页面时创建了一个新的g_colour实例.

我希望能够访问一种顶级变量,我可以在第1页中设置并在第2页中访问.如何在Javascript中执行此操作?

Nie*_*sol 9

JS变量永远不会持久化,但有两种方法:

  1. 饼干
  2. 存储

除了最古老的浏览器之外,所有浏览器都支持Cookie,但它们可能非常难以使用且难以使用.最重要的是,您的浏览器会在每次页面加载时向服务器发送cookie,因此如果它仅由JavaScript使用,则效率非常低.

相反,您应该查看存储选项.

保存项目就像localStorage.itemname = value;阅读一样简单localStorage.itemname,删除就像文字一样简单delete localStorage.itemname

这些值保存在页面加载中,但不会发送到服务器.