Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Помогите исправить код на JS

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Интернет
Предыдущая тема :: Следующая тема  
Автор Сообщение
Томас Андерсон
Гость





СообщениеДобавлено: Пт Фев 13 2004 17:51    Заголовок сообщения: Помогите исправить код на JS Ответить с цитатой

Ситуация: На странице сайта с левой стороны расположено меню. При наведении на пункт меню открывается соответствующее ему подменю (html-код всех частей приведен ниже). Насколько я смог понять JavaScript для каждой кнопки в меню описаны свои процедуры showХ(); и hideХ();, управляющие показом и скрытием подменю. Необходимо добавить подобные подменю для нескольких пунктов меню. Не зная JavaScript мне приходится копировать процедуры showХ(); и hideХ(); для каждой кнопки, что увеличивает размер страницы. Можно ли создать всего две функции show([x]); и hide([x]); со входными параметрами для управления сразу всеми открывающими меню на странице или сделать что-то подобное для оптимизации кода? А может уже готовый есть код для моего случая?

Заранее благодарен всем откликнувшимся.

Код:
Текст меню:

<tr><td><a onMouseOver="show1();hide2();">Пункт меню 1</a></td></tr>
<tr><td><a onMouseOver="hide1();show2();">Пункт меню 2</a></td></tr>

Текст подменю:

<div id=main style="position: absolute; left:147px; top:316px; VISIBILITY: hidden;" onmouseout='hide1(document.all.main)'>
<table width="240">
<tr><td><a>1 пункт подменю</a></td></tr>
<tr><td><a>2 пункт подменю</a></td></tr></table></div>

<div id=main1 style="position: absolute; left:147px; top:351px; VISIBILITY: hidden;" onmouseout='hide2(document.all.main2)'>
<table width="240">
<tr><td><a>1 пункт подменю</a></td></tr>
<tr><td><a>2 пункт подменю</a></td></tr></table></div>


Управление отображением подменю:

<script language="JavaScript" type="text/javascript"><!--
function show1() {document.all.main.style.visibility="visible";}
function hide1() {
menu = document.all.main;
menuX=menu.offsetLeft;
menuY=menu.offsetTop;
objParent=menu.offsetParent;
while (objParent.tagName.toUpperCase()!="BODY") {
menuy+=objParent.offsetTop;
menux+=objParent.offsetLeft;
objParent=objParent.offsetParent;}
mouseY = event.clientY;
mouseX = event.clientX;
scrollX1 = document.body.scrollLeft;
scrollY1 = document.body.scrollTop;
if ((mouseY+scrollY1-2 < menuY) ||
(mouseY+scrollY1 > menuY+menu.offsetHeight) ||
(mouseX+scrollX1 < menuX) ||
(mouseX+scrollX1 > menuX+menu.offsetWidth)) {
menu.style.visibility="hidden";}}
function show2() {document.all.main1.style.visibility="visible";}
function hide2() {
menu = document.all.main1;
menuX=menu.offsetLeft;
menuY=menu.offsetTop;
objParent=menu.offsetParent;
while (objParent.tagName.toUpperCase()!="BODY") {
menuy+=objParent.offsetTop;
menux+=objParent.offsetLeft;
objParent=objParent.offsetParent;}
mouseY = event.clientY;
mouseX = event.clientX;
scrollX1 = document.body.scrollLeft;
scrollY1 = document.body.scrollTop;
if ((mouseY+scrollY1-2 < menuY) ||
(mouseY+scrollY1 > menuY+menu.offsetHeight) ||
(mouseX+scrollX1 < menuX) ||
(mouseX+scrollX1 > menuX+menu.offsetWidth)) {
menu.style.visibility="hidden";}}
//--></script>
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Интернет Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...