重新加载页面后如何保留变量的值? [复制]

Posted

技术标签:

【中文标题】重新加载页面后如何保留变量的值? [复制]【英文标题】:How to retain value of the variable after the page is reloaded? [duplicate] 【发布时间】:2013-05-28 14:45:31 【问题描述】:

我的代码中有函数,假设按下按钮时页面的刷新时间从 50 秒逐渐减少到 10 秒。这里是:

  <div id="signin" onclick="pgeReload()"></div>

   ....

 <script type="text/javascript">
   var count=0;
   function pgeReload()

     if(count <= 4)
       count++;
     
     var times = count*10000;
     var pospond = 50000-count;
     setTimeout(function()window.location.reload(), pospond);
   

 </script>

我的问题是页面的重新加载总是在 50 秒后发生,因为(如果我理解正确的话)变量 count 在页面重新加载时总是重新分配为 0。

我的问题是,即使在页面刷新后,计数值增加后,我还能保留它吗?

非常感谢所有可以帮助我的人。

带有html5的版本。但是,问题仍然是初始值。计数始终为 0

<script type="text/javascript">
    var count=0;

     function pagereload()

        if(typeof(Storage)!=="undefined")
        
           count++;
       window.content.localStorage[key]=count;
           var tempTime = parseInt(window.content.localStorage[key])*1000;
           var pospond = 50000-tempTime;
           setTimeout(function()window.location.reload(), pospond);

        
        else
         setTimeout(function()window.location.reload(), 30000);
         
   </script>

【问题讨论】:

您可能会受益于使用 html5 会话存储 在这个特定的例子中如何使用它? 如果您在新标签页中打开同一页面会怎样? 【参考方案1】:

您可以使用 HTML5 的localstorage。

window.content.localStorage[key]=value; //Saving

window.content.localStorage[key]; //Accessing

delete window.content.localStorage[key]; //Delete

其中 KEY = 您要存储的变量的名称,VALUE 是您要保存的字符串值。这仅支持保存字符串,但如果您需要保存对象,您可以使用 JSON 将对象“字符串化”。

所以你可以这样做:

<script type="text/javascript">

function pagereload()

if(typeof(Storage)!=="undefined")

var count=(window.content.localStorage[key])? parseInt(window.content.localStorage[key]): 0;
count++;
window.content.localStorage[key] = count;

var tempTime = count*1000;
var pospond = 50000-tempTime;
setTimeout(function()window.location.reload(), pospond);


else
setTimeout(function()window.location.reload(), 30000);

</script>

【讨论】:

我的html5不太好。此外,并非所有浏览器都支持它。你知道我怎么能在javascript中做到这一点吗?我的意思是任何等价物? 等一下我试试 任何浏览器都支持这个选项吗? 所有现代浏览器都支持 HTML5,即使在移动设备中也是如此。 Internet Explorer 8+、Firefox、Opera、Chrome 和 Safari 支持 Web 存储。仅 Internet Explorer 7 及更早版本,不支持网络存储。【参考方案2】:

你最好看看浏览器cookie。

http://www.w3schools.com/js/js_cookies.asp

【讨论】:

好的。我会看看它。只需一秒钟【参考方案3】:

您可以使用 cookie 或本地存储将数据永久存储在浏览器上。

然后,在同一域的未来页面中,您可以使用 javascript 检索先前的值。如果不使用这样的技术在本地存储数据,浏览器页面的每次重新加载都会完全重新开始。

您的另一个选择是代表当前用户将数据存储在服务器上。当客户端中的值发生更改时,您将对服务器进行 ajax 调用,以便可以将新值存储在服务器上。然后,您可以在以后的页面中使用 ajax 从服务器检索值,或者服务器可以在每次请求时将当前值放入页面中。您需要某种方法来识别当前用户(通常是用户登录),以便服务器可以检索正确的用户数据。

【讨论】:

【参考方案4】:

使用 localstore 是个好主意,但如果您正在寻找简单的东西,您可以在重新加载页面时将计数放入查询字符串中,例如:

window.location.href = url + '?count=' + count

您可以根据变量检查计数或是否为初始加载:

window.location.search

例如,如果您使用?count=3 重新加载页面,则此变量的值将是?count=3。您也可以将计数本身放在查询字符串中以简化解析,如下所示:

window.location.href = url + '?' + count

【讨论】:

我还应该把count = 0放在代码中吗? 代码应该从window.location.search 得到count。如果不存在,则使用count=0,如果存在,则将其用作计数。

以上是关于重新加载页面后如何保留变量的值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 5.2 中重新加载页面后保留 select2 值?

如何在 chrome 控制台中保留该功能并在重新加载页面后运行它?

Django:jQuery触发表单提交onchange of checkbox并保留重新加载时的值

如果页面重新加载,如何在表单上保留对单选按钮的选择

如何在 Angular 5 中重新加载后保留服务数据

Flutter切换tab后保留tab状态