Иллюстрированный самоучитель по созданию сайтов

Страница, управляемая при помощи мыши

Кнопки, влияющие на вид страницы

Теперь рассмотрим такой пример. Предположим, мы разместили на веб-странице сказку, с градиентным феном. Однако, возможно, кому-то этот фон может помешать читать текст, и, заботясь о пользователе, хочется предусмотреть кнопку, при нажатии на которую фон становился бы равномерно зеленоватым. Для пользователей, пред почитающих читать черные буквы на белом фоне, можно предусмотреть возможность смены цвета фона на белый.

Для начала в соответствии с требованиями HTML 4.0 заменим атрибуты BGCOLOR= и BACKGROUND= тега <BODY> на соответствующие стилевые свойства:

<STYLE>
    BODY {
        background-color: #BFFFBF;
        background-image: url("Images/gradi.jpg");
    }
</STYLE>

Что же касается тега <BODY>, то ему желательно присвоить имя для облегчения доступа к его свойствам:

<BODY ID="doc">

Теперь добавим сверху две кнопки: одну для выключения фонового рисунка, а другую – для смены цвета фона на белый:

<DIV ALIGN="center">
    <INPUT TYPE="button" VALUE="Убрать фоновый рисунок">
    <INPUT TYPE="button" VALUE="Сделать фон белым">
</DIV>

Кнопки созданы, но пока при их нажатии ничего не происходит. Нам надо написать функцию, убирающую фоновый рисунок. Для этого нужно всего лишь стилевому свойству background-image присвоить значение none:

function noBg() {
    document.all.doc.style.backgroundlmage = 'none';
}

Обратите внимание на то, что в тексте на языке JavaScript (а не на языке CSS) нужно обязательно преобразовать название стилевого свойства с дефисом, как объяснялось выше.

Теперь нужно сделать так, чтобы наша функция noBg() выполнялась при щелчке мыши на первой из кнопок. Для этого надо в соответствующий тег кнопки добавить обработчик событий, реагирующий на щелчок мыши. Он называется onClick:

<INPUT TYPE="button" VALUE="убрать фоновый рисунок" onClick="noBg()">

Аналогично создадим функцию для смены цвета фона на белый:

function colChange() {
    document.all.doc.style.backgroundColor = 'white';
}

…и добавим ко второй кнопке обработчик события onClick:

<INPUT TYPE="button" VALUE="Сделать фон белым" onClick="colChange()">

Если теперь открыть эту страницу в браузере, то при нажатии на кнопку Убрать фоновый рисунок градиентный фоновый перелив исчезнет, уступив место зеленоватому цвету, а при нажатии на кнопку Сделать фон белым фон страницы действительно станет белым.

Однако неплохо бы дать пользователю и возможность обратной смены цвета и включения градиента. Он, конечно, может для этого нажать в браузере кнопку Обновить, однако рассчитывать на это некорректно, да и нс всякий пользователь сразу сообразит это сделать. Поэтому давайте при выключении фонового рисунка сменим надпись на кнопке. Для этого желательно дать кнопкам имена, например вот так:

<INPUT TYPE="button" NAME="butt1" VALUE="Убрать фоновый рисунок" onClick="noBg()">
<INPUT TYPE="button" NAME="butt2" VALUE="Сделать фон белым" onClick="colChange()">

Можно было, разумеется, использовать и атрибут ID= вместо NAME=. Для того чтобы изменить надпись на первой кнопке, достаточно изменить значение ее атрибута VALUE=:

document.all.butti.value = 'Вернуть фоновый рисунок';

Теперь давайте подумаем, как нам переделать функцию noBg(). Ведь она должна убирать фоновый рисунок, если он есть, и включать его, если его нет. Одновременно нужно соответствующим образом изменять надпись на кнопке. Следовательно, нужно сначала проверить, есть ли фоновый рисунок:

function noBg() {
    if (document.all.doc.style.backgroundlmage = "none") {
        document.all.doc.style.backgroundlmage = 'none';
        document.all.butti.value = 'Вернуть фоновый рисунок';
    } else {
        document.all.doc.style.backgroundlmage = "url('Images/gradi.jpg')";
        document.all.butti.value = 'Убрать фоновый рисунок';
    }
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.