- •Лекция: Назначение и применение JavaScript, общие сведения
- •Способ 1: url-схема "JavaScript:"
- •Способ 2: обработчики событий
- •Способ 3: подстановки
- •Размещение кода внутри html-документа
- •Условная генерация html-разметки на стороне браузера
- •Комментарии в html и JavaScript
- •Указание языка сценария
- •Регистр символов
- •Лекция: Типы данных и операторы
- •Массивы
- •Метод join()
- •Метод reverse()
- •Метод sort()
- •Операторы языка
- •Лекция: Функции и объекты
- •Функции
- •Функция как тип данных
- •Функция как объект
- •Коллекции
- •Cвойства
- •События
- •Пользовательские объекты
- •Понятие пользовательского объекта
- •Прототип
- •Методы объекта Object
- •Лекция: Программируем свойства окна браузера Объект window
- •Свойства объекта window Поле статуса и свойство window.Status
- •Программируем status
- •Программируем defaultStatus
- •Поле адреса и свойство window.Location
- •Свойства объекта location
- •Методы объекта location
- •История посещений (history)
- •Тип браузера (navigator)
- •Методы объекта window
- •Методы focus() и blur()
- •Метод setTimeout()
- •Метод clearTimeout()
- •Методы setInterval() и clearInterval()
- •Фреймы (Frames)
- •Иерархия и именование фреймов
- •Коллекция фреймов
- •Передача данных во фрейм
- •Лекция: Программируем формы Контейнер form
- •Свойства объекта Form Свойство action
- •Свойство method
- •Свойство target
- •Свойство encoding
- •Коллекция elements[]
- •Методы объекта Form Метод submit()
- •Метод reset()
- •События объекта Form Событие Submit
- •Событие Reset
- •Поля формы и их объекты
- •Текстовое поле ввода (объект Text)
- •Списки вариантов (объекты Select и Option)
- •Создание объектов Option
- •Коллекция options[]
- •Свойства text и value объекта Option
- •Свойства selected и selectedIndex
- •Обработчик события onChange объекта Select
- •Кнопка button
- •Кнопка submit
- •Метод submit() формы
- •Кнопка reset
- •Графическая кнопка
- •6. Лекция: Программируем гипертекстовые переходы
- •Замена атрибута href
- •Изменение части url
- •События MouseOver и MouseOut
- •Обработка события Click
- •Лекция: Программируем графику Объект Image
- •Свойства src и lowSrc
- •Изменение картинки
- •Мультипликация
- •Обработчик события onLoad
- •Запуск и остановка мультипликации
- •Оптимизация отображения
- •Оптимизация при загрузке изображений
- •Предварительная загрузка изображений
- •Нарезка изображений
- •Графика и таблицы
- •Горизонтальное меню
- •Вертикальное меню
- •Выделение выбранного пункта меню
- •Вложенные меню
- •Лекция: Программируем "за кадром" Механизм cookie
- •Что такое cookie
- •Чтение cookie
- •Создание или изменение cookie
- •Удаление cookie
- •Демонстрационный пример
- •Управление фокусом
- •Управляем фокусом в окнах
- •Управление фокусом во фреймах
- •Фокус в полях формы
- •Скрытая передача данных из форм
- •Невидимый код
- •Невидимый фрейм
- •Код во внешнем файле
- •Обмен данными посредством встроенной графики
- •Модель безопасности
Вертикальное меню
Пример 7.6. Теперь попробуем тем же способом реализовать вертикальное меню. При просмотре в некоторых браузерах сплошной вертикальной линии не получается, т.к. высота строки не равна высоте картинки. Подогнать эти параметры практически невозможно. Каждый пользователь настраивает браузер по своему вкусу.
<PRE>
<IMG SRC=vert.gif WIDTH=27 HEIGHT=21 BORDER=0><A
HREF="courses.htm"><IMG SRC="vert1.gif" WIDTH=103 HEIGHT=21 BORDER=0></A>
<IMG SRC=vert.gif WIDTH=27 HEIGHT=21 BORDER=0><A
HREF="setting.htm"><IMG SRC="vert2.gif" WIDTH=103 HEIGHT=21 BORDER=0></A>
<!-- далее аналогично для vert3.gif и vert4.gif -->
</PRE>
Пример 7.9. Вертикальное меню (линия не сплошная) (html, txt)
Рис. 7.5. Вертикальное меню (линия не сплошная)
Пример 7.7. Решение заключается в использовании (вместо контейнера <PRE> ) таблицы <TABLE> с нулевыми границами между ячейками:
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR>
<TD><IMG SRC=vert.gif WIDTH=27 HEIGHT=21 BORDER=0></TD>
<TD><A HREF="courses.htm"><IMG SRC="vert1.gif"
WIDTH=103 HEIGHT=21 BORDER=0></A></TD>
</TR>
<!-- далее аналогично для vert2, vert3, vert4.gif -->
</TABLE>
Пример 7.10. Вертикальное меню (линия сплошная) (html, txt)
Рис. 7.6. Вертикальное меню (линия сплошная)
В данном случае все картинки удается сшить без пропусков и тем самым достичь непрерывности навигационного дерева. Пропуски устраняются путем применения атрибутов BORDER, CELLSPACING и CELLPADDING. Первый устраняет границы между ячейками и вокруг всей таблицы, второй устанавливает расстояние между ячейками равным 0 пикселов, третий устанавливает отступ между границей ячейки и элементом, помещенным в нее, в 0 пикселов.
Выделение выбранного пункта меню
Практически все, что было изложено до сих пор, касается вопросов построения одноуровневых меню. Поэтому в данном разделе мы постараемся привести более или менее реальные примеры таких меню. Графическое меню удобно тем, что автор может всегда достаточно точно расположить его компоненты на экране. Это, в свою очередь, позволяет и другие элементы страницы точнее располагать относительно элементов меню.
Пример 7.8. В данном примере мы воспользуемся этим для того, чтобы выделить тот пункт меню, над которым находится указатель мыши. Поскольку пункты меню прилегают друг к другу без просветов, то мы будем указывать стрелочкой тот пункт меню, который активен в данный момент.
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR ALIGN="center">
<TD>
<IMG NAME=e1 SRC=empty.gif WIDTH=15 HEIGHT=8 BORDER=0>
</TD>
<!-- аналогично для e2, e3, e4 -->
</TR>
<TR>
<TD><A HREF="javascript:void(0);"
onMouseover="document.e1.src='arrowdw.gif';"
onMouseout="document.e1.src='empty.gif';">
<IMG SRC="horis1.gif" BORDER="0"></A>
</TD>
<!-- аналогично для e2, e3, e4 -->
</TR>
</TABLE>
Пример 7.11. Горизонтальное меню (пункт указан стрелкой) (html, txt)
Рис. 7.7. Горизонтальное меню (пункт указан стрелкой)
Стрелочка бежит точно над тем элементом, на который указывает мышь.
Пример 7.9. Однако стоит заметить, что применение атрибута ALT у контейнера IMGи его дублирование в строке статуса является гораздо более информативным, чем добавление нового графического элемента. Правда, отображается содержание ALTс некоторой задержкой:
<PRE>
<A HREF="courses.htm" onMouseOut="window.status='';"
onMouseOver="window.status='Мои курсы';return true;"><IMG
SRC="horis1.gif" BORDER=0 ALT="Мои курсы"></A><A
HREF="setting.htm" onMouseOut="window.status='';"
onMouseOver="window.status='Настройки';return true;"><IMG
SRC="horis2.gif" BORDER=0 ALT="Настройки"></A><A
HREF="baskets.htm" onMouseOut="window.status='';"
onMouseOver="window.status='Корзина';return true;"><IMG
SRC="horis3.gif" BORDER=0 ALT="Корзина"></A><A
HREF="thehelp.htm" onMouseOut="window.status='';"
onMouseOver="window.status='Помощь';return true;"><IMG
SRC="horis4.gif" BORDER=0 ALT="Помощь"></A>
</PRE>
Пример 7.12. Горизонтальное меню (атрибут ALT и поле статуса) (html, txt)
Рис. 7.8. Горизонтальное меню (атрибут ALT и поле статуса)
Пример 7.10. Посмотрим теперь на реализацию вертикального меню, построенного на основе графических блоков текста:
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
<SCRIPT>
for(i=1; i<5; i++)
{ var
ileft = '<IMG SRC=block'+i+'.gif border=0>',
iright = '<IMG NAME=e'+i+' SRC=clear.gif border=0>',
isrc = 'document.e'+i+'.src',
alink = '<A HREF="javascript:void(0);" '+
'onMouseover="'+isrc+'=\'corner.gif\';" '+
'onMouseout="'+ isrc+'=\'clear.gif\';">';
document.write('<TR>'+
'<TD>'+ alink + ileft + '</A></TD>'+
'<TD>'+ alink + iright + '</A></TD>'+
'</TR>');
}
</SCRIPT>
</TABLE>
Пример 7.13. Вертикальное меню (графические блоки текста) (html, txt)
Здесь продемонстрировано типичное применение JavaScript - многократное генерирование похожих фрагментов HTML-кода с помощью цикла и методаdocument.write(). В данном примере с помощью цикла мы генерируем HTML-фрагмент следующего вида (каждый раз с разным номером вместо "1"):
<TR>
<TD><A onMouseover="document.e1.src='corner.gif';"
onMouseout="document.e1.src='clear.gif';"
HREF="javascript:void(0);"><IMG SRC=block1.gif border=0></A></TD>
<TD><A onMouseover="document.e1.src='corner.gif';"
onMouseout="document.e1.src='clear.gif';"
HREF="javascript:void(0);"><IMG NAME=e1 SRC=clear.gif border=0></A></TD>
</TR>
При движении мыши у соответствующего пункта меню, попавшего в фокус мыши, "отгибается уголок". В данном случае "уголок" - это самостоятельная картинка. Все уголки реализованы в правой колонке таблицы. Для того чтобы гипертекстовая ссылка срабатывала по обеим картинкам (тексту и "уголку"), применяются одинаковые контейнеры <A>, охватывающие каждую картинку.
Рис. 7.9. Вертикальное меню (графические блоки текста)