проверка и зацикливание javascript

#javascript #loops #validation #while-loop

#javascript #циклы #проверка #цикл while

Вопрос:

Мне нужно проверить вывод пользователя для трех разных запросов, и я думал, что это сработает, но это не так.

В первом приглашении необходимо подтвердить любой из 8 штатов и территорий Австралии.

Второе приглашение должно подтвердить, что пользователь ввел целое число.

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

Затем все это нужно повторить заново, чтобы можно было снова задать три запроса. Таким образом, он может создавать таблицу.

         function ask() {
          var stInput = '';
          var populationInput = '';
          var changeInput = '';

          var entering = confirm('Confirm to add state or territory');
          if (!entering) {
            return;
            } else {
              while (true) {
                stInput = prompt('Enter state or territory');
                    function validateUserChoice(stInput) {
                if (stInput !== "Queensland" amp;amp; stInput !== "New South Wales" amp;amp; stInput !== "Victoria" amp;amp; stInput !== "Tasmania" amp;amp; stInput !== "Northern Territory" amp;amp; stInput !== "Western Australia" amp;amp; stInput !== "South Australia" amp;amp; stInput !== "Australian Capital Territory") {

                   } else {
                    return false;
                   }
               }
                populationInput = prompt('Enter population for '   stInput   '');

                while(!isValid(populationInput)) {
                alert('Your input was invalid');
                populationInput = parseInt(prompt('Enter population for '   stInput   ''));
                }
                changeInput = prompt('Enter growth rate for '   populationInput   '');

                while(!isValid(changeInput)) {
                alert('Your input was invalid');
                changeInput = parseFloat(prompt('Enter growth rate for '   populationInput   ''));
                }
                    break;
                }
                 alert("invalid state or territory"); 
                }
  

Комментарии:

1. Использование while циклов вряд ли когда-либо является хорошей идеей. Если вы хотите запускать код, когда кто-то нажимает кнопку, вам следует изучить прослушиватели событий и запускающие события. Вы должны запустить функцию, которая проверяет вашу форму, когда кто-то нажимает кнопку отправки. вместо того, чтобы запускать while (true) цикл для получения любых изменений.

2. Да, то, что сказал @DavidKlinge. Используйте это

3. Да, спасибо за ваш отзыв @DavidKlinge. Но это связано с домашним заданием, и для этого требуется то, что мы узнали до сих пор, и мы не изучили прослушиватели событий. Поэтому я должен использовать циклы while.

4. @ArkinSolomon ^

Ответ №1:

Я не могу говорить о вашей более серьезной проблеме, но я скажу вам, что каждый раз, когда я использую while цикл, я всегда программирую в отказоустойчивом режиме. Я обычно называю их safetyValve . Это предотвращает попадание системы в бесконечный цикл и сбой. Это выглядит немного как:

 var myCondition = true;
var safetyValve = 0;
var safetyMax = 10000;
while (myCondition amp;amp; safetyValve < safetyMax) {
  ...
  safetyValve  ;
}