2012-05-13 62 views
2

我有一個JavaScript函數,可以切換聯繫人窗體的可見性。表單提交後,我希望表單保持打開狀態。有什麼方法可以創建一個cookie,告訴腳本在提交後重新加載頁面時顯示錶單。保持JavaScript開關重新加載

HTML

<a href="#" onClick="toggle_visibility('toggle');">Contact</a> 

CSS

#toggle{ 
    display:none; 
} 

JS

function toggle_visibility(id) { 
    var e = document.getElementById(id); 
    if(e.style.display == 'block'){ 
     e.style.display = 'none'; 
    }else{ 
     e.style.display = 'block'; 
    } 
} 

回答

2

你可能擁有的任何服務器端TECHNOLO GY你使用重定向到/翻動書頁翻轉= 1,並使用類似閱讀的URL參數:

function onload() { 
    var toggle = getUrlParams()["toggle"]; 
    if (toggle == "1") toggle_visibility('toggle'); 
} 

function getUrlParams() { 
    var vars = [], hash; 
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
    for(var i = 0; i < hashes.length; i++) 
    { 
     hash = hashes[i].split('='); 
     vars.push(hash[0]); 
     vars[hash[0]] = hash[1]; 
    } 
    return vars; 
} 
1

可以保存所有與當地的JavaScript(無服務器的參與)一個cookie的狀態:

function restore_visibility(id, cookieName) { 
    var visibility = readCookie(cookieName); 
    if (visibility == null) return; // no cookie 
    var e = document.getElementById(id); 
    if (visibility) { 
     e.style.display = 'block'; 
    } else { 
     e.style.display = 'none'; 
    } 
} 

你可以使用一個字符串像:

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

function toggle_visibility(id, cookieName) { 
    var e = document.getElementById(id); 
    var visible; 
    if(e.style.display == 'block') { 
     e.style.display = 'none'; 
     visible = false; 
    } else { 
     e.style.display = 'block'; 
     visible = true; 
    } 
    if (cookieName) { 
     createCookie(cookieName, visible, 1); 
    } 
} 

然後,當加載你的頁面,你可以通過DOM加載之後調用此函數恢復到以前的狀態爲cookieName。

相關問題