2010-06-18 2 views
1

У меня есть это шоу/скрыть меню. Это, возможно, это меню сделать с памятью? (Я открываю субменю, обновите страницу и это подменю стил открытое.)javascript show/hide with memory

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

ответ

1

Короткий ответ: Cookies.

Длинный ответ: Я предлагаю вам не попробовать, если это действительно важно. Печенье довольно сложно. Однако, предполагая, что вы хотите сохранить только одно значение, оно может быть упрощено.

Heres две приятные функции для установки и чтения куки Quirksmode, если необходимо:

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

Тогда вы могли бы сделать что-то вроде:

<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

спасибо очень много, но, как в печенье положить больше значения? Например, у меня есть новости, статьи, фотографии. Теперь после обновления только одно шоу. – user319854

+0

Используйте функцию 'createCookie()'. Например, 'createCookie (« news », news, 7)' (новость - это показанный блок для раздела новостей). 'createCookie (« статьи », статьи, 7)» и т. д. Затем просто добавьте соответствующее кодирование readCookie. – tcooc

0

Конечно, вы можете использовать AJAX для отправки вызова на PHP странице (или любой другой язык, который вы используете) и сохранить его для этого пользователя. Затем, когда страница загружается, проверьте эти переменные сеанса, чтобы увидеть, открыты ли они или нет, и заставить их начать этот путь. ИМО, дополнительное кодирование не стоит запоминать, какие меню они открыли. Если определенные ссылки важны для этой страницы, они всегда должны быть видны. В противном случае не должно иметь значения, если они рухнули при перезагрузке страницы.

0

вы можете сделать это с помощью файлов cookie, которые вы устанавливаете каждый раз, когда пользователь нажимает. window.load() нужно будет прочитать куки и настроить курс