Томас Андерсон Гость
|
Добавлено: Пт Фев 13 2004 14:56 Заголовок сообщения: Помогите поправить код на JavaScript |
|
|
Опытные программисты, помогите, пожалуста.
На странице сайта с левой стороны расположено меню. При наведении на пункт меню открывается соответствующее ему подменю (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> |
|
|