выпадающее меню

Rionin

Новичок
выпадающее меню

Здравствуйте!
Пожалуйста, помогите разобраться.

есть вот такое меню

Как сделать выпадающее меню..
помогите, пожалуйста, не понимаю как тут так сделать.

есть:
Код:
<?php
$menu_array = array(array(1 => "Главная", "#"),
								array("Статьи", "#", 
								        array("Маркетинг" => "#",								 
										"Продажи" => "#",
										"Реклама" => "#",
										"Личностный рост" => "#",
										"Hi-tech" => "#")),
								array("Инфопродукты", "#",
								        array("Книги" => "#", 
										"Тренинги" => "#",
										"Консультации" => "#")),
								array("Решения", "#",
								        array("Живая 3D стена" => "#",
										"Виртуальный конструктор" => "#",
										"Интерактивный 3D дисплей" => "#", 
										"Виртуальная витрина" => "#")),
								array("E-zine", "#"),
								array("Контакты", "#"),
								array("Гарантия", "#"))	
?>	

<script language="JavaScript">
var oldBgColor;
oldId = ''; 

function lightOn(elem) {
oldId = elem;
oldBgColor = document.getElementById(elem).style.background;
document.getElementById(elem).style.background = '<?php echo $light_bgcolor; ?>';}

function lightOff() {
document.getElementById(oldId).style.visibility = oldBgColor;}

function showLayer(elem) {
 if(oldId != ''){
   document.getElementById(oldId).style.visibility = 'hidden';
   lightOff();
 }
 document.getElementById(elem).style.visibility = 'visible';
 oldId = elem;
 t = setTimeout("hiddenLayer()", 2000);
}

function smarthider(){
        t = setTimeout("hiddenLayer()", 2000);
}

function hiddenLayer(oldId) {
 if(oldId != ''){
   document.getElementById(oldId).style.visibility = 'hidden';
   lightOff();
 }
}
</script>


<?php
$light_bgcolor = "#aeada9";         

$menu_bgcolor = "#fbf7ef";                
$menu_spacing = 5;              

$sub_bgcolor = "#fbf7ef";              
$sub_left = 135;            					


# Таблица стилей
echo "<style>\n";
echo ".menu a, table.submenu a {color: $link_color; font-size: 12px; font-weight: bold; text-decoration: none}\n";
echo ".menu {background-color: $menu_bgcolor;  text-align: left; line-height: 2;}\n";
echo ".submenu {border: 1px $sub_bord_color solid; background-color: $menu_bgcolor; width: $sub_width; visibility: hidden; position: absolute; left: $sub_left; text-align: left;}\n";
echo "</style>\n\n";

# Печатаем таблицу меню
echo "<table width=\"$menu_width\" cellspacing: $menu_spacing>\n";
foreach ($menu_array as $key => $line)
 {
 # Печатаем пункт меню
  echo "<tr><td class=\"menu\" id=\"menu".$key."\" onMouseOver=\"";
  # Если есть подменю добаляем функция показа слоя при наведении
  if (isset($line[2])) 
  {
  echo "showLayer('menu".$key."_list') ";
  }
  echo "lightOn('menu".$key."')\" onMouseOut=\"";
  # Если есть подменю добавляем функцию скрытия слоя при покидании  
  if (isset($line[2])) 
  {
  echo "hiddenLayer('menu".$key."_list')";
  }
  # иначе функцию убирания подсветки при покидании
                  else 
				  {
				  echo "lightOff()\" onMouseOver=\"";
				  }			  
  # Если пункт меню имеет ссылку печатаем её, иначе просто текст
  if ($line[1] != "") 
  echo "\" onClick=\"document.location = '".$line[1]."'\">
  <a href=\"".$line[1]."\">".$line[0]."</a>";
      else 
		echo "\">
		<font color=\"$link_color\">$line[0]</font>";
  echo "</td>\n<td width=\"0px\" valign=\"top\">\n";
  
  
  # Печатаем пункты подменю
  if (isset($line[2]))
   {
   echo " <table id=\"menu".$key."_list\" class=\"submenu\" onMouseOver=\"showLayer('menu".$key."_list')\" onMouseOut=\"hiddenLayer('menu".$key."_list')\">\n";  
    $i = 0;
    foreach ($line[2] as $name => $url)
     {
	 echo " <tr><td id=\"menu".$key."-".$i."\" onMouseOver=\"lightOn('menu".$key."-".$i."')\" onMouseOut=\"lightOff()\" onClick=\"document.location = '$url'\">
	 <a href=\"".$url."\">".$name."</a></td></tr>\n";	 
      $i++;
     }
   echo " </table>\n";
   }
  echo "</td></tr>\n";
 }
echo "</table>\n";

?>

надо чтобы подменю выводилось не вбок а вниз и не закрывалось какое-то время. у меня же сейчас подменю вообще не выводит ::unsure.gif::10
 

Beavis

Banned
Rionin
А зачем ты написал в тему про PHP, если вопрос про JavaScript ?
 

kruglov

Новичок
Проблема в чем - что php не печатает тот текст, который нужно, или javascript не работает как надо?
 

Rionin

Новичок
javascript работает, не получается связать его нормально с массивом
 

dimagolov

Новичок
Rionin, твоя проблема таки в JS, так как style.visibility перестали пользовать еще в прошлом веке. Найди нормальное JS меню, если самому лень писать. Потому что это надо полностью переделывать.
 

kruglov

Новичок
style.visibility перестали пользовать еще в прошлом веке
Но оно от этого не перестало работать. Просто у него своя ниша, отличная от display - чтоб объект скрыть, а место его не "схлопывать".
 

dimagolov

Новичок
kruglov, ну вот с трудом представляю дизайн, в котором такое нужно, оставлять белые пятна. Ну а так как в коде тут position: absolute то это как раз случай дремучести скрипта, написанного до сотворения мира.
 
Сверху