Страница, управляемая при помощи мыши
Мы уже говорили о том, что одним из самых привлекательных нововведений HTML 4.0 является возможность динамически изменять страницы и реагировать на действия пользователя. Давайте рассмотрим, как такая реакция может осуществляться.
Помните, как в примерах Главы 4 мы изменяли цвет гиперссылки при наведении на нее мыши? Это происходило с помощью псевдокласса :hover. Однако этот псевдокласс пока что определен только для тега <А>. А как быть, если мы хотим изменить цвет обычного текста при наведении на него мыши?
Рассмотрим, как это делается. Допустим, мы написали небольшую тестовую страницу.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML> <HEAD> <TITLE>Обработка событий мыши</TITLE></HEAD> <BODY>Этот текст не изменит свой цвет. Этот текст изменит свой цвет, если навести на него мышь! Этот текст не изменит свой цвет. </BODY> </HTML>Реакция на наведение
Теперь давайте сделаем так, чтобы вторая строка этого текста действительно изменяла свой цвет при наведении указателя мыши. Для начала давайте выделим ее в отдельный блок:
<DIV>Этот текст изменит свой цвет, если навести на него мышь!</DIV>Чтобы при наведении мыши что-нибудь произошло, нужно добавить обработчик событий onMouseOver:
<DIV onMouseOver="">Этот текст изменит свой цвет, если навести на него мышь</DIV>Итак, обработчик добавлен, однако пока он ничего не делает. В кавычки нужно поместить то действие, которое он должен выполнить. А что он дол жен сделать? Изменить цвет этого блока <DIV>, например, на красный. Доступ к свойствам текущего элемента осуществляется с помощью ключевого слова this:
<DIV onMouseOver="this.style.colors=red">Этот текст изменит свой цвет, если навести на него мышь!</DIV>Если теперь открыть эту страницу в браузере, то при наведении указателя мыши на вторую строку текста, цвет строки действительно изменится на красный. Однако, один раз изменившись, он так и останется красным. Чтобы при уводе указателя мыши со строки цвет изменился обратно на черный, добавим обработчик событий, реагирующий на увод указателя. Он называется onMouseOut:
<DIV onMouseOver="this.style.color='red'" onMouseOut="this.style.color='black'"> Этот текст изменит свой цвет, если навести на него мышь!</DIV>Теперь при наведении указателя мыши на эту строку, ее цвет изменится на красный, а при уводе указателя – обратно на черный. Можно также использовать и доступ по названию элемента. Например, если установить в этом блоке атрибут ID="text1", то можно будет написать так:
<DIV ID="text1" onMouseOver="text1.style.color='red'" onMouseOut="text1.style.color='black'"> Этот текст изменит цвет, если навести на него мышь!</DIV><DIV ID="text1" onMouseOver="document.all.text1.style.color='red'" onMouseOut="document.all.text1.style.color='black'">Этот изменит свой цвет, если навести на него мышь!</DIV>Обратите внимание на то, что внутри кавычек расположен текст, написанный на языке JavaScript. Чтобы не загромождать текст HTML-документа, можно заранее определить соответствующие функции в разделе <HEAD>:
<HEAD> <TITLE>Обработка событий мыши</TITLE> <SCRIPT LANGUAGE="JavaScript"> //<!-- function change() { document.all.text1.style.color = "red"; } function change2() { document.all.text1.style.color = "black"; } //--> </SCRIPT></HEAD>…а при определении обработчиков событий писать только имена функций:
<DIV ID="text1" onMouseOver="change()" onMouseOut="change2()">Этот текст изменит свой цвет, если навести на него мышь!</DIV>Результат будет тот же, что и в прошлый раз.
