• Поиск по форумам
  •  
      Этот форум закрыт. Новый форум располагается по адресу http://forum.use.ru  

      Nordnet Форум
      Программирование
      ПОМОГИТЕ по Java Script !!!!!
     
    Страницы: 1
    Автор Тема:  ПОМОГИТЕ по Java Script !!!!!
    TEHb 

    регистрация: 03-07-2006 в 10:47
    сообщений: 2

    отправлено 03-07-2006 11:18    
    Вобщем слева есть меню (Рисованное), из него выезжает ещё меню (уже с текстовыми ссылками)....
    Вопрос: Как сделать так, чтобы из ссылок выезжало такое же меню ссылками ???????????

    например у меню ссылками такой код:
    _________________________________________
    function mmLoadMenus()
    {
    if (window.mm_menu_0110215301_1) return;
    window.mm_menu_0110215301_1 = new Menu("root",165,36,"Verdana, Arial, Helvetica, sans-serif",14,"#666666","#ffffff","#ccccff","#9999ff","left","middle",5,1,1000,-5,7,true,true,true,0,true,true);
    mm_menu_0110215301_1.addMenuItem("название ссылки","parent.имя таргета.location='адрес гипер ссылки'");
    mm_menu_0110215301_1.bgImageUp="07.jpg";
    mm_menu_0110215301_1.bgImageOver="07.jpg";
    mm_menu_0110215301_1.fontWeight="bold";
    mm_menu_0110215301_1.fontStyle="italic";
    mm_menu_0110215301_1.hideOnMouseOut=true;
    mm_menu_0110215301_1.bgColor='#ffffff';
    ---------------------------------------------------------------
    и надо, что бы из "название ссылки" выехала такая же меню..........??????????
    IoR Poslavshy 

    регистрация: 25-05-2006 в 10:22
    сообщений: 87

    отправлено 05-07-2006 06:04    
    Я вообще делаю несколько таблиц с этими самыми меню и по событию OnmouseOver помещаю их в нужное место ( сначала они за границей экрана ). Так хоть десять менюшек друг из друга вылезти может =)
    IoR Poslavshy 

    регистрация: 25-05-2006 в 10:22
    сообщений: 87

    отправлено 05-07-2006 06:35    
    Начинка html
    <HTML><HEAD><TITLE>nano.lv - Проверка менюшки</TITLE>
    <META http-equiv=Content-Type content="text/html; charset=UTF-8"><LINK 
    href="nano_lv - Проверка менюшки.files/style.css" type=text/css rel=stylesheet>
    <SCRIPT src="nano_lv - Проверка менюшки.files/scripts.js" 
    type=text/javascript></SCRIPT>
    
    <META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
    <BODY onload=initMenu()>
    <TABLE class=MainMenu>
      <TBODY>
      <TR>
        <TD id=mainMenu0 
        onmouseover="mainmenuHightlight(this, 1); drawMenu(findPosX(this), findPosY(this) + 30, 1)"><A 
          href="http://ke.nano.lv/coding/js/dropdown_menu/#">О нас</A></TD>
        <TD class=Splitter></TD>
        <TD id=mainMenu1 
        onmouseover="mainmenuHightlight(this, 1); drawMenu(findPosX(this), findPosY(this) + 30, 2)"><A 
          href="http://ke.nano.lv/coding/js/dropdown_menu/#">Наши клиенты</A></TD>
        <TD class=Splitter></TD>
        <TD id=mainMenu2 
        onmouseover="mainmenuHightlight(this, 1); drawMenu(findPosX(this), findPosY(this) + 30, 3)"><A 
          href="http://ke.nano.lv/coding/js/dropdown_menu/#">Хостинг</A></TD>
        <TD class=Last></TD></TR></TBODY></TABLE></BODY></HTML>








     
    Сообщение было изменено автором 05-07-2006 в 06:36
    IoR Poslavshy 

    регистрация: 25-05-2006 в 10:22
    сообщений: 87

    отправлено 05-07-2006 06:37    
    Начинка скрипта
    function navigateTo(url)
    /*
    	Функция обеспечивет работу "ссылок" в меню.
    */
    {
    	window.location.href = url;
    }
    function mainmenuHightlight(obj, state)
    /*
    	Функция подсвечивает нулевой уровень меню.
    */
    {
    	for (var i = 0; i < 3; i++)
    	{
    		document.getElementById('mainMenu' + i).className = '';
    	}
    	if (obj) obj.className = ( state ? 'Cur' : '');
    }
    
    function hightlightMenuItem(g, n)
    /*
    	Функция подсвечивает элементы выпадающего меню.
    */
    {
    	for (var i = 0; i < menuGroup[g].items.length; i++)
    	{
    		menuGroup[g].items[i].block.className = "MainMenuItem";
    	}
    	if (n >= 0) menuGroup[g].items[n].block.className = "MainMenuItemHover";
    }
    
    var menuGroup = new Array();
    var depth = 0;								//инициализация сервисных переменных скрипта.
    var depthLast = 0;
    var menuHideTimerID = 0;
    
    var hideMenuInterval = 500;					//время в миллисекундах, по истечению которого потерявшая фокус менюшка будет скрыта
    
    var menuItemH = 20;							//высота пункта меню
    var menuItemW = 145;						//ширина пункта меню
    
    menuGroup[0] = new Object();
    menuGroup[0].parentId = -1;					//эта менюшка - корень, parentId = -1 означает отсутствие родителей
    menuGroup[0].items = new Array();			//массив для пунктов меню
    menuGroup[0].depth = 0;						//глубина текущей группы
    menuGroup[0].items[0] = new Object();		//каждый элемент менюшки - объект
    menuGroup[0].items[0].childId = 1;			//ID потомка (чтобы делать многоуровневые меню)
    menuGroup[0].items[0].caption = '';			//что написано на кнопке, т.к. в нашем случае коренное меню скрыто, то здесь ничего нет
    menuGroup[0].items[0].link = '#';			//куда ссылается данный пункт меню, URL
    
    menuGroup[0].items[1] = new Object();
    menuGroup[0].items[1].childId = 2;
    menuGroup[0].items[1].caption = '';
    menuGroup[0].items[1].link = '#';
    
    menuGroup[0].items[2] = new Object();
    menuGroup[0].items[2].childId = 3;
    menuGroup[0].items[2].caption = '';
    menuGroup[0].items[2].link = '#';
    
    menuGroup[1] = new Object();
    menuGroup[1].parentId = 0;
    menuGroup[1].items = new Array();
    menuGroup[1].depth = 1;
    
    menuGroup[1].items[0] = new Object();
    menuGroup[1].items[0].childId = -1;
    menuGroup[1].items[0].caption = 'мы супер';
    menuGroup[1].items[0].link = '#';
    
    menuGroup[1].items[1] = new Object();
    menuGroup[1].items[1].childId = -1;
    menuGroup[1].items[1].caption = 'мы лучшие';
    menuGroup[1].items[1].link = '#';
    
    menuGroup[1].items[2] = new Object();
    menuGroup[1].items[2].childId = -1;
    menuGroup[1].items[2].caption = 'мы рулим';
    menuGroup[1].items[2].link = '#';
    
    menuGroup[1].items[3] = new Object();
    menuGroup[1].items[3].childId = -1;
    menuGroup[1].items[3].caption = 'идите к нам :D';
    menuGroup[1].items[3].link = '#';
    
    menuGroup[2] = new Object();
    menuGroup[2].parentId = 1;
    menuGroup[2].items = new Array();
    menuGroup[2].depth = 1;
    
    menuGroup[2].items[0] = new Object();
    menuGroup[2].items[0].childId = -1;
    menuGroup[2].items[0].caption = 'контора адын';
    menuGroup[2].items[0].link = '#';
    
    menuGroup[2].items[1] = new Object();
    menuGroup[2].items[1].childId = -1;
    menuGroup[2].items[1].caption = 'контора два';
    menuGroup[2].items[1].link = '#';
    
    menuGroup[2].items[2] = new Object();
    menuGroup[2].items[2].childId = -1;
    menuGroup[2].items[2].caption = 'третья :)';
    menuGroup[2].items[2].link = '#';
    
    menuGroup[3] = new Object();
    menuGroup[3].parentId = 1;
    menuGroup[3].items = new Array();
    menuGroup[3].depth = 1;
    
    menuGroup[3].items[0] = new Object();
    menuGroup[3].items[0].childId = -1;
    menuGroup[3].items[0].caption = 'Простой';
    menuGroup[3].items[0].link = '#';
    
    menuGroup[3].items[1] = new Object();
    menuGroup[3].items[1].childId = -1;
    menuGroup[3].items[1].caption = 'Для одарённых';
    menuGroup[3].items[1].link = '#';
    
    menuGroup[3].items[2] = new Object();
    menuGroup[3].items[2].childId = -1;
    menuGroup[3].items[2].caption = 'Крутой';
    menuGroup[3].items[2].link = '#';
    
    menuGroup[3].items[2] = new Object();
    menuGroup[3].items[2].childId = 4;
    menuGroup[3].items[2].caption = 'Божественный';
    menuGroup[3].items[2].link = '#';
    
    menuGroup[4] = new Object();
    menuGroup[4].parentId = 1;
    menuGroup[4].items = new Array();
    menuGroup[4].depth = 2;
    
    menuGroup[4].items[0] = new Object();
    menuGroup[4].items[0].childId = -1;
    menuGroup[4].items[0].caption = 'массаж в подарок';
    menuGroup[4].items[0].link = '#';
    
    menuGroup[4].items[1] = new Object();
    menuGroup[4].items[1].childId = -1;
    menuGroup[4].items[1].caption = 'поход в баню в подарок';
    menuGroup[4].items[1].link = '#';
    
    
    function findPosX(obj)
    /*
    	Функция находит координату Х заданного объекта относительно левого верхнего угла документа.
    */
    {
    	var curleft = 0;
    	if (obj.offsetParent)
    	{
    		while (obj.offsetParent)
    		{
    			curleft += obj.offsetLeft
    			obj = obj.offsetParent;
    		}
    	}
    	else if (obj.x)
    		curleft += obj.x;
    	return curleft;
    }
    
    function findPosY(obj)
    /*
    	Функция находит координату Y заданного объекта относительно левого верхнего угла документа.
    */
    {
    	var curtop = 0;
    	var t = obj;
    	if (t.offsetParent)
    	{
    		while (t.offsetParent)
    		{
    			curtop += t.offsetTop;
    			t = t.offsetParent;
    		}
    	}
    	else if (t.y)
    		curtop += t.y;
    	return curtop;
    }
    
    function hideAllMenus()
    /*
    	Функция скрывает все выпадающие менюшки.
    */
    {
    	for (var i = 1; i < menuGroup.length; i++)
    	{
    		for (var k = 0; k < menuGroup[i].items.length; k++)
    		{
    			menuGroup[i].items[k].block.style.display = 'none';
    		}
    	}
    	mainmenuHightlight(null, 0);
    }
    
    function initMenu()
    /*
    	Функция инициализирует меню.
    */
    {
    	for (var i = 1; i < menuGroup.length; i++)
    	{
    		for (var k = 0; k < menuGroup[i].items.length; k++)
    		{
    			var t = menuGroup[i].items[k];
    			t.block = document.createElement('div');		//генерация DIV'a для данного пункта меню
    			document.body.appendChild(t.block);				//засовываем DIV в DOM
    			t.block.className = 'MainMenuItem';				//устанавливаем CSS-класс для этого элемента
    
    			var offX = (menuGroup[k].depth -1 ) * menuItemW;
    			var offY = k * menuItemH;
    
    			t.block.style.height  = menuItemH + 'px';
    			t.block.style.width  = menuItemW + 'px';
    			
    			//генерация содержимого div'a и присваивание ему различных событий.
    			if (t.link == '')
    			{
    				var cursor = 'default';	
    				var link_href = '';
    				
    			}
    			else
    			{
    				var cursor = 'pointer';	
    				var link_href = 'onclick="navigateTo(\'' + t.link + '\')"';
    			}
    			
    			
    			if (t.childId != -1)
    			{
    				
    				var link_image = ' background-image: url(\'pic/link.gif\'); background-repeat: no-repeat; background-position: 95% 40%';			
    				t.block.innerHTML = '<div style="width: ' + menuItemW + 'px; height: ' + menuItemH + 'px; cursor: ' + cursor + '; ' + link_image + '" ' + link_href + ' onmouseover="drawMenu(parseInt(this.parentNode.style.left)  , parseInt(this.parentNode.style.top), ' + t.childId + '); hightlightMenuItem(' + i + ', ' + k + ')" onmouseout="hideMenuTimed()">' + t.caption + '</div>';
    			
    			}
    			else
    			{
    				var link_image = '';
    				t.block.innerHTML = '<div style="width: ' + menuItemW + 'px; height: ' + menuItemH + 'px; ' + link_image + ' cursor: ' + cursor + ';" ' + link_href + ' onmouseover="hideMenus(' + (menuGroup[i].depth + 1) + '); hightlightMenuItem(' + i + ', ' + k + ');" onmouseout="hideMenuTimed()">' + t.caption + '</div>';
    			}
    		}
    	}
    	document.onclick = hideAllMenus; //скрывать менюшки при щелчке в произвольном месте документа.
    }
    
    function hideMenus(depth)
    /*
    	Скрывает все менюшки, которые глубже или на том же уровне, что и заданная величина.
    	Нужно для корректного сокрытия менюшек при навигации по меню.
    */	
    {
    	clearTimeout(menuHideTimerID);
    	for (var i = 1; i < menuGroup.length; i++)
    	{
    		if (menuGroup[i].depth >= depth)
    		{
    			for (var k = 0; k < menuGroup[i].items.length; k++)
    			{
    				menuGroup[i].items[k].block.style.display = 'none';
    			}
    		}
    	}
    }
    
    function hideMenuTimed()
    /*
    	Закрывает все менюшки через заданный временной интервал. Нужно для сокрытия менюшек в случае когда юзер уберает с них курсор.
    */	
    {
    	menuHideTimerID = setTimeout('hideMenus(0);', hideMenuInterval);
    }
    
    function drawMenu(x, y, groupId)
    /*
    	Отрисовывает в месте с координатами x y менюшку с заданным id
    */
    {
    	hideMenus(menuGroup[groupId].depth);
    	depthLast = menuGroup[groupId].depth;
    	
    	hightlightMenuItem(groupId, -1);
    		
    	for(var n = 0; n < menuGroup[groupId].items.length; n++)
    	{	
    		var t = menuGroup[groupId].items[n];
    		
    		var itemX = x + (menuGroup[groupId].depth -1 ) * menuItemW;
    		var itemY = y + n * menuItemH;
    		
    		t.block.style.left = (16 * (menuGroup[groupId].depth - 1)) + itemX + 'px';
    		t.block.style.top  = (n * 5) + itemY + 'px';
    
    		t.block.style.display  = 'block';
    	}
    }
    IoR Poslavshy 

    регистрация: 25-05-2006 в 10:22
    сообщений: 87

    отправлено 05-07-2006 06:37    
    Начинка CSS
    HTML {
    	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
    }
    BODY {
    	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #6c6c6c; PADDING-TOP: 0px; FONT-FAMILY: Tahoma, Arial
    }
    TABLE {
    	BORDER-COLLAPSE: collapse
    }
    TD {
    	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px
    }
    A {
    	COLOR: #ffffff; TEXT-DECORATION: none
    }
    .Cur {
    	BACKGROUND-COLOR: #86bd3c! important
    }
    .Last {
    	WIDTH: 100%
    }
    .MainMenu {
    	WIDTH: 100%; BORDER-BOTTOM: #74a534 3px solid
    }
    .MainMenu TD {
    	WHITE-SPACE: nowrap; BACKGROUND-COLOR: #8cc63f
    }
    .MainMenuItem {
    	BORDER-TOP: #74a534 1px solid; DISPLAY: none; PADDING-LEFT: 16px; FONT-SIZE: 95%; LEFT: 0px; OVERFLOW: hidden; BORDER-LEFT: #74a534 1px solid; CURSOR: default; COLOR: #ffffff; PADDING-TOP: 4px; POSITION: absolute; TOP: 0px; BACKGROUND-COLOR: #8cc63f
    }
    .MainMenuItemHover {
    	BORDER-TOP: #74a534 1px solid; PADDING-LEFT: 16px; FONT-SIZE: 95%; OVERFLOW: hidden; BORDER-LEFT: #74a534 1px solid; CURSOR: default; COLOR: #ffffff; PADDING-TOP: 4px; POSITION: absolute; BACKGROUND-COLOR: #86bd3c
    }
    
    Force 

    регистрация: 06-12-2001 в 00:09
    сообщений: 20128

    отправлено 31-07-2006 10:25    
    2 Шум:
    У флеша есть один недостаток - некоторые его отключают, чтобы не мешался.
    В любом случае, (бесплатный совет), по сайту нужно уметь ходить любым браузером. Пусть не так удобно, но чтобы это было можно.
    Force 

    регистрация: 06-12-2001 в 00:09
    сообщений: 20128

    отправлено 31-07-2006 11:25    
    2 Шум:
    Пользователи лучше знают, что им надо. И такие сайты обычно идут фтопку, если только на них не расположено что-нить нужное (правда при этом, создатели этих сайтов икают очень часто).
    IG 

    регистрация: 16-01-2002 в 04:21
    сообщений: 2060

    отправлено 18-08-2006 01:09    

    31-07-2006 10:25 сообщение от Force:
    «2 Шум:
    У флеша есть один недостаток - некоторые его отключают, чтобы не мешался.
    В любом случае, (бесплатный совет), по сайту нужно уметь ходить любым браузером. Пусть не так удобно, но чтобы это было можно.»

    У флеша есть и более интересный недостаток. Вот сижу я, скажем, в нете, может даже довольно
    медленном и с оплатой по времени. На одной страничке увидел меню на 10 пунктов, и хочу
    посетить их все (ну не знаю я, в каком именно моё счастье спрятано). И чтобы по 10 раз одно и то же не
    грузить очень люблю пользоваться функцией "открыть в новом окне". Вопрос знатокам:
    если меню написано на флеше, сколько раз икнёт веб-дизайнер, пока я лазаю по этому сайту?

    Блин, тему-то "расползли", аж пост редактировать пришлось...
     
    Сообщение было изменено автором 18-08-2006 в 01:10
    Степан Капуста 

    регистрация: 14-11-2001 в 09:37
    сообщений: 16766

    отправлено 23-08-2006 21:33    

    05-07-2006 06:04 сообщение от IoR Poslavshy:
    «Я вообще делаю несколько таблиц с этими самыми меню и по событию OnmouseOver помещаю их в нужное место ( сначала они за границей экрана ). Так хоть десять менюшек друг из друга вылезти может =)»


    Таблицы в таких делах фтопку. Нужно дивы пользовать...
    IoR Poslavshy 

    регистрация: 25-05-2006 в 10:22
    сообщений: 87

    отправлено 07-09-2006 20:48    
    2Капуста Мне просто таблицы ближе, нагляднее как-то.
    Страницы: 1