Кратко
СкопированоПри помощи функции prompt
выводим на экран пользователя модальное окно с полем ввода и пояснительным текстом.
Из-за того, что окно модальное, работа с интерфейсом браузера и страницами заблокируется. Это неудобно и может восприниматься пользователем как попытка ограничивать его свободу. Модальное окно для пользователя — окно, которое блокирует его работу с браузером до тех пор, пока тот его не закроет.
Пример
СкопированоЭто быстрый код, который взаимодействует с пользователем. Окно, созданное таким образом, не изменяется через CSS. Это значит, что его лучше использовать для прототипирования интерфейса. На сайте использовать модальное окно нежелательно.
Как пишется
Скопированоprompt
принимает один или два аргумента: текст для отображения и значение по умолчанию для поля ввода.
Результат работы prompt
можно записать в переменную:
const answer1 = prompt('Как тебя зовут?')const answer2 = prompt('Как тебя зовут?', 'Имя')
const answer1 = prompt('Как тебя зовут?') const answer2 = prompt('Как тебя зовут?', 'Имя')
Если при вызове prompt
использовать только один параметр, поле ввода в появившемся окне не будет содержать подсказки для ввода.
Поле ввода будет с подсказкой, если используете два параметра. Это полезно, когда показываете пользователю ожидаемый результат ввода.
Как понять
СкопированоАргументы prompt
должны быть строками. Другие аргументы будут автоматически приведены к строке. Пока аргумент — примитив или встроенный тип, приведение к строке не проблема.
prompt('Как тебя зовут?', 'Саша')// Текст: 'Как тебя зовут?', значение поля ввода: 'Саша'prompt('Введите возраст', 18)// 'Введите возраст', СТРОКА '18'
prompt('Как тебя зовут?', 'Саша') // Текст: 'Как тебя зовут?', значение поля ввода: 'Саша' prompt('Введите возраст', 18) // 'Введите возраст', СТРОКА '18'
В примере результат prompt
— строка, если была нажата кнопка «OK»; null
, если была нажата «Отмена».
Лучше не полагаться на то, что результат prompt
всегда будет строкой. Это приводит к ошибкам в работе скрипта. Посмотрим на пример:
const result = prompt('Введите чётное число', '')// Вводим ДЕСЯТЬ и нажимаем ОКif (result % 2 === 0) { // Проверка на чётность alert('Число чётное')} else { alert('Число нечётное')}// Результат: сообщение 'Число нечётное'
const result = prompt('Введите чётное число', '') // Вводим ДЕСЯТЬ и нажимаем ОК if (result % 2 === 0) { // Проверка на чётность alert('Число чётное') } else { alert('Число нечётное') } // Результат: сообщение 'Число нечётное'
В этом примере нет синтаксических ошибок, но:
- нет явной обработки
null
; - нет обработки ситуаций, когда введено не число.
result
примет значение null
в случае нажатия кнопки «Отмена». Конечно, null
выполнится без ошибок, но работа программы не будет корректной. Лучше обработать отказ от ввода числа.
В операции (result
из-за деления на два JavaScript осуществляет приведение строки result
к численному типу. Если не получится, результат работы будет некорректным.
Корректный вариант обработки ввода:
var result = prompt('Введите чётное число', '')if (result === null) { alert('Вы отказались от ввода')} else if (isNaN(result % 2)) { alert('Ошибка, введено НЕ ЧИСЛО')} else if (result % 2 === 0) { alert('Число чётное')} else { alert('Число нечётное')}
var result = prompt('Введите чётное число', '') if (result === null) { alert('Вы отказались от ввода') } else if (isNaN(result % 2)) { alert('Ошибка, введено НЕ ЧИСЛО') } else if (result % 2 === 0) { alert('Число чётное') } else { alert('Число нечётное') }
Код для обработки всех случаев ввода гораздо длиннее. В случае использования switch
или отдельных функций проверки, код получится более элегантным.
На практике
Скопированосоветует Скопировано
🛠 Пример использования prompt
с самостоятельно созданным диалоговым окном: