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

HTML+CSS+JavaScript

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

 

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

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

тема: Раскрывающееся меню
 
 автор: Сквиртел13   (21.08.2006 в 14:52)   письмо автору
 
 

Здравствуйте!
Подскажите пожалуйста как сделать так, чтобы при щелчке на пункты основного меню раскрывающееся меню исчезало. А то оно исчезает только при повторном щелчке на тот основной пункт которым было вызванно. Меню написанно на JavaScript.

   
 
 автор: elenaki   (21.08.2006 в 15:01)   письмо автору
 
   для: Сквиртел13   (21.08.2006 в 14:52)
 

скрипт - в студию!
можно сделать временную задержку и делать ненужный слой невидимым через определнное количество секунд.

   
 
 автор: Сквиртел13   (21.08.2006 в 15:10)   письмо автору
 
   для: elenaki   (21.08.2006 в 15:01)
 

Вот скрипт:
<title>Студенческий портал</title>
<style type="text/css">
@import url(style.css);
.closeelem {cursor:hand;list-style-image: url(Knopka.gif)}
.openelem {cursor:hand;list-style-image: url(Knopka.gif)}
.colelem {position:relative; display:none;}
.expelem {position:relative; display:block; list-style-image: url(knopka-4.gif);}

.stili {font-size:14px; font-family:Arial, serif; TEXT-DECORATION: "none"}
</style>

<script language="JavaScript">

function chhidElem (obj,ex)
{
if (obj.className=="colelem")
obj.className="expelem"
else
obj.className="colelem"

if (ex.className=="closeelem")
ex.className="openelem"
else
ex.className="closeelem"
}







</script>

</head>

<body>


<div id="blockmenuN">


<div id="a">

<li onclick="chhidElem(obj1,ex1)"
class="closeelem" id="ex1" title="Права и обязанности студентов
Сессия
Рейтинги
Стипендия">&nbsp; Важно</li><br><br>


<ul style="right:5px" id="obj1" class="colelem" style="bottom:6px" style="font-size:+1; line-height:21px;">

<li><a href="Vagno.php"><div id="a1">&nbsp;Права студентов</div></a></li>

<li><a href=""><div id="a1">&nbsp;Сессия</a></div></li>

<li><a href=""><div id="a1">&nbsp;Рейтинги</a></div></li>

<li><a href=""><div id="a1">&nbsp;Стипендия</a></div></li>

</ul>
<ul id="obj2" class="colelem" style="right:5px" style="bottom:6px" style="font-size:+1; line-height:21px;">

<li><a href="Vagno.php"><div id="a1" >&nbsp;Газета</a></li>
<li><a href="Vagno.php"><div id="a1">&nbsp;Пишем все и обо всем</a></li>
<li><a href="Vagno.php"><div id="a1">&nbsp;Взгляд студента</a></li>

</ul>
</div>
</div>
Правда не весь скрипт, а то он большой!)))

   
 
 автор: Сквиртел13   (22.08.2006 в 13:46)   письмо автору
 
   для: Сквиртел13   (21.08.2006 в 15:10)
 

Подскажите, как решить мою проблему, а то у меня пока не получается, а мне очень нужно! Заранее всем спасибо!

   
 
 автор: ExtraBrain   (22.08.2006 в 14:53)   письмо автору
 
   для: Сквиртел13   (22.08.2006 в 13:46)
 

Посмотрите вот это. Может пригодится.
http://www.extrabrain.kiev.ua/001/newmenu.htm
Это демка, поэтому работают только подпункты выпадающего меню из первого пункта главного меню, но остальное добавить не проблема.

   
 
 автор: Сквиртел13   (23.08.2006 в 13:05)   письмо автору
 
   для: ExtraBrain   (22.08.2006 в 14:53)
 

Такое меню я знаю как делать. Мне нужно не выпадающее меню, а раскрывающееся.
При щелчке на меню выпадает 1 и 2 пункты.
Меню
первый пункт
второй пункт

   
 
 автор: ExtraBrain   (23.08.2006 в 14:27)   письмо автору
 
   для: Сквиртел13   (23.08.2006 в 13:05)
 

Вот что у меня получилось

<html>

<head>
<title>Студенческий портал</title>
<meta http-equiv="Content-Type" content='text/html; charset=windows-1251'> 

<style type="text/css">
 .closeelem { cursor:pointer; list-style-image: url(Knopka.gif) }
 .colelem   { position:relative; display:none; }
 .expelem   { position:relative; display:block; list-style-image: url(knopka-4.gif); }
</style>

<script>

 var flop1=0;
 var flop2=0;
 var flop3=0;
 var flcl1=0;
 var flcl2=0;
 var flcl3=0;

 function setLastOpen(o) {
   if(o=='obj1') { if(flcl1==0) flop1=1; flcl1=0; }
   if(o=='obj2') { if(flcl2==0) flop2=1; flcl2=0; }
   if(o=='obj3') { if(flcl3==0) flop3=1; flcl3=0; }
 }

 function closeLastOpen() {
   if(flop1) { document.getElementById('obj1').className="colelem";flcl1=1;}
   if(flop2) { document.getElementById('obj2').className="colelem";flcl2=1;}
   if(flop3) { document.getElementById('obj3').className="colelem";flcl3=1;}

   flop1=0;   
   flop2=0;
   flop3=0;
 }
 
 function hideAllElem() {
   document.getElementById('obj1').className="colelem";
   document.getElementById('obj2').className="colelem";
   document.getElementById('obj3').className="colelem";
 }

 function chhidElem (o) {
   hideAllElem();
   document.getElementById(o).className="expelem";
   closeLastOpen();
   setLastOpen(o);
 }
</script>

</head>
<body>

<div id="blockmenuN">
 <div id="a">
  <li class="closeelem" onclick="chhidElem('obj1')" 
      title="Важно
             Права и обязанности студентов
             Сессия
             Рейтинги
             Стипендия">
   &nbsp; Важно
  </li>
  <br><br>
  <ul id="obj1" class="colelem" style="right:5px; bottom:6px; font-size:14px; line-height:21px;">
      <li><a href="Vagno.php"><div id="a1">&nbsp;Права студентов</div></a></li>
      <li><a href=""><div id="a1">&nbsp;Сессия</a></div></li>
      <li><a href=""><div id="a1">&nbsp;Рейтинги</a></div></li>
      <li><a href=""><div id="a1">&nbsp;Стипендия</a></div></li>
  </ul>

  <li class="closeelem" onclick="chhidElem('obj2')" 
      title="Студенческая пресса
             Газета
             Пишем все и обо всем
             Взгляд студента">
   &nbsp; Студенческая пресса
  </li>
  <br><br>
  <ul id="obj2" class="colelem" style="right:5px; bottom:6px; font-size:14px; line-height:21px;">
      <li><a href="Vagno.php"><div id="a1" >&nbsp;Газета</a></li>
      <li><a href="Vagno.php"><div id="a1">&nbsp;Пишем все и обо всем</a></li>
      <li><a href="Vagno.php"><div id="a1">&nbsp;Взгляд студента</a></li>
  </ul>
  <li class="closeelem" onclick="chhidElem('obj3')" 
      title="Прочее
             Отдых
             Любовь
             Спорт">
   &nbsp; Прочее
  </li>
  <br><br>
  <ul id="obj3" class="colelem" style="right:5px; bottom:6px; font-size:14px; line-height:21px;">
      <li><a href="Vagno.php"><div id="a1" >&nbsp;Отдых</a></li>
      <li><a href="Vagno.php"><div id="a1">&nbsp;Любовь</a></li>
      <li><a href="Vagno.php"><div id="a1">&nbsp;Спорт</a></li>
  </ul>
 </div>
</div>

</body>
</html>

   
 
 автор: Сквиртел13   (23.08.2006 в 17:10)   письмо автору
 
   для: ExtraBrain   (23.08.2006 в 14:27)
 

Большое большое спасибо!!!!

Только Вы не могли бы мне немного подробнее объяснить этот кусок:

var flop1=0;
var flop2=0;
var flop3=0;
var flcl1=0;
var flcl2=0;
var flcl3=0;
Что это означает?

function setLastOpen(o) {
if(o=='obj1') { if(flcl1==0) flop1=1; flcl1=0; }
if(o=='obj2') { if(flcl2==0) flop2=1; flcl2=0; }
if(o=='obj3') { if(flcl3==0) flop3=1; flcl3=0; }
}
Что делает эта функция?


