如何在重新加载页面后保留变量的值?

时间:2013-06-02 05:12:47

标签: javascript

我的代码中有功能,如果按下按钮,则假设逐渐将页面刷新从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>

4 个答案:

答案 0 :(得分:3)

您可以使用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>

答案 1 :(得分:1)

你最好看一下浏览器cookie。

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

答案 2 :(得分:1)

您可以使用Cookie或本地存储将数据持久存储在浏览器中。

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

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

答案 3 :(得分:1)

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

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

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

window.location.search

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

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