如何在javascript中按F5时阻止变量被销毁

时间:2011-10-07 07:35:27

标签: javascript function variables global-variables scope

我有以下代码

<html>
    <head>
        <script>
            var m=0;
            function add() {
                m++;
            }
        </script>
    </head>
    <body>
        <button onclick="add();">click</button>
    </body>
</html>  

但是,如果我刷新页面,那么m的值将从0开始。如何在客户端计算机上的每个页面加载之间保留m的值?

6 个答案:

答案 0 :(得分:3)

一种方法是cookie

document.cookie = 'foo,bar'

另一种方法是使用localstorage

localStorage.setItem('foo', 'bar');
localStorage.getItem('foo'); // return 'bar'

答案 1 :(得分:2)

您可以使用javascript中的Cookie。检查此链接。

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

这是工作代码示例:

<html> 
<head> 
<script> 
var m=getCookie("m");
if(isNaN(m)) {
    m=0;
}
function add() 
{
    m++;
    alert(m);
    setCookie("m",m,86400);
} 

function setCookie(c_name,value,exdays)
{
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
}

function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
    x=x.replace(/^\s+|\s+$/g,"");
    if (x==c_name)
    {
            return unescape(y);
        }
    }
}
</script> 
<body>
<button onclick="add();">click</button> 
</body> 
</html> 

答案 2 :(得分:1)

实际上,这就是js在浏览器上的意思,不要与它对抗,与之共存。如果要在浏览器中存储变量,请使用cookie或本地存储(html5)。

答案 3 :(得分:1)

您可能必须使用:

  1. 通过后端脚本设置Cookie。
  2. 在您支持的脚本中使用会话。例如,session_start,PHP中的$ _ SESSION
  3. 使用localStorage,它仅适用于支持HTML 5的浏览器。

答案 4 :(得分:0)

你做不到。页面中的DOM和所有JS变量都会在刷新时重新创建。如果您想要保留它,可以使用cookieslocalstorage来保留它。

答案 5 :(得分:0)

刷新页面再次加载javascript函数是正常的 - 使用会话或cookie来存储这样的变量。