Сайт: http://www.frnet.narod.ru/
Итак, наша задача — создать скрипт, который бы менял картинку при наведении на нее курсора мыши. Это достаточно стандартная задача и каждый ее решает по-разному. Если у вас есть скрипт, решающий данную проблему, то не спешите закрывать данную статью, так как я предлагаю вам, на мой взгляд, самый оптимальный пример данной программы.
С чего начнем?
Первое, с чего нужно начать — это подготовка рисунков. Для этого вы должны создать два рисунка: первый рисунок — это изображение кнопки в обычном состоянии, без курсора мыши над ним, назовем его image.gif, хотя название можете дать любое; второй — это изображение кнопки в момент, когда над ним находится курсор мыши, назовем его image2.gif. В любом случае вы должны к названию второго изображения прибавлять перед расширением «2» — это одно из условий работы скрипта.
Функция смены картинки при наведении мыши.
Мы приготовили несколько пар рисунков. Если вы создаете целую панель из картинок, то имеет смысл написать универсальную функцию, не привязанную к какому-то конкретному объекту. Этим мы сейчас займемся.
Вначале функция должна определить источник события. Для этого мы будем использовать свойство объекта window.event – srcElement. В последующем нам придется часто обращаться к нему, поэтому первой строкой запишем присваивание его переменной, например, a:
var a=windows.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);
Осталось только дать название функции. Назовем ее change1().
Полный код функции:
function change1() {
a=windows.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);
}
Я думаю, что нет необходимости расписывать работу функции, поэтому приведу лишь ее код:
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.onmouseover=change1; document.onmouseout=change2;
Как же без этого?
Как же мы можем обойтись при создании ролловера без предварительной загрузки картинок. В нашем случае она будет выглядеть так:
var img1=new Image() img1.src="image.gif"; var img2=new Image() img1.src="image2.gif";
Теперь можете добавлять сколько угодно картинок на страницу, не загромождая ее большим количеством повторяющегося кода. Перспективные улучшения:
1) Проверка, а нужно ли изменять картинку;
2) Изменение картинки при нажатии на нее мышью (onMouseDown).
P.S. Вы можете скачать этот пример.
