Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: скрытие и закрытие меню
 
 автор: Smotritel   (14.04.2009 в 20:25)   письмо автору
 
 

Необходимо реализовать скрытие и закрытие ссылок меню таким образом:
допустим вот меню:
1)
2)
а
б
с

3)
нужно чтобы при нажатии на пункт 2), открывались подменю а,б,с.
Ну и когда я осуществяю навигацию по а б с, это подменю не закрывалось.

Я пробовал делать через Onclick... style="display: none" ..style="display:block".., но у меня получалось что либо подпункты открываются и всегда открыты, либо открываються и когда нажимаю на пунк б, меню сворачиваеться.

Подскажите пожалуйста, как можно сделать нормально?

  Ответить  
 
 автор: mikha   (14.04.2009 в 21:54)   письмо автору
 
   для: Smotritel   (14.04.2009 в 20:25)
 

Вариантов масса, вот например
<div id="menu" onmouseover="menu(this);">
  <div><a href="#">1</a>
    <div><a href="#">1.1</a><br />
      <a href="#">1.2</a></div>
  </div>
  <div><a href="#">2</a>
    <div><a href="#">2.1</a><br />
      <a href="#">2.2</a><br />
      <a href="#">2.3</a></div>
  </div>
  <div><a href="#">3</a>
    <div><a href="#">3.1</a></div>
  </div>
</div>
<script>
function block_none(e){
  e.style.display = (e.offsetHeight) ? 'none' : 'block';
}
function menu(obj){
  var obj = obj.getElementsByTagName('a');
  var onclick_func = function(){
    var obj = this.parentNode.childNodes;
    for(var i = 0, len = obj.length; i < len; i++) if(obj[i].nodeName == 'DIV') block_none(obj[i]);
  }
  for(var i = 0, len = obj.length; i < len; i++) obj[i].onclick = onclick_func;
}
function none_(){
  obj = document.getElementById('menu').childNodes;
  for(var i = 0, len = obj.length; i < len; i++){
    obj_2 = obj[i].childNodes;
    for(var j = 0, len_2 = obj_2.length; j < len_2; j++) if(obj_2[j].nodeName == 'DIV') block_none(obj_2[j]);
  }
}
none_();
</script>

function none_(){ 
  obj = document.getElementById('menu').childNodes; 
  for(var i = 0, len = obj.length; i < len; i++){ 
    obj_2 = obj[i].childNodes; 
    for(var j = 0, len_2 = obj_2.length; j < len_2; j++) if(obj_2[j].nodeName == 'DIV') block_none(obj_2[j]); 
  } 

none_(); 

Не нужно, если пропишете, к примеру через CSS display:none
Просто мне, нужно было именно так.

  Ответить  
 
 автор: Smotritel   (14.04.2009 в 22:54)   письмо автору
 
   для: mikha   (14.04.2009 в 21:54)
 

Спасибо большое за вариант!

Но у меня при открытии подменю, оно открываеться и быстро закрываеться, быстро так мелькает. Не могу понять почему так:(:(

И это происходит когда я вместо знака # в href подставляю ссылку на нужную страницу, тоесть когда решетки, меню работает нормально.. но мне нужны ссылки со смыслом.

  Ответить  
 
 автор: mikha   (15.04.2009 в 02:51)   письмо автору
 
   для: Smotritel   (14.04.2009 в 22:54)
 

Не поверите, но решётки я подставил только отправляя вам.
У меня вполне реальные ссылки.
Вот ещё. Но там на списках. С помощью CSS приведёте к нужному вам виду.
http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=61449

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования