我無法設置cookie記住某些元素是否已隱藏或不。我使用的腳本(來自這裏的另一個答案)似乎在隱藏或顯示我想要控制的元素方面起作用,但似乎並沒有按照'記住'當前狀態的方式工作重新加載/更改頁面時。設置Cookie記憶隱藏元素狀態
在我目前正在開發的網站,只有兩頁目前有這樣的代碼:
http://www.emelisandetribute.com/music.php和http://www.emelisandetribute.com/videos.php
在頁面上(直接在標籤之前)使用的JavaScript如下:
<script type="text/javascript">
function setCookie (name, value, expires, path, domain, secure) {
document.cookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
function getCookie (name) {
var cookie = " " + document.cookie;
var search = " " + name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
offset = cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = cookie.indexOf(";", offset);
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
if (setStr == 'false') {
setStr = false;
}
if (setStr == 'true') {
setStr = true;
}
if (setStr == 'null') {
setStr = null;
}
return(setStr);
}
function hideFooter() {
setCookie('footer_state', false);
document.getElementById('toggleoff').style.display = 'none';
document.getElementById('toggleon').style.display = 'block';
document.getElementById('footer1').style.display = 'none';
document.getElementById('footer2').style.display = 'none';
document.getElementById('footer3').style.display = 'none';
}
function showFooter() {
setCookie('footer_state', null);
document.getElementById('toggleoff').style.display = 'block';
document.getElementById('toggleon').style.display = 'none';
document.getElementById('footer1').style.display = 'block';
document.getElementById('footer2').style.display = 'block';
document.getElementById('footer3').style.display = 'block';
}
function checkFooter() {
if (getCookie('footer_state') == null) { // if popup was not closed
document.getElementById('toggleoff').style.display = 'block';
document.getElementById('toggleon').style.display = 'none';
document.getElementById('footer1').style.display = 'block';
document.getElementById('footer2').style.display = 'block';
document.getElementById('footer3').style.display = 'block';
}
}
</script>
的相關元素的HTML是:
<div class="mainfooterwrapper">
<span class="mainfootertoggle" id="toggleoff"><a href="#" onclick="hideFooter(); return false;">HIDE THIS</a></span>
<span class="mainfootertoggle" id="toggleon" style="display:none"><a href="#" onclick="showFooter(); return false;">SHOW THIS</a></span>
<div class="mainfooter1" id="footer1">
<?php include "mainfooter1.php"; ?>
</div>
<div class="mainfooter2" id="footer2">
<?php include "mainfooter4.php"; ?>
</div>
<div class="mainfooter3" id="footer3">
<?php include "mainfooter3.php"; ?>
<div style="clear:both; float:right; position:absolute; bottom:0; right:0; overflow:hidden; margin:5px 15px 5px 5px;">
<?php include "footer.php"; ?>
</div>
</div>
</div>
從閱讀一些其他的問題和答案,我嘗試添加到所有的元素,無論是通過編輯CSS還通過添加代碼的HTML,但本作的要素完全消失。
它穿過我的腦海那就是我真正需要的是一段代碼,當元素被用戶隱藏,這將創建一個cookie,但也將刪除/修改cookie的,如果元素被再次顯示。我意識到,我現在所擁有的(儘管工作不正常)代碼有效地具有「開」開關,但沒有「關」開關。
任何幫助或建議將非常感激。
謝謝。這一切似乎現在完美:) –