通过多个文件更新相同的变量

时间:2012-03-14 23:31:34

标签: javascript jquery

我有4个html页面,第1-4页。并且全局变量存储在js文件中,我想通过在每个网页上单击是/否来更新变量。 有没有办法保持变量?例如存储在webrownser或硬盘?

<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript" src="js/counter.js"></script>
</head>
<body>
    <h1>Are u in?</h1>
    <!--img tag-->
    <div id="yes">
        <input type="button" name="yes" value="Yes">
    </div>
    <div id="no">
        <input type="button" name="yes" value="No">
    </div>
    <script type = "text/javascript">
            $("#yes").click(function() {
                count = 1; //page2 will getC() and count += 2 and setC(count)
                setC(count);
                window.location.replace("page2.html");//maybe this will clear out something
            });
            $("#no").click(function() {
                window.location.replace("page2.html");
            });
    </script>
</body>

------------ js file ------------------

var count;

function setC(c){
    count = c;
}
function getC(){
    return count;
}

2 个答案:

答案 0 :(得分:2)

您应该使用cookie来存储请求中的值。您可以使用此jQuery插件轻松使用Cookie:https://github.com/carhartl/jquery-cookie

这是一个简单的例子:

设置值

function setC(c){
    $.cookie('the_count', c); //Cookie Key and Cookie Value
}

获取值

function getC(){
    return $.cookie('the_count') || 0; //Pass in the cookie key
}

现在不需要全局变量计数。您可以使用setCgetC。如果您对稍微更复杂的解决方案感兴趣,可以使用AmplifyJS而不是jQuery cookie插件。如果浏览器不支持本地存储,AmplifyJS将在可用时使用HTML5 local storage并回退到cookie。更多信息:http://amplifyjs.com/api/store/

答案 1 :(得分:1)

像保罗提到的那样,Cookie是一个很好的解决方案。但是,如果你想弄脏手,你可以查看HTML5 localStorage API,这对于这种事情是完美的。

如果有人使用不支持它的浏览器,可以随时回退到Cookie,但请记住,他们可能会拒绝Cookie,如果网站依赖于此,则会给您带来问题。

请记住,如果您在file:// urls上进行本地开发,那么存储将不会像在域上那样在页面上保留 - 每个文件URL都是沙箱并且无法访问其他文件存储。