Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как привязать слой к слову (https://javascript.ru/forum/misc/3901-kak-privyazat-slojj-k-slovu.html)

matana 04.06.2009 01:02

как привязать слой к слову
 
Здравствуйте!
Этот слой - всплывающая подсказка. Можно ли его привязать не к странице, а к слову?
#layer2
{
background-color:#ffffff;
position: absolute;
overflow: auto;
border-bottom: 1px solid;
border-top: 1px solid;
padding: 2px 10px;
width:400px;
height: 400px;
left: 5%;
top: 5%;
visibilitY:hidden;
}

ZoNT 04.06.2009 09:53

что есть слово?
<b>С</b>л<span>о<i>в</i></span>о
- это слово?

Так вот привязаться можно к элементу (тегу) на странице, так как его координаты можно получить.

Gvozd 04.06.2009 09:56

а получить координаты элемента можно с помощью статьи

matana 04.06.2009 10:48

Загадочный ответ...
Вызывает новые вопросы:
1. как получить эти координаты,
2. в таблице стилей все равно писать пиксели,
3. ссылка на функцию не изменится?
Слово - это просто слово, например, "файл". Я представляю, что нужный мне результат выглядит, как контекстное меню в Windows: подсказка всплывает в зависимости от положения слова на экране сбоку, сверху или снизу от него. Как сделать - не знаю. Пока подгоняю методом подбора координат - муторно.

Kolyaj 04.06.2009 10:55

Цитата:

Сообщение от matana
Слово - это просто слово

Слово не является сущностью, сущностью является тег. Поэтому на слово нельзя повесить никаких событий.

B~Vladi 05.06.2009 10:02

Цитата:

Сообщение от matana
Можно ли его привязать не к странице, а к слову?

Немного не правельно поставлен вопрос. Если у тебя есть див (ect), то привязать к нему какие-либу данные можно в прямом смысле, т.е. как-то так:
var div=document.getElementById('id'); // как вариант
div.hint='текст подсказки';
// тут же вешаем обработчики на него, создаём узел подсказки со своим классом в этом же диве.

Это можно сделать в цикле, если таких элементов много.

B~Vladi 05.06.2009 10:06

А если тебе не нужно каких-либо эфффектов при появлении/скрытии подсказки, можно сделать ещё проще:

1. Использовать стандартную подсказку.
2. Сделать её на CSS(если необходим свой стиль отображения). Но тогда для совместимости это должна быть ссылка.

matana 06.06.2009 20:20

Кое-что поняла, спасибо, и даже сделала, но вариантов так много... Если еще есть варианты, поделитесь, пожалуйста.

Gvozd 06.06.2009 20:35

если тебе хочется еще вариантов, то держи:
1)можно все-таки кое-что сделать именно для слов. но надо делать вручную.
берем разбираем все textNode-элементы
их можно плучить например просмотрев все textNode-потомки каждого из тегов(document.getElementsByTagsName('*'))
в каждом из них регуляркой находим необходимые нам "слова" , и обрачиваем их в HTML-тег(например в SPAN), после чего на этот тег можно уже повесить свой скрипт(обработчик onmouseover,onmouseout,onmousemove) всплывающей подсказки
таким образом мы можем для всех "слов", котрые пожелаем сделать подсказку
в идеале этот скрипт может например принимать список пар "слово"->"подсказка", и сам разнесет эти подсказки по документу, либо по его части
в реализации такого скрипта вам понадобятся статьи:
http://javascript.ru/RegExp
http://javascript.ru/start/dom
http://javascript.ru/tutorial/basic/regular-expression

если появятся уточняющие вопросы, не освещенные в этих статьях, задавайте.
отвечу, либо дам ссылку на необходимый вам материал

B~Vladi 07.06.2009 04:13

Вобщем, если нужна тупо подсказка для чего-либо - юзаем стандартные вещи, если такой вариант не в кайф и нада всё это дело оформить - юзаем CSS это оч просто. Могу скинуть темповый вариант ;)


Часовой пояс GMT +3, время: 13:45.