2012-05-13 6 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

あなたはどのようなサーバーサイドの技術関連を持つことができます?

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(サーバーの無関与)とクッキーに状態を保存することができます:あなたは/ ThePageトグル= 1にリダイレクトし、のようなものを使用してURLパラメータを読んで使用しているGY

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がロードされた後に、この関数を呼び出すことにより、以前の状態に復元することができます。

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'; 
    } 
} 

あなたがのような文字列を使用することができますcookieNameの

関連する問題