function closeLastOpen() {
if(flop1) { document.getElementById('obj1').className="colelem";flcl1=1;}
if(flop2) { document.getElementById('obj2').className="colelem";flcl2=1;}
if(flop3) { document.getElementById('obj3').className="colelem";flcl3=1;}
Что делает эта функция?


flop1=0;
flop2=0;
flop3=0;
}
Почему именно flop1=0 ?


function hideAllElem() {
document.getElementById('obj1').className="colelem";
document.getElementById('obj2').className="colelem";
document.getElementById('obj3').className="colelem";
}

function chhidElem (o) {
hideAllElem();
document.getElementById(o).className="expelem";
closeLastOpen();
setLastOpen(o);
}
И что делают эти две функции?
Отдельные части я понимаю. Но не могу связать их воедино т.к. некоторые команды не знаю. Если Вам не трудно объясните пожалуйста.
ЕЩЕ РАЗ БОЛЬШОЕ СПАСИБО!!!

   
 
 автор: ExtraBrain   (23.08.2006 в 17:37)   письмо автору
 
   для: Сквиртел13   (23.08.2006 в 17:10)
 

>Большое большое спасибо!!!!
>
>Только Вы не могли бы мне немного подробнее объяснить этот кусок:
>
>var flop1=0;
> var flop2=0;
> var flop3=0;
> var flcl1=0;
> var flcl2=0;
> var flcl3=0;
>Что это означает? Это набор флагов соответствующих открытым (flop) и закрытым (flcl) подменю. Это обычные переменные и их можно было назвать по другому
>
> function setLastOpen(o) {
> if(o=='obj1') { if(flcl1==0) flop1=1; flcl1=0; }
> if(o=='obj2') { if(flcl2==0) flop2=1; flcl2=0; }
> if(o=='obj3') { if(flcl3==0) flop3=1; flcl3=0; }
> }
>Что делает эта функция? Эта функция определяет какое подменю последним открывалось и выставляет соответсвующие флаги, как бы запоминает последний шаг

>
>
> function closeLastOpen() {
> if(flop1) { document.getElementById('obj1').className="colelem";flcl1=1;}
> if(flop2) { document.getElementById('obj2').className="colelem";flcl2=1;}
> if(flop3) { document.getElementById('obj3').className="colelem";flcl3=1;}
>Что делает эта функция? Эта функция закрывает подменю которое открывалось последним

>
>
> flop1=0;
> flop2=0;
> flop3=0;
> }
>Почему именно flop1=0 ? Это выставляются признаки что все подменю сейчас закрыты

>
>
> function hideAllElem() {
> document.getElementById('obj1').className="colelem";
> document.getElementById('obj2').className="colelem";
> document.getElementById('obj3').className="colelem";
> }
>
> function chhidElem (o) {
> hideAllElem();
> document.getElementById(o).className="expelem";
> closeLastOpen();
> setLastOpen(o);
> }
>И что делают эти две функции? Первая закрывает все подменю. Вторая открывает подменю если оно закрыто или закрывает если мы клацнули на уже открытом подменю

>Отдельные части я понимаю. Но не могу связать их воедино т.к. некоторые команды не знаю. Если Вам не трудно объясните пожалуйста.
>ЕЩЕ РАЗ БОЛЬШОЕ СПАСИБО!!!

   
 
 автор: Сквиртел13   (23.08.2006 в 17:47)   письмо автору
 
   для: ExtraBrain   (23.08.2006 в 14:27)
 

Понятно. Большое спасибо за объяснение!

   
 
 автор: elenaki   (22.08.2006 в 15:02)   письмо автору
 
   для: Сквиртел13   (22.08.2006 в 13:46)
 

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

   
 
 автор: Сквиртел13   (23.08.2006 в 13:02)   письмо автору
 
   для: elenaki   (22.08.2006 в 15:02)
 

Да со слоями работать легче. Но как сделать с помощью слоев раскрывающееся меню я не знаю. Я нашла только со списками. Может подскажете где найти? Заранее спасибо.

   
Rambler's Top100
вверх

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