Как сделать так чтобы слой не прятался?

nosferatum

Новичок
Как сделать так чтобы слой не прятался?

Очень прошу помощи, столкнулся с такой проблемой:

Есть три элемента:

1) <div id="layer1" name="layer1">, слой изначально спрятан, т.е. style.display='none';
2) некая таблица <table name="table1" id="table1"> которая лежит внутри этого слоя.
3) ссылка, которая не пересекается с двумя предыдущими элементами. При нажатии на ссылку, слой появляется вот так:
href="javascript:document.getElementById('layer1').style.display='';"

Собственно проблема:

Надо чтобы слой прятался как только мышь уходит за его границы. Сперва сделал так:
<div id="layer1" name="layer1" onMouseOut="this.style.display='none';">

При нажатии на ссылку слой появлялся и держался до тех пор пока я не уводил с него мышь, но стоило только навести мышь на таблицу внутри этого слоя, как он тут же исчезал. Я так понимаю что он принимает событие onMouseOut даже если мы уходим на элемент внутри слоя? Как можно с этим бороться?
 

an_kalinovski

Новичок
Я могу ошибатся, т.к. не всё вижу по вопросу... если сделать слою так вот - style="border:1px solid black;" - его границы будут вокруг таблицы или же он будет пмаленькой тонкой хренюшкой над таблицей?
 

MuXaJIbI41981

Новичок
не в этом проблема ..... дело в том что слой исчезает когда мышь натыкается на внутренние элементы. А он должен убираться только если она выходит за границы слоя.
 

an_kalinovski

Новичок
Автор оригинала: MuXaJIbI41981
не в этом проблема ..... дело в том что слой исчезает когда мышь натыкается на внутренние элементы. А он должен убираться только если она выходит за границы слоя.
Извини, откуда ты знаешь в чем проблема если не ты автор темы? Приведи здесь код который не работает у тебя я и тебя вылечу )))))
 

boombick

boombick.org
nosferatum
присвой обработчик события onMouseOut не слою, а таблице
 

an_kalinovski

Новичок
Автор оригинала: boombick
nosferatum
присвой обработчик события onMouseOut не слою, а таблице
ИМХО костыль. А если еще одна таблица в слое понадобится... Предлагаю дождаться что ответит nosferatum
 

nosferatum

Новичок
Продолжается безрезультатная борьба с джаваскриптом... :) Пока ничего толкового. Пытаюсь высмотреть как прячут слои в похожих вещах. Как получу результат, отпишусь.
 

valyala

Новичок
nosferatum, замени

<div id="layer1" name="layer1" onMouseOut="this.style.display='none';">

на

<div id="layer1" name="layer1" onmouseout="this.style.display='none'" onmouseover="this.style.display='block'">
 

BRat

o_0
nosferatum
Происходит "всплывание" события.
повесь на onMouseOut и onMouseOver функции, проверяющие с какого элемента пришло событие.
event.srcElement
 

nosferatum

Новичок
Я свою проблему решил таким образом:

НА сам div прописываем: onMouseOver="this.style.display='';" onMouseOut="this.style.display='none';"

А на каждый элемент внутри этого слоя пишем такое событие: onMouseOver="document.getElementById('layer1').style.display='';"

Таким образом, слой вроде как прячется на совсем короткий промежуток, но потом опять появляется, но только если мы переходим по элементам внутри него. Как только мы покидаем пределы слоя, он сразу же исчезает. Что и требовалось получить. Надеюсь кому-нибудь это поможет. Удачи!
 

denver

?>Скриптер
boombick
Потому что работает для любого элемента в любом браузере
 

an_kalinovski

Новичок
Так пойдёт?


<div id="layer1" name="layer1" style="border:1px solid black;display:none;"
onmouseover="document.getElementById('layer1').style.display='block';"
onmouseout="document.getElementById('layer1').style.display='none';">
<input type="text" />
</div>
<a href="#" onclick="document.getElementById('layer1').style.display='block';">www</a>
 

BRat

o_0
an_kalinovski
неа. Потому что нормальное решение уже было написано мной выше, а это маразм какой-то :)
 

an_kalinovski

Новичок
Автор оригинала: BRat
an_kalinovski
нормальное решение ... написано мной ... а это маразм
Давай не будем письками мерятся. Я написал рабочий вариант того что хочет автор с использованием его же кода... Пусть автор темы и решает что ему покатит больше
 
Сверху