Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Доработка меню на js (https://javascript.ru/forum/misc/25258-dorabotka-menyu-na-js.html)

by_roxe 30.01.2012 18:09

Доработка меню на js
 
Есть меню на js такого вида:
<!-- древовидное меню -->
<style type="text/css">
#dropMenu, #dropMenu ul {list-style:none;margin:0px;padding:0px;}
.menuCat {background:url(http://studioad.ru/works/signs/plus.gif) 0px 3px no-repeat;padding-left:12px;}
.menuCat span {cursor:pointer;font-weight:bold;}
.menuCat ul {display:none;}
</style>

<ul id="dropMenu">
<li><a href="http://studioad.ru">Главная страница AD</a></li>
<li class="menuCat"><span>Другие разделы студии</span>
  <ul>
  <li><a href="http://studioad.ru/index/0-2">Услуги студии</a></li>
  <li><a href="http://studioad.ru/index/0-6">Цены на услуги</a></li>
  <li><a href="http://studioad.ru/index/0-3">Контакты с дизайнером</a></li>
  </ul>
</li>
<li class="menuCat"><span>Блог AD</span>
  <ul>
  <li><a href="http://studioad.ru/blog">Главная страница блога</a></li>
  <li class="menuCat"><span>Скрипты и разработки</span>
  <ul>
  <li><a href="http://studioad.ru/blog/2009-02-06-28">Скрипт рейтинга</a></li>
  <li><a href="http://studioad.ru/blog/2009-02-12-32">Посветка js синтаксиса</a></li>
  <li><a href="http://studioad.ru/blog/2009-02-18-41">Проверка сложности пароля</a></li>
  <li><a href="http://studioad.ru/blog/2009-02-03-26">Прокрутка textarea</a></li>
  </ul>
  </li>
  </ul>
</li>
<li><a href="http://studioad.ru/index/0-9">Галерея AD</a></li>
</ul>

<script type="text/javascript">
// Made by Aleko (http://studioad.ru)
plus="http://studioad.ru/works/signs/plus.gif"; // plus image folder
minus="http://studioad.ru/works/signs/minus.gif"; // minus image folder
dropMenu();function dropMenu(){var c,d,e,j,i;c=new Array();d=document.getElementsByTagName('*');e=new RegExp("(^|\\b)menuCat(\\b|$)");j=0;for(i=0;i<d.le ngth;i++){if(e.test(d[i].className)){c[j]=d[i];j++}}for(i=0;i<c.length;i++){var f=c[i].getElementsByTagName("span")[0];f.onclick=function(){var a,b;a=this.parentNode;b=a.getElementsByTagName("ul ")[0];if(b.style.display=="block"){a.style.backgroundIm age="url("+plus+")";b.style.display="none"}else{a. style.backgroundImage="url("+minus+")";b.style.dis play="block"}}}};
</script>
<!-- /древовидное меню -->


Если жмем на ссылку где-нить в подменю, то страничка перезагружается и меню сворачивается в ноль что очень не удобно, т.к. нужно опять искать нужное подменю...Как сделать чтобы при перезагрузке страницы меню не сворачивалось или типа того? Спасибо.

T-sh 30.01.2012 20:29

я обычно запоминаю в кукисах, какой ul должен быть развернут (через DOM). при загрузке — проверяешь, что записано, и сразу разворачиваешь нужный элемент

NAME —имя cookie,
VALUE —значение.
expires —время хранения cookie, дата в формате "expires=Monday, DD-Mon-YYYY HH:MM:SS GMT",
domain —домен, для которого значение cookie действительно.
path — этот атрибут устанавливает подмножество документов, для которых действительно значение cookie.
secure —если стоит этот маркер, то информация cookie пересылается только через HTTPS

установка кук
function setCookie(name, value, expires, path, domain, secure) {
    if (!name || !value) return false;
    var str = name + '=' + encodeURIComponent(value);
     
    if (expires) str += '; expires=' + expires.toGMTString();
    if (path)    str += '; path=' + path;
    if (domain)  str += '; domain=' + domain;
    if (secure)  str += '; secure';
     
    document.cookie = str;
    return true;
}


получение кук
function getCookie(name) {
    var pattern = "(?:; )?" + name + "=([^;]*);?";
    var regexp  = new RegExp(pattern);
     
    if (regexp.test(document.cookie))
    return decodeURIComponent(RegExp["$1"]);
     
    return false;
}


удаление кук:
function deleteCookie(name, path, domain) {
    setCookie(name, null, new Date(0), path, domain);
    return true;
}


ну а всё остальное — простая работа с DOM.


Часовой пояс GMT +3, время: 20:12.