Javascript 存储在';窗口';对象在更改';Window.location.href';

Javascript 存储在';窗口';对象在更改';Window.location.href';,javascript,jquery,html,Javascript,Jquery,Html,我在window对象上定义一个属性(比如,myVar)(将其用作全局变量),但问题是当我使用window.location.href在不同的页面上引导用户时,该全局变量丢失,并变为未定义的 为什么会出现window obj变量的这种意外行为,它是否与作用域有关,以及如何更正它 对象是在页面加载时生成的。加载页面后,添加属性,该属性将保留在对象中 当您将用户重定向到另一个页面时,这(显然)被解释为一个新页面,这意味着一个新页面加载。到那时,对象是全新的 如果必须在页面刷新之间保留此变量,请查看:

我在window对象上定义一个属性(比如,myVar)(将其用作全局变量),但问题是当我使用
window.location.href
在不同的页面上引导用户时,该全局变量丢失,并变为
未定义的

为什么会出现window obj变量的这种意外行为,它是否与作用域有关,以及如何更正它

对象是在页面加载时生成的。加载页面后,添加属性,该属性将保留在对象中

当您将用户重定向到另一个页面时,这(显然)被解释为一个新页面,这意味着一个新页面加载。到那时,对象是全新的

如果必须在页面刷新之间保留此变量,请查看:

语法 语法
您可以使用localStorage来存储将在您的网站页面之间持久存在的数据

localStorage.setItem('myVar', value);

localStorage.getItem('myVar'); // gives value

这是预期的行为。HTTP是完全无状态的。因此,一旦加载新页面(即使重新加载同一页面),您在一个页面上执行的任何操作都将丢失。您需要将信息存储在某个位置(localStorage、sessionStorage、cookies、通过AJAX的服务器端),然后在下次加载页面时再次检索信息。这并非意外,因为这是一个新页面。想象一下,如果你开着一辆车,行李放在后面,你停下来,去买一辆新车。除非你把行李放在某个地方,或者把它带到新车上。我熟悉这些客户端存储,但是gloabal变量有什么意义呢?为了在一个页面内对所有级别的脚本都可用,也就是说,全局变量通常被认为是不好的做法,应该避免使用。@MukulKumarJha全局变量在当前文档生命周期中持续存在,您可以在重定向时触发一个新的生命周期(
window.location.href
)。太好了!@rorymcrossan@silentw这正是我想知道的。
// The following snippet accesses the current domain's local Storage object and adds a data item to it using Storage.setItem().
localStorage.setItem('myCat', 'Tom');

// The syntax for reading the localStorage item is as follows:
var cat = localStorage.getItem('myCat');

// The syntax for removing the localStorage item is as follows:
localStorage.removeItem('myCat');

//The syntax for removing all the localStorage items is as follows:
// Clear all items
localStorage.clear();
localStorage.setItem('myVar', value);

localStorage.getItem('myVar'); // gives value