Использование условных выражений

В дополнение к оператору if язык JavaScript оснащен дополнительной возможностью построения условных выражений. Они имеют немного странный на первый взгляд синтаксис, используемый и в других языках программирования (например в C). Условное выражение имеет следующую конструкцию:

Переменная = (условие) ? если выполняется : если не выполняется;

Это выражение позволяет определить переменной одно из двух значений. Одно в случае выполнения условия, второе - при его невыполняемости. Приведем пример его использования:

value = (a == 1) ? 1 : 0;

Для тех, кто запутался в сложной структуре оператора, приведем его аналог с помощью ключевого слова if:

if (a == 1)
  value = 1;
else
  value = 0;
                               

Другими словами, значение после вопросительного знака будет определяться переменной в том случае, если условие выполняется. Если условие не выполняется, то переменной определяется значение, введенное после двоеточия. Двоеточие в этом выражении играет роль оператора else, который используется не во всех случаях.

Это сокращенное выражение предпочтительней использовать вместо условных операторов при определении значения переменной. Ниже приведен пример отображения значения переменной counter:

document.write("Найдено" + counter + (counter == 1) ? " слово." : " слова."));

Если переменная counter имеет значение 1, то на экран выводится сообщение Найдено 1 слово. Если counter имеет значение 2 и больше, то на экран выводится сообщение Найдено 2 слова.

Задание нескольких условий

Как правило, для задания комплексного условия используется многострочная конструкция из нескольких операторов if. Листинг 13.1 содержит пример подобной структуры.

Листинг 13.1. Задание нескольких условий с помощью операторов if


1:    if (button=="следующая страница") window.location=next.htm;
2:    if (button=="предыдущая страница") window.location=prev.htm;
3:    if (button=="начальная страница") window.location=home.htm;
4:    if (button=="назад") window.location=back.htm;

Хотя это и распространенный метод задания условий, при большом их количестве он становится обременительным. Чтобы избавить вас от многократного введения операторов if, в JavaScript добавлен оператор switch. Он один позволяет задавать целый блок условий, приводящих к выполнению самых разных действий. В листинге 13.2 приведен программный код оператора switch, выполняющий те же действия, что и код листинга 13.1.

Оператор switch впервые использовался в JavaScript 1.2. Чтобы избежать возможных ошибок, можно указывать версию JavaScript: <SCRIPT LANGUAGE="JavaScript 1.2">

Листинг 13.2. Задание нескольких условий с помощью оператора switch


1:    switch(button) {
2:         case "следующая страница" :
3:              window.location="next.htm";
4:              break;
5:         case "предыдущая страница" :
6:              window.location="prev.htm";
7:              break;
8:         case "начальная страница" :
9:             window.location="home.htm";
10:             break;
11:        case "назад" :
12:             window.location="back.htm";
13:             break;
14:        default :
15:             window.alert("Не та кнопка");

Оператор switch состоит из нескольких основных элементов.

Начальный оператор switch. Этот оператор определяет сравниваемое значение (в нашем примере button), которое вводится в скобках.

Фигурные скобки {}. Выполняют те же функции, что и скобки в операторе if.

Один или несколько операторов case. Каждая из строк, котороя начинается этим оператором, содержит значение, сравниваемое с исходным. Если значения совпадают, выполняется оператор, указанный после ключевого слова case. В противном случае сравнивается следующее значение case.

Ключевое слово break, используемое для определения конца действия текущего оператора case.

Необязательный оператор default. Выполняется по умолчанию, если ни один из операторов case не содержит правильного значения.

После каждого оператора case можно использовать несколько операторов действий. Заключать их в скобки нет необходимости. Если условие текущего оператора case справедливо, то выполняются все операторы, введенные до ключевого слова break.

Проверка введенных данных

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

Если ключевое слово совпадает с одним из введенных в сценарии, то в окне браузера будет отображена указанная страница. Если ключевое слово не совпадает с содержащимися в сценарии, в окне браузера отобразится страница по умолчанию.

Чтобы запросить у пользователя необходимое значение используется функция prompt(). Укажите в качестве параметра этой функции вопрос, отображаемый для пользователя. Вот как приблизительно это должно выглядеть:

where = prompt("Куда заглянем сегодня?");

Далее необходимо ввести оператор switch, определяющий различные варианты перехода:


switch (where) {
  case "Netscape" :
     window.location="http://www.netscape.com";
     break;
  case "Microsoft" :
     window.location="http://www.microsoft.com";
     break;
  case "Yahoo" :
     window.location="http://www.yahoo.com";
     break;

Добавьте также оператор default, позволяющий отображать в окне пользователя страницу по умолчанию:


default :
     window.location="http://www.nbusiness.ru";
}

Поскольку это последний оператор в структуре switch, нет необходимости использовать после него ключевое слово break. Скобка закрывает код оператора switch.

Листинг 13.3 содержит полный программный код документа HTML. Чтобы протестировать вэб-страницу, загрузите ее в браузере. На экране появится запрос. Введите одно из ключевых слов и проследите, правильная ли страница загружается в окне браузера. Если указать неправильное ключевое слово, будет загружена вэб-страница по умолчанию.

Листинг 13.3. Сценарий проверки введенных данных


1:    <HTML>
2:    <HEAD><TITLE>Проверка данных</TITLE>
3:    </HEAD>
4:    <BODY>
5:    <H1>Пример работы с пользователем</H1>
6:    Введите слово.<BR>
7:    <SCRIPT LANGUAGE="JavaScript">
8:    where = prompt("Куда заглянем сегодня?");
9:    switch (where) {
10:      case "Netscape" :
11:         window.location="http://www.netscape.com";
12:         break;
13:      case "Microsoft" :
14:         window.location="http://www.microsoft.com";
15:         break;
16:      case "Yahoo" :
17:         window.location="http://www.yahoo.com";
18:         break;
19:      default :
20:         window.location="http://www.nbusiness.ru";
21:   }
22:   </SCRIPT>
23:   </BODY>
24:   </HTML>

Лучшие коммерческие скрипты для поднятия прибыли любого сайта на 350 %

nextn.bmp (246 bytes)

home.gif (161 bytes)

next.gif (900 bytes)

Сайт управляется системой uCoz