Кратко
СкопированоПри помощи функции 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 с самостоятельно созданным диалоговым окном: