Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Объясните мне скрипт


Автор: Bangladesh 26.7.2005, 06:41
моя цель, как javascriptера - это научиться делать выпадющие меню и работать с графикой. вот первый скрипт, который, я думаю, подведет меня к моей цели ближе. этот скрипт делает всплывающие подсказки. мне бы хотелось, чтобы кто-нибудь объяснил его. строки я укажу.

Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Untitled</title>
<style type="text/css">
.tool_tip {
 
 font-family: Tahoma, verdana;
 font-size: 8pt;
 position: absolute;
 visibility: hidden;
 padding-top: 2px;
 padding-left: 5px;
 padding-right: 5px;
 padding-bottom: 2px;
 /* styles */
 background-color: #EEEEEE;
 border: 1px #999999 dashed;
}
</style>


а вот сам скрипт.

Код

<script type="text/javascript">
<!--
ToolTip.offsetX=20; //смещения подсказки от курсора
ToolTip.offsetY=15; //

function ToolTip(obj, text) {
  
  if(!obj||obj.nodeType!=1) throw "Illigal argument exception"; //обьект к кому привязываем подсказку
 
  //-- Разметка подсказки ---
  var tip=document.createElement("DIV");
  tip.className="tool_tip";
  tip.innerHTML=text;
  document.body.appendChild(tip);
  //-- события --
  obj.onmouseout=function (ev) {
      tip.style.visibility="hidden";
  };
  
  obj.onmousemove=function(ev) { //если не нужно что бы подскасзка бегала, то onmouseover
      tip.style.visibility="visible";
      if(window.event) ev=window.event;
      tip.style.left=ev.clientX + document.body.scrollLeft + ToolTip.offsetX;
      tip.style.top=ev.clientY + document.body.scrollTop + ToolTip.offsetY;
  };
}

//переберем заданные элементы, дадим подказку тем у кого есть аттрибут tooltip
//В аргументах передаем имена рассматриваемых тегов, * все теги

 function initToolTips() {
 //   return;
    var tags, tooltext;
    for(var i=0; i<arguments.length; i++) {
       tags=document.body.getElementsByTagName(arguments[i]);
       for(var j=0; j<tags.length; j++)
            if((tooltext=tags[j].getAttribute("tooltip"))) ToolTip(tags[j], tooltext);
   }
}
//-->
</script>


Код

</head>
<body onload="initToolTips('SPAN','IMG')">
  <span 
  tooltip="Медведь был добрый, но злой..."><a href=#>Пример</a></span>
</body>
</html>


собственно, тут строки нечего называть. необходимо объяснить каждую строку + эту вещь с onload в боди и как образовался tooltip. все остальные, вытекающие, вопросы задам потом.

Автор: Sardar 26.7.2005, 15:38
О, узнаю свой код smile

Если взял его не отсюда: http://forum.vingrad.ru/index.php?showtopic=53318 то скажи, а то интересно кто это комент с авторством удалил.

Первый листинг это стили. Что такое стили долго обьяснять, иди в вёрстку. Главное там position: absolute.

Во втором листинге две функции, первый это конструктор обьекта "подсказки", в нём содаём необходимую разметку. Вторая функция собирает все указанные в аргументе теги на странице и инициализирует для них "подсказки".

Говори какие конкретно строки не ясны.

Автор: Bangladesh 27.7.2005, 06:39
Цитата(Sardar @ 26.7.2005, 14:38)
О, узнаю свой код smile

Если взял его не отсюда: http://forum.vingrad.ru/index.php?showtopic=53318 то скажи, а то интересно кто это комент с авторством удалил.

Первый листинг это стили. Что такое стили долго обьяснять, иди в вёрстку. Главное там position: absolute.

Во втором листинге две функции, первый это конструктор обьекта "подсказки", в нём содаём необходимую разметку. Вторая функция собирает все указанные в аргументе теги на странице и инициализирует для них "подсказки".

Говори какие конкретно строки не ясны.

да - это твой код, вот только я не так просил объяснить. я вообще не знаю, что это за объект ToolTip и где он создался и че за строки где !obj||obj - это че такое ваще?

Автор: Sardar 27.7.2005, 14:15
Цитата(I)
что это за объект ToolTip

Для начала подумаем что же такое подсказка? Это некой элемент(div) появляющийся при наведении мышкой на другой элемент(хорошо бы задержку организовать smile ). Взглянув на функцию/конструктор ToolTip видим как создаёться этот слой методами DOM.


Цитата(I)
!obj||obj - это че такое ваще?

Уцебниками не пробовал пользоваться? Говорят помогает smile Я серьёзно, прежде чем задать вопрос нужно знать 70% ответа smile

Полнoe условие: !obj||obj.nodeType!=1 - если обьект null или его поле nodeType не равно 1. В C, C++, C#, Java и других C подобных языках используеться такая же конструкция. Читай азы.

Автор: Bangladesh 28.7.2005, 08:39
вообще-то я читаю уже второй самоучитель. в первом я ничего не нашел, потому что он ознакомительный. а второй сейчас читаю на методах и свойствах STRING. уж я точно думаю, что от того, что ты объяснил ты не умрешь. это твоя работа и на это есть форум. разве жизнь была бы интересной, если бы этого небыло. smile вообщем спасибо!

Автор: o.s.a. 28.7.2005, 09:50
Цитата
уж я точно думаю, что от того, что ты объяснил ты не умрешь. это твоя работа и ...

неблагодарный ХАМ

Автор: Иль 28.7.2005, 11:18
I, GyoZ, ну ты нахалище smile. Если это работа, так плати! smile

Автор: Sardar 28.7.2005, 13:25
I, GyoZ во блин, из-за тебя впервые позволяю офтопу жить в теме smile
Не понял на что ты обидился(уколол и плюс в репу...), не могу же я втирать тебе азы языка, у тебя самого уйдёт максимум неделя, JS очень прост.

Fорум это не работа, а хобби. Ты уйдёшь, а форум останеться smile


o.s.a., Иль, ребят, спасибо, но больше не флеймим smile

Автор: Bangladesh 29.7.2005, 06:19
так и знал, что слово работа не надо писать было. я тут работу имел как занятие. а за нахальство извините, я просто думал это чуть по другому воспримут.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)