4

我在这里有一个测试站点(仍在开发中),我试图让顶部的小通知在您单击关闭后保持隐藏。

目前我的脚本是这样的:

<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>

但它似乎不起作用。有任何想法吗?

提前致谢!

山姆

4

2 回答 2

1

首先,您需要修复 readCookie,您对 split 的调用将返回 "State=" 之后的所有内容,这些内容将存储在返回数组的第一个偏移量中,因此请执行以下操作:

function readCookie() {
    if(document.cookie) {
        var tmp = document.cookie.split(';')[0];
        state = tmp.split('=')[1];
        alert(state);
    }
}
于 2009-08-16T10:22:39.060 回答
1

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

于 2009-08-16T10:36:10.150 回答