Динамическое изменение графических элементов веб-страницы
Управление подсветкой кнопок
Теперь назначим обработчику событий onMouseOver смену изображения. Собственно говоря, для этого нужно всего лишь изменить атрибут SRC= тега <IMG>:
<
IMG
SRC
=
"'Images/ALTavista.jpg"
WIDTH
=
"192"
HEIGHT
=
"40"
BORDER
=
"0"
ALT
=
"ALTavista"
onMouseOver
=
"this.src='Images/ALTavista2.jpg'"
>
Теперь при наведении указателя мыши на кнопку Altavista вид кнопки изменится, так как будет загружен другой рисунок. Точно таким же способом нужно сменить изображение обратно при выведении указателя мыши за пределы кнопки:
<
IMG
SRC
=
"Images/ALTavista.jpg"
WIDTH
=
"192"
HEIGHT
=
"40"
BORDER
=
"0"
ALT
=
"ALTavista"
onMouseOver
=
"this.src='Images/ALTavista2.jpg'"
onMouseOut
=
"this.src='Images/ALTavista.jpg'"
>
Вот теперь, наконец, мы добились, чего хотели, но только для одной кнопки: при наведении на нее указателя мыши она изменяет свой вид (рис. 7.14), а при выведении указателя восстанавливает прежний вид.
Рис. 7.14. На этой странице графические гиперссылки подсвечиваются при наведении на них указателя мыши
Можно, конечно, написать такую же конструкцию и для остальных трех кнопок. Однако, давайте реализуем более изящное решение: напишем одну функцию, которая будет менять файл рисунка для всех тегов <IMG>, имеющихся на странице. Точнее, функций будет две: одна для событии onMouseOver, а другая – для onMouseOut. Воспользуемся тем, что файлы рисунков “подсвеченных” кнопок имеют те же имена, что и файлы рисунков обычных кнопок, плюс цифра 2 (например: ALTavista.jpg – ALTavista2.jpg). Пусть первая функция, реагирующая на наведение мыши, просто встав ляет двойку в нужное место:
function
changel() {
if
(window.event.srcElement.tagName
=
=
"IMG"
)
window.event.srcElement.src
=
window.event.srcElement.src.substring(
0
, window.event.srcElement.src.length)
+
"2"
+
window.event.srcElement.src.substring(window.event.srcElement.src.length
-
4
, window.event.srcElement.src.length);
}
Как видите, эта функция сначала проверяет, на какой объект, собственно, наведен указатель мыши, и если это элемент <IMG>, то в нужное место значения его атрибута SRC= вставляется цифра 2, а если это какой-нибудь другой элемент, то функция просто ничего не делает. Вроде все правильно, однако слишком громоздко – так сразу и не разберешься, что эта функция делает, да и при вводе таких строк легко ошибиться и потом долго и мучительно искать, почему выдаются сообщения об ошибках. Сократим этот год, присвоив значение window.event.srcElement временной переменной:
function
changel() {
var
a
=
window.event.srcElement;
if
(a.tagName
=
=
"IMG"
)
a.src
=
a.src.substring(
0
, a.src.length
-
4
)
+
"2"
+
a.src.substring(a.src.length
-
4
, a.src.length);
}
Вот это совсем другое дело – смотрится гораздо прозрачнее, а функционирует точно так же.
Теперь напишем аналогичную функцию, удаляющую двойку из значения атрибута:
SRC
=
function
change2() {
var
a
=
window.event.srcElement;
if
(a.tagName
=
"IMG"
)
a.src
=
a.src.substring(
0
, a.src.length
-
5
)
+
a.src.substring(a.src.length
-
4
, a.src.length);
}
Вам осталось только назначить обработчики событий. Поскольку мы не знаем, для каких конкретно элементов их назначать и сколько, назначим объекту document (обратите внимание, что внутри функций не зря про наводится проверка на имя тега):
document.onmouseover
=
change1;
document.onmouseout
=
change2;
Последние две строки также должны находиться в блоке <SCRIPT>. Обратите внимание на отсутствие круглых скобок после имен функций! (Если скобки поставить, то это приведет к немедленному вызову функций, а нам можно только связать их имена с соответствующими событиями.) Теперь можно добавлять сколько угодно кнопок гиперссылок на эту страницу, загромождая ее большим количеством повторяющегося кода.