Скрипт с всплывающими подсказками.
Серьезно, наверное, это мой последний вариант. Нужна помощь. Есть готовый скрипт, реализующий всплывающие подсказки для ячеек таблицы. Такая вот лабораторная попалась, скрипт нашла в гугле, Все прекрасно работает, но препод требует объяснить, каким образом. Так вышло, что я ничего в этом не понимаю - собственно, экономисту и не нужно, жаль, деканат так не считает. В общем, пожалуйста, прокомментируйте каждую строчку кода. Что, как и зачем нужен каждый элемент...я серьезно больше не знаю, куда писать и к кому обращаться. Для вас это, наверное, будет пустяком, а мне спасет сессию. Благодарна буду безмерно. Собственно, скрипт:
<script> var showingTooltip; document.onmouseover = function(e) { var target = e.target; var tooltip = target.getAttribute('data-tooltip'); if (!tooltip) return; var tooltipElem = document.createElement('div'); tooltipElem.className = 'tooltip'; tooltipElem.innerHTML = tooltip; document.body.appendChild(tooltipElem); var coords = target.getBoundingClientRect(); var left = coords.left + (target.offsetWidth - tooltipElem.offsetWidth) / 2; if (left < 0) left = 0; // не вылезать за левую границу окна var top = coords.top - tooltipElem.offsetHeight - 5; if (top < 0) { // не вылезать за верхнюю границу окна top = coords.top + target.offsetHeight + 5; } tooltipElem.style.left = left ; tooltipElem.style.top = top ; showingTooltip = tooltipElem; }; document.onmouseout = function(e) { if (showingTooltip) { document.body.removeChild(showingTooltip); showingTooltip = null; } }; </script> |
Я не уверен в том, насколько подробные объяснения вам нужны. Примерно так думаю должно быть лучше понятно:
var showingTooltip; // Создадим переменную, в которой будет храниться подсказка document.onmouseover = function(e){ // при событии "наведение мыши" запускаем анонимную функцию var target = e.target; // Записываем в переменную target тот элемент, на который наведена мышь var tooltip = target.getAttribute('data-tooltip'); // Записываем в переменную содержимое data-tooltip, того элемена, на который наведена мышь if (!tooltip) return; // Если содержимого data-tooltip нет, то ничего не делаем (буквально возвращаем ничего) // В противном случае: var tooltipElem = document.createElement('div'); // Создаем новый элемент <div></div> tooltipElem.className = 'tooltip'; // Устанавливаем элементу класс - class="tooltip" tooltipElem.innerHTML = tooltip; // Внутрь элемента помещаем содержимое атрибута data-tooltip document.body.appendChild(tooltipElem); // Вставляем этот элемент на страницу var coords = target.getBoundingClientRect(); // Получаем в coords все CSS стили элемента, на который наведена мышь var left = coords.left + (target.offsetWidth - tooltipElem.offsetWidth) / 2; // запишем нужные координаты по горизонтали if (left < 0) left = 0; // не вылезать за левую границу окна var top = coords.top - tooltipElem.offsetHeight - 5; // запишем нужные координаты по вертикали if (top < 0) { top = coords.top + target.offsetHeight + 5; } // не вылезать за верхнюю границу окна tooltipElem.style.left = left ; // применить к подсказке координаты по горизонтали tooltipElem.style.top = top ; // применить к подсказке координаты по вертикали showingTooltip = tooltipElem; // записать в переменную showingTooltip готовую подсказку }; document.onmouseout = function(e) { // При событии "мышь ушла с элемента", запускаем анонимную функцию if (showingTooltip) { // Если на странице уже имеется подсказка, то... document.body.removeChild(showingTooltip); // удаляем ее из DOM (со страницы) showingTooltip = null; // очищаем переменную, в которой хранилась подсказка } }; |
Повышает читаемость кода:
http://jsbeautifier.org/ |
Часовой пояс GMT +3, время: 16:18. |