Роботландский Университет © А.А.Дуванов |
Функция alert предназначена для передачи информации пользователю. А как пользователь может передать информацию в документ?
Для ввода информации можно использовать функцию prompt:
prompt("надпись", "значение ввода по умолчанию");
Функция работает так. На экран выводится панель с двумя кнопками:
Пользователь записывает сообщение в строке ввода и нажимает кнопку Ok. Окно убирается с экрана, а введенный текст становится значением функции prompt. Это значение можно, например, присвоить переменной и использовать затем в скрипте. Если пользователь нажимает кнопку Отмена (Cancel), функция prompt возвращает специальное значение null (это не строка "null", не пустая строка "", а значение специального служебного типа данных).
var str=prompt("Сколько будет 2x2?", "5"); if(str=="4") alert("Гениально! Ответ и правда 4!"); else alert("Шутка хороша, когда ее понимают!"); |
общий вид | пример | |
---|---|---|
if(условие) команда1; else команда2; |
if(a > b) c = a; else c = b; |
Условная команда работает как обычно:
Команды команда1 и команда2 никогда не выполняются вместе работает только одна из них. После выполнения условной команды управление передается на команду, которая следует за условной.
После выполнения кода:
x = 1; if(x == 1) y = 10; else y = 20; x += y;
переменная x получит значение 11. А после выполнения кода:
x = 1; if(x != 1) y = 10; else y = 20; x += y;
переменная x получит значение 21.
Разрешается записывать условную команду без ветви else:
общий вид | пример | |
---|---|---|
if(условие) команда1; |
if(x < 0) x = -x; |
Работает эта конструкция так:
После выполнения кода:
x = 1; y = 10; if(x == 1) y += 10; x += y;
переменная x получит значение 21. А после выполнения кода:
x = 1; y = 10; if(x != 1) y += 10; x += y;
переменная x получит значение 11.
Конструкции команда1 и команда2 могут быть любыми командами языка, в том числе и снова условными.
Часто используются конструкции следующего вида (переключатели):
общий вид | пример | |
---|---|---|
if (условие1) команда1; else if (условие2) команда2; else if (условие3) команда3; ........................... else командаN; |
if (Day==1) NameDay="понедельник"; else if (Day==2) NameDay="вторник"; else if (Day==3) NameDay="среда"; else if (Day==4) NameDay="четверг"; else if (Day==5) NameDay="пятница"; else if (Day==6) NameDay="суббота"; else if (Day==7) NameDay="воскресенье"; else NameDay="ошибка"; |
var str=prompt("Сколько будет 2x2?", "5"); if (str==null) alert("Не стали вычислять?..Зря!"); else if (str=="4") alert("Гениально! Ответ и правда 4!"); else alert("Шутка хороша, когда ее понимают!"); |
Разработчики JavaScript добавили в язык специальную конструкцию switch, которую понимают браузеры Netscape и Internet Explorer, начиная с четвертых версий. Работает эта структура аналогично подобной конструкции в языках C и Java:
общий вид | пример | |
---|---|---|
switch(выражение) { case вариант1: команды break; case вариант2: команды break; ... default: команды } |
switch(Day) { case 1: NameDay="понедельник"; break; case 2: NameDay="вторник"; break; case 3: NameDay="среда"; break; case 4: NameDay="четверг"; break; case 5: NameDay="пятница"; break; case 6: NameDay="суббота"; break; case 7: NameDay="воскресенье"; break; default: NameDay="ошибка"; } |
Управление передается на команды, расположенные за первым по порядку
case, в котором значение варианта совпадает со
значением выражения, записанного в заголовке
Команда break передает управление на первую команду, следующую за конструкцией switch. Если команда break отсутствует, проверка вариантов продолжается.
Вариант default (он может отсутствовать) срабатывает тогда, когда значение выражения не соответствует ни одному из вариантов case.
var str; switch(prompt("Введите 1, 2 или 3", "1")) { case "1": str = "one"; break; case "2": str = "two"; break; case "3": str = "three"; break; default: str = "ошибка"; } alert(str); |
В качестве условия можно записывать логические выражения. При этом разрешается использовать следующие знаки логических операций:
обозначение | назначение | пример |
---|---|---|
== | равно | x+1 == 8 |
!= | не равно | str != "да" |
> | больше | x*y > 5+(x++) |
>= | больше или равно | d >= 0 |
< | меньше | num < 10 |
<= | меньше или равно | bonus <= 5 |
&& | логическое и | 1 < x && x < 10 |
|| | логическое или | x == 0 || x == 1 |
! | логическое отрицание | !(1 < x && x < 10) |
Цепочка команд, заключенная в фигурные скобки
{команда1; команда2; ...}
рассматривается как одна команда. Такая сложная команда называется составной или блоком. Символ ; за скобкой }, закрывающей блок, не ставится. Условная команда с использованием блока может выглядеть так:
возможный общий вид | пример | |
---|---|---|
if (условие) { ... команды ... } else { ... команды ... } |
if (d > 0) { x1 = - (b+Math.sqrt(d))/(2*a); x2 = - (b-Math.sqrt(d))/(2*a); mes = "два корня"; } else if (d == 0) { x1 = -b/(2*a); mes = "один корень" } else mes = "нет корней"; |
Экзамен состоит из пяти вопросов. За каждый верный ответ начисляется один балл. В итоге выставляется оценка от 2 до 5 по правилу:
В качестве условия в команде if можно записывать не только логические, но и арифметические, и даже строковые выражения. При этом считается, что условие ложно, если значение выражения равно 0 или пустой строке "" и истинно в противном случае.
var x = 20; if (20-x) x++; |
Условие ложно, значение x не изменится. |
var x = 20; if (2*x) x++; |
Условие истинно, значение x увеличится на 1. |
var x = ""; if (x) x += "киса"; |
Условие ложно, значение x не изменится. |
var x = ""; if (x+"?") x += "киса"; |
Условие истинно, и x получит значение "киса". |
var x = ""; if (!x) x += "киса"; |
Условие истинно, и x получит значение "киса". |
В языке JavaScript переменная может принимать значение логического типа. Этот тип имеет две константы, обозначаемые как true и false.
var x = true; var y = 2; if (x) y++; |
После выполнения команд значение y равно 3 |
var x = true; var y = 2; if (!x) y++; |
После выполнения команд значение y равно 2 |
var x = true; var y = 2; if (x || !x) y++; |
После выполнения команд значение y равно 3 |
var x = true; var y = 2; if (x && !x) y++; |
После выполнения команд значение y равно 2 |
Условия, в состав которых входят арифметические и строковые выражения, на первых порах вызывают трудности. Рецепт их преодоления очень прост. Нужно помнить, что арифметические и строковые выражения, входящие в состав условия, сначала вычисляются, а затем их значения сопоставляются с логическими значениями true и false.
Строковые константы "волк" и "крокодил", а также числовые константы 25 и 3.14 эквивалентны одной и той же логической константе true. Следовательно, логические отрицания этих величин равны false.
if("волк") то же самое, что if(true) if("крокодил") то же самое, что if(true) if(25) то же самое, что if(true) if(3.14) то же самое, что if(true) if(!"волк") то же самое, что if(false) if(!"крокодил") то же самое, что if(false) if(!25) то же самое, что if(false) if(!3.14) то же самое, что if(false) |
Несколько более сложных примеров:
"волк" && 25 эквивалентно true && true равно true !"волк" && 25 эквивалентно !true && true равно false !"волк" || 25 эквивалентно !true || true равно true !"" || 22-22 эквивалентно true || false равно true !(""+"кот") || 22-22 эквивалентно false || false равно false |
Поясним последний пример цепочкой преобразований:
!(""+"кот") || 22-22 !"кот" || 0 !true || false false || false false
Если нужно, чтобы пользователь выбрал один из двух вариантов ответа на вопрос, то можно воспользоваться функцией prompt:
Существует, однако, более простой и красивый способ узнать желание пользователя функция confirm:
confirm("надпись"); |
Функция работает так. На экран выводится панель с двумя кнопками:
Если пользователь нажимает на кнопку Ok, функция confirm возвращает значение true, если на кнопку Отмена (Cancel) значение false. Пользователь может использовать эквивалентные клавиши Enter и Esc.
if (confirm("Хлеба и зрелищ?")) alert("Смотри сейчас, а кушай после!"); else alert("И, словом, тот хотел арбуза,\n"+ "А тот соленых огурцов."); |
Нажмите кнопку Сброс, затем приступайте к решению.
![]() |