Показать сообщение отдельно
  #1 (permalink)  
Старый 03.07.2011, 22:59
Аватар для Барин
Новичок на форуме
Отправить личное сообщение для Барин Посмотреть профиль Найти все сообщения от Барин
 
Регистрация: 21.03.2010
Сообщений: 9

Всплывающее меню (проблемы)
Приветствую всех!
Сделал контекстное меню, но есть неполадки в работе. Так как разбираюсь в Яваскрипте я слабо, то, возможно, мой способ покажется страшным. Однако, если есть советы, я с удовольствием приму их к сведению.
Проблема: Меню возникает по клику и исчезает по уведению мыши, однако, после выбора пункта меню, хочу, чтобы оно закрывалось, но не могу сделать этого. Промучавшись некоторе время замудрил существующий вариант ещё больше. Скрипт стал ПОЧТИ идеален: меню открывается по клику, закрывается по уведению или после выбора, однако, если оно закрылось по выбору пункта, то потом оно откроется нормально, а если оно закрылось по уведению, то потом открывается только со второго раза.
Код (оба варианта меню):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Меню</title>
<script>
function mark(id)
{
	 document.getElementById(id).className = 'hover';
}
/*Сделать не выделенным*/
function not_mark(id)
{
	 document.getElementById(id).className = 'not_hover';
}
/*Показывать если не виден, скрывать если виден*/
function show_hide(id)
{
	 if (document.getElementById(id).className=="")
	 {
		 document.getElementById(id).className="invisible";
	 }
	 else
	 {
		 document.getElementById(id).className="";
	 }
}
/*показать элемент, назначив ему определённный класс*/
function show2(id,classN)
{
	 document.getElementById(id).className=classN;	
 }
/*Сарятать элемент*/
function hide(id)
{
	 document.getElementById(id).className='invisible';
}
function hide2(id)
{
	 if (document.getElementById(id).style.display == 'none')
	 {
		 document.getElementById(id).style.display = '';	
	 }
	 else
	 {
		 document.getElementById(id).style.display = 'none';	
	 }
}
/*Из одного элемента вставить текст в другой*/
function move(id,id2)
{
	 document.getElementById(id).innerHTML = document.getElementById(id2).innerHTML;
}
</script>
<style>
/*Для всех контекстных меню*/
div.context_menu{
position:absolute;
padding-top:4px; padding-bottom:4px; padding-left:3px; padding-right:5px;
border: 1px solid #999999;
border-right: 2px solid #999999;
border-bottom: 2px solid #999999;
background-color:#fcfcfc;
}
/*Стиль пунктов меню*/
div.context_menu div.not_hover{
font-size:12px; color:333333;
text-indent:8px;
height:12px;
cursor:default;
margin-left:2px;
}
div.context_menu div.hover{
font-size:12px; color:333333;
text-indent:8px;
height:12px;
cursor:default;
text-decoration:underline;
padding-left:2px;
}
/*Убрать подчёркивание стрелки*/
img.context_menu_bullet{
float:left;
padding-top:4px;
padding-left:1px;
}
.invisible{
display:none;
}
</style>
</head>
<body>	

 <div style='float:left;margin-top:54px; margin-left:20px; width:130px; text-align:left; margin-right:15px;color:#000000;'>
	 <div id='vibor2_menu_place' onClick=show2('vibor2_menu','context_menu') onMouseOut=hide('vibor2_menu')>
		 <div id='vibor2_menu_current' style='float:left;text-decoration:underline; cursor:default;font-size:11px;'>Выбор 1</div>
		 <img class='context_menu_bullet' src='bullet_mini_bottom.png'>
						
		 <div id='vibor2_menu' onMouseOver=show2('vibor2_menu','context_menu') class='invisible' style='margin-top:10px; margin-left:-14px; width:130px;text-align:left;color:#333333;'>
			 <div id='vibor2_menu_punkt_1' class='not_hover' onMouseOver='mark(this.id)'  onMouseOut='not_mark(this.id)' onClick=move('vibor2_menu_current','vibor2_menu_punkt_1')>Выбор 1</div>
			 <div id='vibor2_menu_punkt_2' class='not_hover' onMouseOver='mark(this.id)'  onMouseOut='not_mark(this.id)' onClick=move('vibor2_menu_current','vibor2_menu_punkt_2')>Выбор 2</div>	
			 <div id='vibor2_menu_punkt_3' class='not_hover' onMouseOver='mark(this.id)'  onMouseOut='not_mark(this.id)' onClick=move('vibor2_menu_current','vibor2_menu_punkt_3')>Выбор 3</div>
		 </div>
	 </div>

<div style='float:left;margin-top:54px; margin-left:20px; width:130px; text-align:left; margin-right:15px;color:#000000;'>
	 <div id='vibor_menu_place' onClick=show2('vibor_menu','context_menu'),hide2('vibor_menu') onMouseOut=hide('vibor_menu')>
		 <div id='vibor_menu_current' style='float:left;text-decoration:underline; cursor:default;font-size:11px;'>Выбор 1</div>
		 <img class='context_menu_bullet' src='bullet_mini_bottom.png'>
						
		 <div id='vibor_menu' onMouseOver=show2('vibor_menu','context_menu') class='invisible' style='margin-top:10px; margin-left:-14px; width:130px;text-align:left;color:#333333;display:none;'>
			 <div id='vibor_menu_punkt_1' class='not_hover' onMouseOver='mark(this.id)'  onMouseOut='not_mark(this.id)' onClick=move('vibor_menu_current','vibor_menu_punkt_1')>Выбор 1</div>
			 <div id='vibor_menu_punkt_2' class='not_hover' onMouseOver='mark(this.id)'  onMouseOut='not_mark(this.id)' onClick=move('vibor_menu_current','vibor_menu_punkt_2')>Выбор 2</div>	
			 <div id='vibor_menu_punkt_3' class='not_hover' onMouseOver='mark(this.id)'  onMouseOut='not_mark(this.id)' onClick=move('vibor_menu_current','vibor_menu_punkt_3')>Выбор 3</div>
		 </div>
	 </div>

</body>
</html>

Для удобства, выкладываю файлом.
Помогите разобраться.
Вложения:
Тип файла: zip Меню.zip (1.8 Кб, 0 просмотров)
Ответить с цитированием