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が消えることはありません。style="hide"そもそもdivを設定して、ページが読み込まれた後に表示することをお勧めします。

于 2009-08-16T10:36:10.150 に答える