Опубликован: 19.10.2006 | Доступ: платный | Студентов: 15 / 7 | Оценка: 3.95 / 3.68 | Длительность: 09:40:00
Лекция 14:

Метод 'Confirm' (Введение в if и else)

< Лекция 13 || Лекция 14 || Лекция 15 >
Аннотация: Основы логического разветвления сценариев.

Концепция

Команда confirm (подтвердить) действует очень похоже на метод alert, но добавляет в диалоговое окно кнопку "Отмена" (Cancel). И то, и другое — методы.

Одна команда сама по себе многого не дает. Нет никакой разницы, что вы выбираете — "ОК" или "ОТМЕНА". Но стоит добавить функции if (если) и else (иначе), и можно создать интересные эффекты.

Сценарий

Прежде всего посмотрим на базовый формат:

<SCRIPT type="text/javascript">

confirm("Уверены, что хотите войти?")

</SCRIPT>

Выглядит знакомо. То же самое, что и alert, кроме слова confirm. Как видите, сценарий делает не очень много. Но вот та же команда с некоторыми добавлениями:

<SCRIPT type="text/javascript">

if (confirm("Уверены, что хотите посетить INTUIT?") )

{
parent.location='http://www.intuit.ru/';
alert("Счастливого пути");
}

else
{
alert("Tогда оставайтесь");
}

</SCRIPT>

Результат работы сценария

Это уже кое-что. Выводится ссылка с вопросом. Только на этот раз, если нажать "OK", то произойдет переход по ссылке, а если щелкнуть на "Отмена", то останетесь на странице.

Давайте разберемся, как это делается.

Разбор сценария

У вас есть выбор

Во-первых, сценарий говорит:

if (confirm("Уверены, что хотите посетить INTUIT?") )

Это значит Если (Здесь можно сделать выбор).

В нашем случае сonfirm предлагает варианты: "OK" или "Отмена". Можно считать их ответами Да и Нет. Обратите внимание на скобки. После команды if всегда идут круглые скобки, но, как известно, команда сonfirm тоже требует скобок. Следовательно, берем две пары скобок, одна внутри другой.

Сразу же после этого идут команды, выполняемые при каждом варианте ответа. Обратите внимание на фигурные скобки {}. Зачем? Потому что в действительности это функции. Первая из них показывает, что должно произойти, если пользователь выберет ОК (или Да).

{
parent.location='http://www.intuit.ru/';
alert("Счастливого пути");
}

Если помните, несколько уроков назад говорилось, что parent.location является командой, создающей ссылку. Дальше идет обыкновенная команда alert. Не забудьте про точку с запятой в конце строк.

А если выбрать отмену?

Мы уже знаем, что если выбрать ОК, то выполнится функция, следующая непосредственно за оператором if (если). "Cancel" (Отмена) — другой выбор. Видите, сразу после фигурной скобки идет команда else (иначе), как бы "если нет". И тогда следующий текст...

else
{
alert("Tогда оставайтесь");
}

...означает: если нет, тогда послать сообщение и не менять страницу.

Все это вместе и дает пользователю возможность выбора: входить или не входить.

Это самые основы использования if и else. Позже команде if мы посвятим целый урок. Она того заслуживает, как вам кажется?

Задание

Не пугайтесь, ничего сложного. Преобразуйте рассмотренный в этом уроке сценарий в функцию. И сделайте так, чтобы при отмене (Cancel), кроме окна, еще появлялась какая-нибудь надпись в строке состояния.

Можно также попробовать сделать так, чтобы при выборе ОК страница перехода открывалась в новом окне.

Возможное решение

В разделе заголовка HEAD помещаем следующий код.

<SCRIPT LANGUAGE="javascript">

function go()
{
if (confirm("Хотите на INTUIT?") )
{
parent.location='http://www.intuit.ru';
alert("Счастливого пути");
}
else
{
alert("Ладно, оставайтесь");
defaultStatus='Что сделано, то сделано';
}}
</SCRIPT>

...и в команду <BODY>:

<BODY onLoad="go()">

Процесс на самом деле достаточно простой:

  • создается имя функции, сценарий копируется и помещается в фигурные скобки;
  • в раздел else добавляется команда defaultStatus='Что сделано, то сделано', которая выводит текст в строку состояния;
  • функция запускается командой onLoad в строке BODY ;
  • если хотите, чтобы ссылка открылась в новом окне, то нужно изменить только два слова. Замените parent.location на window.open, и все готово.
< Лекция 13 || Лекция 14 || Лекция 15 >
Елена Сапегова
Елена Сапегова

После прохождения теоретической части пришло письмо об окончании теоретической части курса, будет ли практическая часть?

Эдуард Семынин
Эдуард Семынин

Здравствуйте.

Перестали быть видны лекции и тесты практикума по программированию на JavaScript. Уже второй день из моего аккаунта виден лишь план занятий. В чем может быть проблема?