Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Случай с подсказками (https://javascript.ru/forum/misc/36622-sluchajj-s-podskazkami.html)

фонарик 22.03.2013 05:39

Случай с подсказками
 
Доброго времени суток. Подскажите пожалуйста, как правильнее всего поступать в таком случае. У меня есть скрипт, который содержит необходимые подсказки всех встречаемых элементов на странице. Очень удобно, и в самом html меньше буковок. Но встретил такую беду - если на странице нет элемента, которому скрипт хочет присвоить подсказку - то скрипт на этой строчке останавливается. Например:
<style type="text/css">
#wood, #stone, #food {width:50px; height:22px; border:1px solid red; background: #999999; position:absolute; ; top: 21px; cursor:pointer; text-align:center}
#wood{left: 50px}
#stone{left: 120px;}
#food{left: 190px;}
</style>
 
<div id="wood">wood</div>
<div id="stone">stone</div>
<div id="food">food</div>

<script>
wood.title='ёлка'
UnkownObject.title='Тау-кита'
thereIsNoMe.title='грабли'
stone.title='камушек'
food.title='Корм'
</script>
В данном случае подсказка будет только у блока wood. Как нужно оформить всё это дело, чтобы был общий скрипт со всеми подсказками для нужных элементов, которых около 200, чтобы данная схема работала? Сейчас скрипт остановится, если нет элемента на странице, которому присваивается подсказка. Т.е если первого элемента из скрипта нет на странице - то скрипт остановится, так и не начавшись. А хочется чтобы при отсутствии элемента скрипт не обижался и не расстраивался, чтобы присвоил всё-таки подсказки присутствующим элементам.

megaupload 22.03.2013 06:14

var wood = document.getElementById('wood');
if(wood) wood.title = 'ёлка'




Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.

фонарик 22.03.2013 06:34

Вы правы, javascript я знаю плохо, но у меня была проблема не в отсутствии решения как такового. Да, присвоить в переменную элемент и проверить есть ли он там - дело нехитрое. Вы считаете, что это правильно и практично делать так для каждой из 200 подсказок? Я просто подумал, что возможно есть более хитрый и простой способ. Хотя, также возможно что я ошибаюсь.

danik.js 22.03.2013 09:42

Товарищ, вы тот еще извращенец.
Цитата:

Сообщение от фонарик
есть более хитрый и простой способ

Конечно есть
<div id="wood" title="Елка"></div>


Если уж хочется удовлетворить больную фантазию, вот вам код:
<a id="wood">Wood</a>
<a id="stone">Stone</a>
<a id="food">Food</a>
<script>
var titles = {
    wood: 'елка',
    stone: 'камушек',
    thereIsNoMe: 'грабли',
    food: 'Корм'
}

for (var key in titles) {
    if (window[key]) {
        window[key].title = titles[key];
    }
}
</script>

фонарик 22.03.2013 12:40

Спасибо, мистер danik.js, очень интересный и хитрый способ :)
Цитата:

Сообщение от danik.js (Сообщение 241967)
Товарищ, вы тот еще извращенец.

Ну если подсказка из 5 букв и их 2-3 штуки, то оно в хтмл коде выглядит тускло. А представьте какая свалка будет если подсказка где 1 слово, где 5? И элементов 20. Разве вынести все подсказки в отдельный файл, чтобы было легче понимать устройство хтмл, это извращение?

danik.js 22.03.2013 12:56

Цитата:

Сообщение от фонарик
Разве вынести все подсказки в отдельный файл, чтобы было легче понимать устройство хтмл, это извращение?

А разве постоянно писать одни и те же теги - не извращение?
<div>..</div> опять <div>..</div.. Можно же в js-файле держать только контент этих дивов и генерить автоматически.
Цитата:

Сообщение от фонарик
чтобы было легче понимать устройство хтмл

Ага. Можно еще из Войны и Мира выкинуть каждую вторую главу и засунуть в отдельный том что-бы "облегчить понимание". И это безусловно не извращение ))
Короче, всему свое место. Для задания тайтлов есть html-атрибут title="".
Форматируйте код для удобства и будет все понятно.


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