2010-06-18 6 views
1

J'ai ce show/hide menu. Il est peut-être ce menu faire avec la mémoire? (J'ouvre le sous-menu, actualiser la page et ce sous-menu Stil ouvert.)javascript afficher/masquer avec la mémoire

<script type="text/javascript"> 
function change(id){ 
    ID = document.getElementById(id); 

    if(ID.style.display == "") 
      ID.style.display = "none"; 
    else 
      ID.style.display = ""; 
     } 
</script> 
    <div onclick="change(5)" style="cursor: hand"> 
     <a href = "#">+</a>News 
    </div> 
    <div style="display: none" id="5"> 
     News1<br/> 
     News2<br/> 
    </div> 

Répondre

1

Réponse courte: Cookies. Réponse longue: Je vous suggère de ne pas essayer à moins que ce soit vraiment important. Les cookies sont assez compliqués. Cependant, en supposant que vous voulez seulement stocker une valeur, cela pourrait être simplifié.

Heres deux fonctions agréables pour le réglage et la lecture des cookies de Quirksmode, si vous devez:

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

Ensuite, vous pouvez faire quelque chose comme:

<script type="text/javascript"> 
function change(id){ 
    ID = document.getElementById(id); 

    if(ID.style.display == "") 
      ID.style.display = "none"; 
    else 
      ID.style.display = ""; 
      createCookie("id",id,7); /* 1 week */ 
     } 

window.onload = function() { 
    try{change(readCookie("id"));}catch(e){} //rough example 
}; 
</script> 
    <div onclick="change(5)" style="cursor: hand"> 
     <a href = "#">+</a>News 
    </div> 
    <div style="display: none" id="5"> 
     News1<br/> 
     News2<br/> 
    </div> 
+0

merci beaucoup, mais comment dans les cookies mis plus valeurs? Par exemple j'ai des nouvelles, des articles, foto. Maintenant, après avoir rafraîchi un seul spectacle. – user319854

+0

Utilisez la fonction 'createCookie()'. Par exemple, 'createCookie (" news ", news, 7)' (les nouvelles sont le bloc affiché pour la section des nouvelles). 'createCookie (" articles ", articles, 7)', et ainsi de suite. Ensuite, ajoutez simplement le codage readCookie correspondant. – tcooc

0

Bien sûr, vous pouvez, utiliser AJAX pour envoyer un appel à une page PHP (ou autre langue que vous utilisez) et le faire stocker une session pour cet utilisateur. Ensuite, lorsque la page se charge, vérifiez les variables de session pour voir si elles sont ouvertes ou non et restaurez-les pour commencer de cette façon. IMO, le codage supplémentaire ne vaut pas la peine de se rappeler quels menus ils avaient ouverts. Si certains liens sont importants pour cette page, ils doivent toujours être visibles. Sinon, cela ne devrait pas avoir d'importance s'ils sont réduits lors du rechargement de la page.

0

vous pouvez le faire via des cookies que vous définissez chaque fois que l'utilisateur clique. window.load() aurait besoin de lire les cookies et de configurer bien sûr

Questions connexes