Jump to content
  • 0

проблема с раскрывающимся списком


Shar
 Share

Question

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

 <ul class="leftmenu">
<li><a href="http://www.example.net/index.php" class="l_links">Главная</a></li>
<li><a onClick="openMenu('sub_menu_1');return(false)" [b]href="http://www.sovtest.net/company.php"[/b] class="l_links">О компании</a>
<ul id="sub_menu_1" >
<li><a href="http://www.example.net/license.php" class="menu2">Лицензии</a></li>
<li><a href="http://www.example.net/partners.php" class="menu2">Партнеры</a></li>
<li><a href="http://www.example.net/corporation.php" class="menu2">Корпоративные клиенты</a></li>
<li><a href="http://www.example.net/news.php" class="menu2">Новости</a></li>
<li><a href="http://www.example.net/vacans.php" class="menu2">Вакансии</a></li>
<li><a href="http://www.sovtest.net/contacts.php" class="menu2">Контакты</a></li>
</ul>
</li>
</ul>

и javascript нему :

 var id_menu = new Array('sub_menu_1','sub_menu_2','sub_menu_3','sub_menu_4','sub_menu_5');
function allclose() {
for (i=0; i < id_menu.length; i++){
document.getElementById(id_menu[i]).style.display = "none";
}
}
function openMenu(id){
for (i=0; i < id_menu.length; i++){
if (id != id_menu[i]){
document.getElementById(id_menu[i]).style.display = "none";
}
}
if (document.getElementById(id).style.display == "block"){
document.getElementById(id).style.display = "none";
}else{
document.getElementById(id).style.display = "block";
}
}

Как сделать так чтобы при щелчке на пункте меню первого уровня список не только раскрывался но и переходил на нужную страницу указанную в пункте первого уровня(выделено жирным), В javascript я не знаток, может можно как то 2 функции поставить на одно событие?

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0
Как сделать так чтобы при щелчке на пункте меню первого уровня список не только раскрывался но и переходил на нужную страницу указанную в пункте первого уровня(выделено жирным),

Как это? вы хотите чтобы меню сначало открылось, потом вся страница исчезла и загрузилась другая которая в адресе?

В javascript я не знаток, может можно как то 2 функции поставить на одно событие?

можно. у вас в атрибуте onClick стоит вызов функции, там же допишите вызов еще одной и все.

Link to comment
Share on other sites

  • 0

У меня тоже такая проблема, потому не стал создавать отдельный пост.

Т.к. я нуб, то реализовал список на css и JS

<SCRIPT language="JavaScript">
<!--
function toggleList(eTarget){
eTarget.style.display == "none" ?
eTarget.style.display = "block":
eTarget.style.display = "none";
}
//-->
</SCRIPT>
<ul ID="idListOne" NAME="idListOne">
<li onclick="toggleList(idList1)"><a href="#">Ля-ля-ля</a>
<ul ID="idList1" NAME="idList1" STYLE="display:none;" ONCLICK="window.event.cancelBubble=true">

<li><a href="xxx.htm" target="content">Ля-ля-ля</a></li>

<li><a href="xxx.htm">Ля-ля-ля</a></li>
</ul>
</li>

<li onclick="toggleList(idList2)"><a href="#">бла-бла-бла</a>
<ul ID="idList2" NAME="idList2" STYLE="display:none;">

<li><a href="xxx.html">бла-бла-бла</a></li>

<li><a href="xxx.html">Новые материалы</a></li>

</ul>

</li>
</ul>

Все работает, но проблема в том, что список закрывается по щелчку не только на

(как хотелось бы), а также и по
  • , вложенному в этот
  • .

    Нашел, что данную проблему решает код ONCLICK="window.event.cancelBubble=true", но это почему-то не работает в Firefox ;)

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

Link to comment
Share on other sites

  • 0
Че-то перестало работать и там и там... А если у меня это все в фрейме, синтаксис как-то поменяется?

т.е. ONCLICK="window.event.preventDefault();" должен содержать имя фрейма и если да то где?

Не-е-е ты не нуб, ты - лентяй! ;)

event.preventDefault(); - работает только в FF & Opera и не работает в IE (осел здесь нервно курит и ругается)

event.returnValue=false; - это работает только в осле

и потому ОДНОВРЕМЕННО эти функции не совместимы

Возможно лучше будет алгоритм, когда в функции передается линк на СОБЫТИЕ, а не элемент. по событию определяется на каком элементе оно произошло, делаются с этим элементом заложенные действия и функция возвращает остановку распространения события по дереву документа

Вот в качестве примера (недавно только писал) http://forum.htmlbook.ru/viewtopic.php?pid=38409#p38409

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy