Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » HTML, CSS, JavaScript

Помогите разобраться в коде динамического меню

Обсуждение темы Помогите разобраться в коде динамического меню в разделе HTML, CSS, JavaScript, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Скачал с одного сайта исходник динамического меню. Естественно хочу переделать его. Поэтому пытаюсь в нём разобраться. Но мои знания в JavaScript и html ...


Закрытая тема
 
Опции темы
Старый 10.01.2006, 16:29   #1
Скачал с одного сайта исходник динамического меню. Естественно хочу переделать его. Поэтому пытаюсь в нём разобраться. Но мои знания в JavaScript и html не очень глубокие. Поэтому возникли проблемы.

Ответьте, пожалуйста, на какие сможете вопросы. После вопросов я приведу пример кода html файла (без css) и пример кода js файла. А также прикреплю исходники к теме.

Вопросы:
1) Что происходит в функциях?
getScroll()
showmenu(Nmenu)
hidemenu(Nmenu)
hideOldMenu()
make_base_menu()
make_sl_menu(Nmenu)
make_sl_menus()
2) Что за параметр Nmenu? Для чего он используется?
3) Зачем переменная str в функциях make_base_menu() и make_sl_menu(Nmenu)? Как она используется?


Код:
<html>
<head>
<title>WOweb.ru - Scripts - JavaScript - LVM 1.0</title>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">



<script src="vertical_menu_example.js"></script> 
<script>document.write(make_sl_menus());</script>
</head>
<body bgcolor="#EDEDED">
           <script>
           document.write(make_base_menu()); // Формирование главного меню
           </script>
</body>
</html>
Код:
base_menu_name='Заголовок меню';
moutcolor='#FFFFFF';  // Цвет пункта меню
movercolor='#D0E0FF'; // Цвет пункта меню при наведении курсора
widthOfMenu='160px';  // Ширина меню

var menu=new Array(); // Массив с данными меню

var index=0;          // Блок первого пункта меню начинается с "var index=0;"
menu[index] = new Array(
	['Пункт меню 1',''],
        ['http://www.woweb.ru','Пункт подменю 1 Описание'],  // Описание не обязательно,
	['http://www.woweb.ru','Пункт подменю 2 Описание'],  // и вообще формат этой записи - произвольный.
	['http://www.woweb.ru','Пункт подменю 3 Описание'],
	['http://www.woweb.ru','Пункт подменю 4 Описание'],
	['http://www.woweb.ru','Пункт подменю 5 Описание']   // В конце последнего пункта подменю запятой быть не должно!
);                       // Заканчивается блок вот этим ");"

index++;                 // Последующие блоки начинаются с "index++;"
menu[index] = new Array(
	['Пункт меню 2',''],
	['http://fun.woweb.ru','Развлечения Описание'],
	['http://www.wolist.ru','Каталог сайтов Описание'],
	['http://anekdot.woweb.ru','Анекдоты Описание']
);

index++;
menu[index] = new Array(
	['Пункт меню N',''],
	['http://paradox.net.ru/','Paradox.net.ru Пример действующего меню'],
	['http://paradox.net.ru/photo/','Paradox.net.ru. Фотоальбом Фотообои'],
	['http://paradox.net.ru/hardnsoft/','Paradox.net.ru. Hard & Soft Полезные статейки']
);

// Конец массива

var s_name,mn,d_name,hmenu,x,y;
var timerID = null;
function getScroll()
         {
         scrollXY=document.getElementsByTagName((document.compatMode && document.compatMode == 'CSS1Compat') ? "HTML" : "BODY")[0];
	 return scrollXY.scrollTop;
         }
var oldmenu, oldcell,timerID;
function showmenu(Nmenu)
         {
         menu='menu'+Nmenu;
         cell='d'+Nmenu;
         if (oldmenu!=null){document.all(oldmenu).style.visibility='hidden';}
         if (oldcell!=null){document.all(oldcell).style.background=moutcolor;}
         document.all(cell).style.background=movercolor;
         x=155;
         y=getScroll()+event.clientY-event.offsetY;
         document.all(menu).style.left=x;
         document.all(menu).style.top=y;
         document.all(menu).style.visibility='visible';
         oldmenu=menu;
         oldcell=cell;
         clearTimeout(timerID);
         }
function hidemenu(Nmenu)
         {
         menu='menu'+Nmenu;
         cell='d'+Nmenu;
         if (oldcell!=null){document.all(oldcell).style.background=moutcolor;}
         document.all(menu).style.visibility='hidden';
         }
function hideOldMenu()
         {
         hidemenu(oldmenu.slice(4));
         }


function make_base_menu() // Формирование главного меню
         {
         str  = '<table name=\"basemenu\"';
         str += ' id=\"basemenu\"';
         str += ' class=\"menuleft\"';
         str += ' width=\"'+widthOfMenu+'\"';
         str += ' border=\"0\"';
         str += ' cellpadding=\"2px\">';
         str += ' <tr><td name=\"headlink\"';
         str += ' id=\"headlink\"';
         str += ' class=\"headmenu\"';
         str += ' align=\"center\">';
         str += base_menu_name;
         str += ' </td></tr>';

         for (i=1; i<=menu.length; i++)
             {
             str_item  = ' <tr bgcolor=\"#FFFFFF\">';
             str_item += ' <td onmouseover=\"showmenu(' + i + ',event)\"';
             str_item += ' onmouseout=\"timerID=setTimeout(\'hidemenu(' + i + ',event)\',1000)\"';
             str_item += ' name=\"d' + i + '\" id=\"d' + i + '\"> &nbsp';
             str_item += menu[i-1][0][0];
             str_item += ' </td></tr>';
             str += str_item;
             }
         str +='</table>';
         return str;
         }

function make_sl_menu(Nmenu) // Формирование подменю
         {
         itemObj=menu[Nmenu];
         str ='<div name=\"menu'+Nmenu+'\"';
         str+=' id=\"menu'+(Nmenu+1)+'\"';
         str+=' class=\"secondmenu\"';
         str+=' onmouseover=\"clearTimeout(timerID)\"';
         str+=' onmouseout=\"timerID=setTimeout(\'hidemenu('+(Nmenu+1)+')\',1000)\">';
         for (i=1; i<itemObj.length; i++)
             {
             str_item  = ' <a class=\"m\" href=\"';
             str_item += itemObj[i][0];
             str_item += ' \" target=_blank>';
             str_item += itemObj[i][1];
             str_item += ' </a>
';
             str += str_item;
             }
         str +='</div>';
         return str;
         }

function make_sl_menus() // Поочерёдное формирование всех подменю
         {
         result='';
         for (j=0; j<menu.length; j++)
             {
             result+=make_sl_menu(j);
             }
         return result;
         }
 
Старый 10.01.2006, 16:29
Ссылки
Старый 15.01.2006, 15:40   #2
Ты думаешь кто то бедет это разгребать ???

Вот программы для создания меню, не заморачуй себе голову:

DHTML Menu Builder 4.0

Xara Menu Maker v1.1818

А поиском искал, вот первая же ссылка в Гугле http://www.nattisoft.de/html/classNMenu.html
 
Старый 17.01.2006, 13:11   #3
По моему ничего сложного тут нет... просто читай внимательно сам код, и еще, есть два способа вставить меню в страницу: методом подзагрузки и прямой вставкой кода в страницу. Каждый из них по своему хорош и плох... Второй хорошо индексируется поисковиками, второй облегчает загрузку страницы... по моему мнению самая нормальная прога для создания dhtml меню это NAV Studio... а так, задавай вопрос конкретнее...
 
Старый 17.01.2006, 13:11
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу разобраться с меню для сайта Ishanuee HTML, CSS, JavaScript 13 12.12.2014 07:33
Помогите разобраться с выпадающим меню Smatry HTML, CSS, JavaScript 4 02.10.2010 14:48
Помогите найти ошибку в php коде 74ivan74 ASP, Perl, PHP и MySQL 9 30.05.2010 18:13
Что неправильно в коде? Помогите плиз! spart Технологии Flash 3 02.02.2008 21:36
Помогите разобраться! (o)ne ASP, Perl, PHP и MySQL 8 02.01.2005 17:00


Текущее время: 16:00. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум