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

HTML+CSS+JavaScript

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

 

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

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

тема: меню: при выборе рубрики раскрываються подрубрики
 
 автор: ronin   (17.10.2008 в 11:18)   письмо автору
 
 

Здравствуйте!
Нашел вот такой скрипт:

<script language="javascript">
function getObj(id) {
    if (document.getElementById) {
        return document.getElementById(id);
    }
    else if (document.all) {
        return document.all[id];
    }
    else if (document.layers) {
        return document.layers[id];
    }
}
function showInfo (id) {
    if (getObj(id).style.display == 'block') {
        getObj(id).style.display = 'none';
    }
    else getObj(id).style.display = 'block';
    placeFooter ();
}
</script>
<?php
include('config.php');
$cat=(int)$_GET['Cat2'];
$q mysql_query("SELECT * FROM catalogs ORDER BY name") or die (mysql_error());
while (
$row mysql_fetch_array($q)) {
echo 
"";
echo 
"<a href=\"javascript:open_window('index.php?id=$row[$cat]',350,180);\">$row[1]</a>";
echo 
"<font color=red>[</font><a  href='#' onClick=\"showInfo('sh_$row[$cat]')\">>=></a><font color=red>]<br></font>\n";
?>
</td><td width="75%" height="220" valign="top">
<?php
 
echo "<div style='display:none;' id=\"sh_".$row[$cat]."\">";
$q2 mysql_query("SELECT * FROM products WHERE id_catalog=$row[$cat] ORDER BY name") or die (mysql_error());
   if (
$q2 && mysql_num_rows($q2)>)
       {
  while (
$row2 mysql_fetch_assoc($q2))
         {
             echo 
"<br><center>\n<table border=1 width=426>\n<tr>\n<td width=400>".$row2['name']."</td>\n</tr>\n</table>\n</center>";
         }
       }
   else  echo 
"<center>нет товаров</center>";

echo 
"</div>";
}

?>

но там один нюанс - если кликаешь по рубрике она раскрывается, но если по другой, первая не сворачивается

  Ответить  
 
 автор: elenaki   (17.10.2008 в 13:16)   письмо автору
 
   для: ronin   (17.10.2008 в 11:18)
 

перед показом слоя, по которому кликнули и id которого вы знаете, надо в цикле скрыть все слои. это проще, чем искать открытые, id которых вы не знаете.

PS чтоб было понятнее задание, помещайте код, который выдает браузер (html), ваши php-вставки никому не нужны.

  Ответить  
 
 автор: ronin   (17.10.2008 в 13:22)   письмо автору
 
   для: elenaki   (17.10.2008 в 13:16)
 

Я извиняюсь, плохо представляю как это сделать. Тыкните пожалуйста пальцем. У меня проблемы с явой-скриптами..

  Ответить  
 
 автор: elenaki   (17.10.2008 в 13:32)   письмо автору
 
   для: ronin   (17.10.2008 в 13:22)
 

запустите ваш скрипт с локалхоста. вы видите меню? а я нет! у меня нет вашей базы. чтоб я увидела, ткните
правой кнопкой и выберите "View source". скопируйте все и поместите сюда. желательно только меню.

  Ответить  
 
 автор: ronin   (17.10.2008 в 13:41)   письмо автору
 
   для: elenaki   (17.10.2008 в 13:32)
 


<SCRIPT language=javascript>
function getObj(id) {
    if (document.getElementById) {
        return document.getElementById(id);
    }
    else if (document.all) {
        return document.all[id];
    }
    else if (document.layers) {
        return document.layers[id];
    }
}
function showInfo (id) {
    if (getObj(id).style.display == 'block') {
        getObj(id).style.display = 'none';
    }
    else getObj(id).style.display = 'block';
    placeFooter ();
}
</SCRIPT>

<META content="MSHTML 6.00.2900.2180" name=GENERATOR></HEAD>
<BODY>
<A href="javascript:open_window('index.php?id=2',350,180);">Города и 
замки</A><FONT color=red>[</FONT>
<A onclick="showInfo('sh_2')" 
href="http://localhost/haltura/efos/menu.php#">&gt;=&gt;</A><FONT 
color=red>]<BR></FONT></TD><TD valign="top" height="220" width="75%">
<DIV id=sh_2 style="DISPLAY: none"><BR>
<CENTER>
<TABLE width=426 border=1>
  <TBODY>
  <TR>
    <TD width=400>Киев</TD></TR></TBODY></TABLE></CENTER><BR>
