Maggie Carignan Ответов: 1

Как заставить javascript возвращать сообщения с помощью if/else?


Я пытаюсь создать простую программу, в которой пользователю нужно выбрать максимальное число, а затем попытаться угадать число между 1 и этим максимальным числом. Когда они вводят свое предположение, мне нужно проверить ввод и предложить выбор обратной связи: различные сообщения, если это (1) не число, (2) число не в пределах диапазона, (3) правильное предположение, (4) слишком высокое, но в пределах диапазона, и (5) слишком низкое, но в пределах диапазона.

Что я уже пробовал:

function do_guess(prompt) {
    let valid_input = false;
    let guess = Number(document.getElementById("guess").value);

    let message = document.getElementById("message");

    while(!valid_input) {
        input = window.prompt(prompt);

        guess = Number(input);
    
        if (guess == NaN) {
            message.innerHTML = "That is not a number!";
        }
        else if (guess < 1 || guess > val) { \\val is maximum range - I'm not sure how to code this yet\\
             message.innerHTML = "That number is not in the range, try again.";
        }
        else if (guess == num) {
            valid_input = true;
            message.innerHTML = "You got it!";
        }
         else if (guess > num) {
            message.innerHTML = "No, try a lower number.";
        }
        else {
             message.innerHTML = "No, try a higher number.";
        }
    }    
}

Richard MacCutchan

В чем же проблема?

DerekT-P

Так что же этот код делает, чего вы не хотите, или не делает того, что вы делаете? (Кстати, используйте guess.isNaN, а не guess == NaN ).
Подсказка - одна из проблем, с которой вы столкнетесь, заключается в том, что браузер может не перерисовывать элемент "сообщение", потому что перерисовка происходит только после завершения выполнения скрипта, и в вашем коде она не завершается (выход из цикла while) до тех пор, пока пользователь не введет правильное предположение. (Ожидание запроса на ввод данных пользователем не считается выходом из выполнения скрипта). Исследуйте, как решить эту проблему, или реструктурируйте свой код так, чтобы он не был полностью в пределах одного цикла while.

1 Ответов

Рейтинг:
1

W∴ Balboos, GHB

Переосмыслите свою логику (подразумевается в первых двух комментариях):

Используйте что-то вроде элемента <input> Для ввода данных. Используйте кнопку, например, для запуска проверки содержимого коробки и отображения вашего сообщения.

Таким образом, javascript выполняется только тогда, когда ему нужно выполнить свой тест.

Другие варианты, вместо кнопки, были бы 'onblur- событие, которое вызовет ваш javascript, когда фокус покинет поле ввода.

Бонусные баллы: создайте поле ввода таким образом, чтобы оно принимало только числовой ввод (подсказка: onkeyup-это помощь в тестировании после каждого символа .