如何获得JavaScript Cookie来记住DIV状态?
问题描述:
我有一个测试网站here(仍在开发中),并且我试图在顶部点击关闭时隐藏顶部的小通知。如何获得JavaScript Cookie来记住DIV状态?
目前我的剧本是这样的:
<style type="text/css">
<!--
.hide {
display:none;
}
.show {
display:block;
}
-->
</style>
<script type="text/javascript">
<!--
var state;
window.onload=function() {
obj=document.getElementById('alert');
state=(state==null)?'show':state;
obj.className=state;
document.getElementById('close').onclick=function() {
obj.className=(obj.className=='show')?'hide':'show';
state=obj.className;
setCookie();
return false;
}
}
function setCookie() {
exp=new Date();
plusMonth=exp.getTime()+(31*24*60*60*1000);
exp.setTime(plusMonth);
document.cookie='State='+state+';expires='+exp.toGMTString();
}
function readCookie() {
if(document.cookie) {
state=document.cookie.split('State=')[1];
}
}
readCookie();
//-->
</script>
然后:
<div id="alert" class="show" style="float: left; width: 100%;"><div style="width: 80%; text-align:left; float:left;">Sorry for the downtime, we were experiencing some problems with our web host. Everything should be back to normal now =D</div>
<div style="width: 18%; text-align:right; float:left; padding-right: 20px;"><a href='#' id="close">close</a></div> </div>
,但它似乎并没有工作。有任何想法吗?
在此先感谢!
山姆
答
首先,你需要修复readCookie,您的通话分裂后会回到一切“状态=”,这将是存储在返回数组的第一偏移,所以不是这样做:
function readCookie() {
if(document.cookie) {
var tmp = document.cookie.split(';')[0];
state = tmp.split('=')[1];
alert(state);
}
}
答
对我来说,它确实有效(Firefox 3.5,Windows XP)。但是div在站点加载完成之前不会消失。您可能首先将div设置为style="hide"
,并在页面加载后显示。
+0
我没有意识到 - 谢谢!现在很好用! – 2009-08-16 12:33:15
完美的作品 - 非常感谢! – 2009-08-16 12:31:57
@sm - 呃,我的答案是否解决您的问题? – karim79 2009-08-16 12:42:37
噢,对不起 - 以为Mage先生先回答了。固定=) – 2009-08-16 12:47:36