2016-03-04 101 views
-4

我有一个静态变量的问题。如果页面刷新,则变量的最后一个值将丢失。这是代码:Javascript变量丢失值

var ok; 

alert(ok); 

if(ok==1) { 
$('tr:has(td:contains("Blue"))').hide() 
} 

$('tr:has(td:contains("Blue"))').delay(10000).hide(0) 
    ok=1; 

alert(ok); 
+0

你是在开玩笑吧? –

+0

你期望什么? – C2486

+1

你知道javascript是如何工作的吗?你为什么认为这会拯救你所做的一切?你知道电脑如何工作吗?为什么你认为重新启动计算机会修复很多问题? (*提示;因为它知道的所有内容,除了**特别记住的**被遗忘,就像javascript *) – h2ooooooo

回答

3

如果页面被刷新,该变量的最后一个值都将丢失。

当页面被刷新,存储在窗口的会话的所有值都将丢失,并创建一个新的sesssion。

除非将值存储在浏览器的存储器中,否则不会保留它们。

0

刷新页面时,所有存储的值都会丢失,认为它可能保留变量值。这可以通过window.localStorage(或window.sessionStorage)来实现。这个区别在MDN的DOM存储指南中解释(链接在下面)。

当你需要设定将要在接下来的网页中反映出来的变量,使用:

var someVarName = "value"; 

localStorage.setItem("someVarName", someVarName); 

,在任何页面(当页面加载等),把它想:

var someVarName = localStorage.getItem("someVarName"); 

.getItem()将返回空值或存储的值。

请注意,只有字符串值可以存储在此存储中,但可以通过使用JSON.stringifyJSON.parse来解决。从技术上讲,每当你打电话.setItem(),它会打电话.toString()的价值和存储。

如果localStorage不可用,MDN的DOM存储指南(链接如下)有解决方法/ polyfill,最终回落到像cookies这样的东西。

使用现有的或创建您自己的迷你库并不是一个坏主意,它可以抽象保存任何数据类型(如对象文字,数组等)的功能。

+0

检查http://stackoverflow.com/questions/16206322/how-to-get-js-variable -to-保留价值-后页面刷新 –