【问题标题】: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 会话存储
  • 在这个特定的例子中如何使用它?
  • 如果您在新标签页中打开同一页面会怎样?

标签: javascript


【解决方案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,如果存在,则将其用作计数。
    猜你喜欢
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多