如何获得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); 
    } 
} 
+0

完美的作品 - 非常感谢! – 2009-08-16 12:31:57

+0

@sm - 呃,我的答案是否解决您的问题? – karim79 2009-08-16 12:42:37

+0

噢,对不起 - 以为Mage先生先回答了。固定=) – 2009-08-16 12:47:36

对我来说,它确实有效(Firefox 3.5,Windows XP)。但是div在站点加载完成之前不会消失。您可能首先将div设置为style="hide",并在页面加载后显示。

+0

我没有意识到 - 谢谢!现在很好用! – 2009-08-16 12:33:15