 
			
				01.04.2010, 00:00
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 31.03.2010 
					
					
					
						Сообщений: 5
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Проблема с всплывающими меню
			 
			
		
		
		
		Люди я делаю сайт и столкнулся с проблемой. Нашел скрипт всплывающего меню кое-как отредактировал: сделал так, чтобы всплывающая часть меню, всплывая раздвигала остальные пункты, но после того как мышу отвожу всплывающая часть залазит обратно. 
Как сделать что бы всплывающая часть вылазила по клику и не залазила без клика обратно.  
P.S.  я в JS ничего толком незнаю, люди, помогите! 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.04.2010, 00:49
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Пионэр 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.11.2009 
					
					
					
						Сообщений: 1,322
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Перечитайте, пожалуйста, Ваше сообщение. Вы объяснились крайне неясно. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.04.2010, 09:17
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Найдите (on)mouseover и (on)mouseout и замените на (on)click. Шанс что будет работать 17%, но большего без кода никто не предложит.) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.04.2010, 13:35
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 猫 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.06.2007 
					
					
					
						Сообщений: 7,504
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Aetae, 
повышаю шанс до 70%    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.04.2010, 14:26
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Gozar
			 
		
	 | 
 
	
		Aetae, 
повышаю шанс до 70%  
	 | 
 
	
 
 Я тож изначально так подумал, но велика вероятность, что закрыие и открытие будет вызываться одновременно, что приведёт к непредсказуемым последствиям.) (ну или при назначении onxxx вызваться вообще последнее назначенное) 
Так что только 17%)  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.04.2010, 14:33
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2008 
					
					
					
						Сообщений: 9,177
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Aetae
			
		
	 | 
 
	| 
		что закрыие и открытие будет вызываться одновременно
	 | 
 
	
 
 JS однопоточный язык, одномоментно выполняется только один поток, в чем есть свои плюсы.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.04.2010, 21:00
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Условно одновременно. Все всплывающие штуки всё равно делаются таймаутом иль интервалом, т.е. ... 
Ну допустим простейший вариант: 
работет
 
<div id='the_id' style="margin:50px;height:60px;background:#ddf;width:50px;"></div>
		<script type="text/javascript">
		function event(o,e,h) {o.addEventListener?o.addEventListener(e, h, false):o.attachEvent('on'+e,h)}
		m={i:50,h:0,s:0}
		id=document.getElementById('the_id');
		event(id,'mouseover',show);
		event(id,'mouseout',hide);
		function show()
		{
		!m.h||clearTimeout(m.h);
		if(m.i<400) {id.style.width=(m.i=m.i+10)+'px';m.s=setTimeout(show,10)}
		}
		function hide()
		{
		!m.s||clearTimeout(m.s)
		if(m.i>50) {id.style.width=(m.i=m.i-10)+'px';m.h=setTimeout(hide,10)}
		}
		</script>
не работает
 
<div id='the_id2' style="margin:50px;height:60px;background:#fdd;width:50px;"></div>
		<script type="text/javascript">
		function event(o,e,h) {o.addEventListener?o.addEventListener(e, h, false):o.attachEvent('on'+e,h)}
		m2={i:50,h:0,s:0}
		id2=document.getElementById('the_id2');
		event(id2,'click',show2);
		event(id2,'click',hide2);
		function show2()
		{
		!m2.h||clearTimeout(m2.h);
		if(m2.i<400) {id2.style.width=(m2.i=m2.i+10)+'px';m2.s=setTimeout(show2,10)}
		}
		function hide2()
		{
		!m2.s||clearTimeout(m2.s)
		if(m2.i>50) {id2.style.width=(m2.i=m2.i-10)+'px';m2.h=setTimeout(hide2,10)}
		}
		</script>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Aetae, 02.04.2010 в 00:20.
				Причина: fxd for ie6 =/
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				02.04.2010, 14:19
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 31.03.2010 
					
					
					
						Сообщений: 5
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Извиняюсь что не долго не появлялся. 
вот мой код скрипта:
 
.glossymenu, .glossymenu li ul{
list-style-type: none;
margin: 0;
padding: 0;
width: 185px; /*WIDTH OF MAIN MENU ITEMS*/
border: 2px solid blue;
}
.glossymenu li{
position: relative;
}
.glossymenu li ul{ /*SUB MENU STYLE*/
width: 190px; /*WIDTH OF SUB MENU ITEMS*/
left: 0;
top: 0;
display: none;
filter:alpha(opacity=100);
-moz-opacity:1;
}
.glossymenu li a{
background: white url(glossyback.gif) repeat-x bottom left;
font: bold 18px Monotype Corsiva, Helvetica, sans-serif;
color: red;
display: block;
width: auto;
padding: 5px 0;
padding-left: 10px;
text-decoration: none;
}
.glossymenu .arrowdiv{
position: absolute;
right: 5px;
background: transparent url(arrow.gif) no-repeat center right;
}
.glossymenu li a:visited, .glossymenu li a:active{
color: red
}
.glossymenu li a:hover{
background-image: url(glossyback2.gif);
}
'OnMouseOut'  u 'OnMouseOver' в скрипте нету. 
В моем скрипте указано, что подменю скрыто - display: none;  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось 3aByJIoH, 02.04.2010 в 14:23.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				02.04.2010, 15:06
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 猫 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.06.2007 
					
					
					
						Сообщений: 7,504
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		3aByJIoH, 
 Как говорят в таких случаях ЗАЧЁД или патсталом    . 
 
Вы показываете не скрипт, а css (Cascading Style Sheets - Каскадные таблицы стилей) они отвечают за отображение стиля вашего меню, а не за поведение. Нужный код находится между тегов <script></script> или в подключаемом js файле.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				02.04.2010, 22:49
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 31.03.2010 
					
					
					
						Сообщений: 5
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Извиняюсь, я ж говорил, что я полный нуб... 
только вот такая фигня если я onmouseover u onmouseout заменяю на onclick оно не работает, похоже он при клике моментально открывается и закрывается... короче вот скрипт:
 
var menuids=new Array("verticalmenu") //Enter id(s) of UL menus, separated by commas
var submenuoffset=-2 //Offset of submenus from main menu. Default is -2 pixels.
function createcssmenu(){
for (var i=0; i<menuids.length; i++){
  var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul")
    for (var t=0; t<ultags.length; t++){
    var spanref=document.createElement("span")
		spanref.className="arrowdiv"
		spanref.innerHTML="  "
		ultags[t].parentNode.getElementsByTagName("a")[0].appendChild(spanref)
    ultags[t].parentNode.onmouseover=function(){
    this.getElementsByTagName("ul")[0].style.left=this.parentNode.offsetWidth+submenuoffset+"px"
    this.getElementsByTagName("ul")[0].style.display="block"
    }
    ultags[t].parentNode.onmouseout=function(){
    this.getElementsByTagName("ul")[0].style.display="none"
    }
    }
  }
}
if (window.addEventListener)
window.addEventListener("load", createcssmenu, false)
else if (window.attachEvent)
window.attachEvent("onload", createcssmenu)
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось 3aByJIoH, 03.04.2010 в 12:11.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |