как сделать чтобы в prompt ввести текст который написан с верху в случии некоректности выдал ошибку?
Как сделать, чтобы в prompt ввести текст, который написан сверху, а в случае некорректности выдал ошибку?
Источник: Stack Overflow на русском
Как сделать, чтобы в prompt ввести текст, который написан сверху, а в случае некорректности выдал ошибку?
Вариант с конструкцией do {} while()
const a = 'Петя'; // Проверочное слово
let check; // Сюда подставлять будем для сверки.
do {
check = prompt('Введите слово "'+a+'"'); // Выдаём окно ввода и записываем результат в переменную
} while(check !== a); // Проверяем именно чтобы введённое слово было не равно проверочному
// т.к. `true` зацикливает условие, в нашем случае совпадения будет равно `false`, что разорвёт цикл.
// Последующий код не выполнится, пока не будет выполнено это условие
alert('Всё правильно');
Вариант с while(true)
.
Данный вариант меньше и более логичным.
const a = 'Петя'; // Проверочное слово
while(true) // Цикл бесконечен..
if(prompt('Введите слово "'+a+'"') === a) break; // ..но он прервётся при совпадении и выполнится код ниже.
alert('Всё правильно');
Чтобы рандомно выводился текст, добавьте массив с нужными "ошибками" и выводите его рандомно:
const a = 'Петя';
let isError = false; // Требуется для того, чтобы первый раз вывести нормальный текст, а потом выводить ошибки
const errorsMsg = ['Неправильно', 'Неа, не верно', 'Миша, всё @#$%^*, давай по новой..', 'Давай ещё раз', 'Может ты забыл слово? Напиши "'+a+'"'];
while(true) {
if(prompt(!isError ? 'Введите слово "'+a+'"' : errorsMsg[Math.floor(Math.random() * errorsMsg.length)]) === a)
break;
else
isError = true;
}
alert('Всё правильно 👍');