首页 > 解决方案 > 验证和循环javascript

问题描述

我需要验证三个不同提示的用户输出,并认为这可行,但事实并非如此。

第一个提示需要验证澳大利亚 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" && stInput !== "New South Wales" && stInput !== "Victoria" && stInput !== "Tasmania" && stInput !== "Northern Territory" && stInput !== "Western Australia" && stInput !== "South Australia" && 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"); 
                }

标签: javascriptloopsvalidationwhile-loop

解决方案


我不能谈论你更大的问题,但我会告诉你,任何时候我使用while循环,我总是在故障安全中编程。我通常称它们为safetyValve. 它可以防止系统陷入无限循环并崩溃。它看起来有点像:

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

推荐阅读