prompt()
- Что такое prompt()
- Синтаксис
- Как получить ответ пользователя
- Значение по умолчанию
- prompt() возвращает строку
- Что вернет кнопка Отмена
- prompt(), alert() и console.log()
- Частые ошибки
prompt() - это встроенная функция браузера, которая показывает модальное окно с полем для ввода. С ее помощью можно задать пользователю вопрос и получить введенный ответ в JavaScript-код.
На первых уроках prompt() удобен для простых примеров: спросить имя, возраст, количество баллов или любое другое значение, а затем использовать его в программе.
Что такое prompt()
prompt() похож на alert(), но кроме сообщения показывает поле ввода. Пользователь может что-то написать и нажать ОК.
prompt('Как вас зовут?');
После выполнения кода браузер покажет окно с вопросом и полем для ввода текста.
Но если просто вызвать prompt(), ответ пользователя нигде не сохранится. Чтобы использовать введенное значение дальше, его нужно записать в переменную.
Синтаксис
Общая запись выглядит так:
prompt(message, defaultValue);
message - текст вопроса или подсказки, который увидит пользователь.
defaultValue - необязательное значение по умолчанию. Оно заранее появится в поле ввода.
Простой вариант с одним параметром:
prompt('Введите ваше имя');
Вариант со значением по умолчанию:
prompt('Введите ваше имя', 'Алексей');
Как получить ответ пользователя
Чтобы сохранить ответ пользователя, результат prompt() записывают в переменную.
let userName = prompt('Как вас зовут?');
console.log(userName);
Если пользователь введет Ирина и нажмет ОК, в переменную userName попадет строка ‘Ирина’.
Дальше это значение можно вывести в модальном окне:
let userName = prompt('Как вас зовут?');
alert(userName);
Или добавить текст:
let userName = prompt('Как вас зовут?');
alert('Привет, ' + userName);
Если ввести Ирина, появится сообщение:
Привет, Ирина
Значение по умолчанию
Вторым аргументом в prompt() можно передать значение по умолчанию. Оно сразу появится в поле ввода.
let city = prompt('В каком городе вы живете?', 'Москва');
console.log(city);
Пользователь может оставить это значение, изменить его или полностью стереть. После нажатия ОК в переменную попадет то, что осталось в поле.
Такой вариант удобен, когда мы хотим подсказать пример ответа.
prompt() возвращает строку
Важный момент: prompt() возвращает строку. Даже если пользователь ввел число, JavaScript получит его как текст.
let age = prompt('Сколько вам лет?');
console.log(age);
Если ввести 25, в переменной будет строка ‘25’, а не число 25.
Это особенно важно при вычислениях:
let a = prompt('Введите первое число');
let b = prompt('Введите второе число');
console.log(a + b);
Если ввести 10 и 5, результатом будет:
105
Так происходит потому, что JavaScript складывает строки, а не числа. Чтобы выполнить именно математическое сложение, значения нужно преобразовать в числа.
let a = Number(prompt('Введите первое число'));
let b = Number(prompt('Введите второе число'));
console.log(a + b);
Теперь при вводе 10 и 5 в консоли будет:
15
Подробно преобразование типов мы разберем позже, но про эту особенность prompt() лучше знать сразу.
Что вернет кнопка Отмена
В окне prompt() пользователь может нажать не только ОК, но и Отмена.
let answer = prompt('Введите любое значение');
console.log(answer);
Если нажать Отмена, в переменную попадет значение null. Это специальное значение, которое означает отсутствие результата.
Если пользователь ничего не введет и нажмет ОК, результатом будет пустая строка:
''
То есть Отмена и пустое поле - это разные ситуации.
prompt(), alert() и console.log()
Эти три инструмента часто используются вместе в первых примерах.
prompt() получает данные от пользователя:
let name = prompt('Введите имя');
alert() показывает сообщение в модальном окне:
alert('Привет, ' + name);
console.log() выводит значение в консоль:
console.log(name);
Полный пример:
let name = prompt('Введите имя');
alert('Привет, ' + name);
console.log(name);
Так можно и показать ответ пользователю, и дополнительно проверить значение в консоли.
Частые ошибки
1. Ответ не сохранен в переменную
prompt('Введите имя');
alert(name);
В этом примере ответ пользователя нигде не сохранен, а переменной name нет. Правильно:
let name = prompt('Введите имя');
alert(name);
2. Ожидание числа после prompt()
let a = prompt('Введите число');
let b = prompt('Введите число');
console.log(a + b);
Если нужны числа, используем преобразование:
let a = Number(prompt('Введите число'));
let b = Number(prompt('Введите число'));
console.log(a + b);
3. Неправильно написано имя функции
Prompt('Введите имя');
JavaScript чувствителен к регистру. Правильно:
prompt('Введите имя');
4. Пропущены кавычки в тексте вопроса
prompt(Введите имя);
Текст нужно писать в кавычках:
prompt('Введите имя');
Что дальше
prompt() позволяет получить данные от пользователя прямо через модальное окно браузера. На первых уроках это удобный способ быстро добавить ввод в программу.
Дальше разберем confirm() - функцию, которая задает вопрос и возвращает один из двух вариантов: согласен пользователь или нет.