Jump to content
  • 0

Помогите поправитьт код?


red-nicolas
 Share

Question

Вот код меню, которое раскрывается на под меню при щелчке и закрывается при щелчке, но есть проблема. Как сделать, что бы подменю не закрывалось при нажатии пункта подменю?

<script type="text/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";
}
}
</script>
<style type="text/css">
#menu_body ul li{list-style-type:none; margin-left:-40px;padding-left:0px}
</style>
</head>
<body onload="allclose()">
<div id="menu_body">
<ul>
<li><a class="mainlevelmain_menu" href="#" onclick="openMenu('sub_menu_1');return(false)">Хлебопекарное оборудованеи</a>
<ul id="sub_menu_1">
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=21&Itemid=58">• мукопросеиватели</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=23&Itemid=59">• тестомесы</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=24&Itemid=60">• миксеры</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=25&Itemid=61">• тестоделители</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=26&Itemid=62">• тестоокруглители</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=28&Itemid=64">• тестозакатки</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=29&Itemid=65">• тестораскатки</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=31&Itemid=67">• конвекционные печи</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=34&Itemid=70">• ротационные печи</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=35&Itemid=71">• хлеборезки</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=37&Itemid=73">• макаронные пресса</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=61&Itemid=101">• блинные аппараты</a></li>
</ul>
</li>
<li><a class="mainlevelmain_menu" href="#" onclick="openMenu('sub_menu_2');return(false)">Кондитерское оборудование</a>
<ul id="sub_menu_2">
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=24&Itemid=60">• миксеры</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=45&Itemid=85">• отсадочные машины для печенья</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=46&Itemid=86">• глазировочные машины</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=47&Itemid=87">• отсадочные машины для начинки</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=48&Itemid=88">• конфетное оборудование</a></li>
</ul>
</li>
<li><a class="mainlevelmain_menu" href="#" onclick="openMenu('sub_menu_3');return(false)">Мясоперерабат. оборудование</a>
<ul id="sub_menu_3">
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=50&Itemid=90">• блокорезки</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=51&Itemid=91">• волчки</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=52&Itemid=92">• кутеры</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=53&Itemid=93">• фаршемесы</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=54&Itemid=94">• шприцы</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=55&Itemid=95">• клипсаторы</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=56&Itemid=96">• пельменные аппараты</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=57&Itemid=97">• котлетные аппараты</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=58&Itemid=98">• термокамеры</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=59&Itemid=99">• коптильные камеры</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=60&Itemid=100">• шокофризер</a></li>
</ul>
</li>
<li><a class="mainlevelmain_menu" href="#" onclick="openMenu('sub_menu_4');return(false)">Упаковочное оборудование</a>
<ul id="sub_menu_4">
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=63&Itemid=103">• термоупаковка</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=64&Itemid=104">• вакуумная упаковка</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=65&Itemid=105">• вертикальные упаковщики</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=66&Itemid=106">• горизонтальные упаковщики</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=67&Itemid=107">• клипсаторы</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=68&Itemid=108">• запайщики</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=69&Itemid=109">• пресса для отходов</a></li>
</ul>
</li>
<li><a class="mainlevelmain_menu" href="#" onclick="openMenu('sub_menu_5');return(false)">Пиццерийное оборудование</a>
<ul id="sub_menu_5">
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=23&Itemid=59">• тестомесы</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=30&Itemid=78">• пиццепреса</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=29&Itemid=65">• раскатки</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=36&Itemid=83">• овощерезка-сыротерка</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=41&Itemid=80">• блендоры и бликсеры</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=42&Itemid=81">• охлаждаемый стол</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=33&Itemid=79">• печь для пиццы</a></li>
<li><a class="mainlevelmain_menu_1" href="http://info-food.ru/index.php?option=com_content&task=view&id=43&Itemid=82">• инвентарь</a></li>
</ul>
</li>
</ul>
</div>

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

<script type="text/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 (id != id_menu[i] && document.getElementById(id_menu[i]).style.display != "block") {
}
}
if (document.getElementById(id).style.display == "block"){
document.getElementById(id).style.display = "none";
}else{
document.getElementById(id).style.display = "block";
}
}
</script>

Не раблтает как надо?

Link to comment
Share on other sites

  • 0

2red-nicolas, как я и думал. Вы батенька просто банальный копипастер.

Я же сказал: "в условии цикла достаточно добавить", а вы тупо создали второе пустое (!) условие.

Речь шла об этом.

function openMenu(id){
for (i=0; i < id_menu.length; i++){
if (id != id_menu[i] && document.getElementById(id_menu[i]).style.display != "block") {
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";
}
}

И возьму на заметку, вам больше не помогать.

Link to comment
Share on other sites

  • 0

кошмар... это надо было умудриться такое сотворить... топик в новичковый раздел переносим.

red-nicolas, вы вообще, сэр, понимаете алгоритм работы скрипта? (к слову: алгоритм не зависит от языка программирования, потому отмазки типа "я знаю делфи, а тут джаваскрипт" не прокатят)

на пальцах:

function openMenu(id){

for (i=0; i

if (id != id_menu){

document.getElementById(id_menu).style.display = "none";

}

if (id != id_menu && document.getElementById(id_menu).style.display != "block") {

}

}

if (document.getElementById(id).style.display == "block"){

document.getElementById(id).style.display = "none";

}else{

document.getElementById(id).style.display = "block";

}

}

вопрос - что такое фигурные скобки {} ?

ответ - последовательность (блок) команд (операций) ну и так далее. в паскале вместо скобок используются слова begin и end - сути не меняет.

смотрим на фрагмент, который надо было изменить:

if (id != id_menu){

document.getElementById(id_menu).style.display = "none";

}

if (id != id_menu && document.getElementById(id_menu).style.display != "block") {

}

т.е. логика: при выполнении условия (id != id_menu) выполняем блок команд от { до первой встреченной } (разумеется если в этом блоке нет вложенных блоков), а их нет.

идем дальше, слледующее условие - то, что надо было вставить. но куда вставить? уже по id != id_menu можно догадаться, не зная никакого языка, что требуется не добавить строку, а заменить имеющуюся!

так что советую приобрести любой учебник по информатике для 7-8 класса вроде, в котором описана работа с программой "паркетчик". очень хороший тренажер для изучения алгоритмизации. причем достаточно задания выполнять (и даже желательно) не имея самой программы, а на бумаге ручкой и давать проверить знакомому программисту

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