我有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;
}
答案 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
}
现在不需要全局变量计数。您可以使用setC
和getC
。如果您对稍微更复杂的解决方案感兴趣,可以使用AmplifyJS而不是jQuery cookie插件。如果浏览器不支持本地存储,AmplifyJS将在可用时使用HTML5 local storage
并回退到cookie。更多信息:http://amplifyjs.com/api/store/
答案 1 :(得分:1)
如果有人使用不支持它的浏览器,可以随时回退到Cookie,但请记住,他们可能会拒绝Cookie,如果网站依赖于此,则会给您带来问题。
请记住,如果您在file:// urls上进行本地开发,那么存储将不会像在域上那样在页面上保留 - 每个文件URL都是沙箱并且无法访问其他文件存储。