<CENTER>
<TABLE width=426 border=1>
  <TBODY>
  <TR>
    <TD width=400>Львов</TD></TR></TBODY></TABLE></CENTER><BR>
<CENTER>
<TABLE width=426 border=1>
  <TBODY>
  <TR>
    <TD width=400>Мукачево</TD></TR></TBODY></TABLE></CENTER><BR>
<CENTER>
<TABLE width=426 border=1>
  <TBODY>
  <TR>
    <TD width=400>Ужгород</TD></TR></TBODY></TABLE></CENTER></DIV><A 
href="javascript:open_window('index.php?id=1',350,180);">Здравницы и 
курорты</A><FONT color=red>[</FONT><A onclick="showInfo('sh_1')" 
href="http://localhost/haltura/efos/menu.php#">&gt;=&gt;</A><FONT 
color=red>]<BR></FONT></TD><TD valign="top" height="220" width="75%">
<DIV id=sh_1 style="DISPLAY: none"><BR>
<CENTER>
<TABLE width=426 border=1>
  <TBODY>
  <TR>
    <TD width=400>Трускавец</TD></TR></TBODY></TABLE></CENTER></DIV>

  Ответить  
 
 автор: elenaki   (17.10.2008 в 13:58)   письмо автору
 
   для: ronin   (17.10.2008 в 13:41)
 

function showInfo (id) {
for (i=1; i<3; i++) {
        getObj("sh_"+i).style.display = "none"
}

    (getObj(id).style.display == "block") ? getObj(id).style.display = "none" : getObj(id).style.display = "block"; 

}


вместо 3 в цикле подставляете свое реальное число пунктов меню +1 (т.к. нумерация слоев у вас с sh_1 начата).
в php это число известно. почему-то не закрывается пункт по второму клику на нем же. странно. раньше работало.
сейчас я уже убегаю. посмотрю вечером. или кто-тто еще поможет.

  Ответить  
 
 автор: ronin   (17.10.2008 в 14:25)   письмо автору
 
   для: elenaki   (17.10.2008 в 13:58)
 

Спасибо большое! все работает.
в строчку всавил php:

for (i=1; i<<? echo $count1?>; i++) {

и сам php:

$c=count($row);
$count1=$c+1;

Еще вопрос:

echo "<a href=\"javascript:open_window('index.php?id=$row[$cat]',350,180);\">$row[1]</a>";
echo "<font color=red>[</font><a  href='#' onClick=\"showInfo('sh_$row[$cat]')\">>=></a><font color=red>]<br></font>\n";

как мне сделать одну ссылку, а то здесь 2 ссылки и механизм заложен во вторую.

  Ответить  
 
 автор: ronin   (18.10.2008 в 12:42)   письмо автору
 
   для: ronin   (17.10.2008 в 14:25)
 

помогите объединить обе ссылки

<li class=\"line-2\"><a href=\"javascript:open_window('index.php?id=$row[$cat]',350,180);\"></a>";
<a  href='#' onClick=\"showInfo('sh_$row[$cat]')\">Ссылка</a>";

  Ответить  
 
 автор: elenaki   (18.10.2008 в 16:39)   письмо автору
 
   для: ronin   (18.10.2008 в 12:42)
 

не нужна тут вторая ссылка!
вместо # ставите свой URL. я убрала его, что он не мешал тестировать...

  Ответить  
 
 автор: ronin   (18.10.2008 в 17:06)   письмо автору
 
   для: elenaki   (18.10.2008 в 16:39)
 

я их так объединяю(только больно не бейте!):

<li class=\"line-2\"><a  href=\"javascript:open_window('index.php?id=$row[$cat]',350,180); onClick=\"showInfo('sh_$row[$cat]')\">$row[1]</a>

не работает.
плюс в коде php я начудил:
вместо:

$c=count($row); 
$count1=$c+1; 

нужно читать как

$count1=count($row); 
$count1++;

:)

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

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