Javascript显示提示,直到输入小于2

时间:2017-07-24 18:19:55

标签: javascript loops while-loop

我正在尝试让页面提示用户输入。我希望它一直显示一个提示,直到输入的数字小于2.

我的代码没有正确执行此操作。当我按下我的警报时,它就会关闭。如果输入的数字低于2,我希望重新显示提示。

我需要在一个名为readNumberOfEntries的函数中编写这段代码。

目前我的代码是:

<script>
"use strict";

main();

/* You may not change anything in the mainFuncion */
function main() {

    var messageToDisplay = "Enter 1 to check whether data is sorted\n";
    messageToDisplay += "Enter 2 to check whether data represents a palindrome";

    var option = Number(prompt(messageToDisplay));

    readNumberOfEntries(option);

    if (option === 1) {
        if (isSorted()) {
            alert("Data is sorted");
        } else {
            alert("Data is not sorted");
        }
    }

    else if (option === 2) {
        if (isPalindrome()) {
            alert("Data represents a palindrome");
        } else {
            alert("Data does not represent a palindrome");
        }
    }

    else {
        alert("Invalid option provided.");
    }

}

function readNumberOfEntries($value) {
    /* YOU MUST IMPLEMENT THIS FUNCTION */
    var smaller_than_two = false;

    if($value < 2) {
        smaller_than_two = true;
    } else {
        smaller_than_two = false;
        //alert('Error: Number must be greater than or equal to 2');
    }

    while(!smaller_than_two) {
        if($value < 2) {
            smaller_than_two = true;
        }
    }
}

function isSorted() {
    /* YOU MUST IMPLEMENT THIS FUNCTION */

}

function isPalindrome() {
    /* YOU MUST IMPLEMENT THIS FUNCTION */
}

</script>

4 个答案:

答案 0 :(得分:0)

一个简单的解决方案是让你的readNumberOfEntries函数返回smaller_than_two变量,然后让你从readNumberOfEntries中拉出while循环,然后在你的main函数中使用它,将继续提示,直到真实。

function main() {

    while(!readNumberOfEntries(option)){
        // alerts, etc ...
    }
}

答案 1 :(得分:0)

只需在main()中再次拨打else即可重新触发提示

else {
    alert("Invalid option provided.");
    main()
}

答案 2 :(得分:0)

所以你的代码工作正常,但它不会被多次调用。您的main();电话会调用一次工作逻辑,但如果符合您的条件,则需要重新拨打电话。我建议递归调用main()

function main() {

  var messageToDisplay = "Enter 1 to check whether data is sorted\n";
  messageToDisplay += "Enter 2 to check whether data represents a palindrome";

  var option = Number(prompt(messageToDisplay));

  readNumberOfEntries(option);

  if (option === 1) {
      if (isSorted()) {
          alert("Data is sorted");
      } else {
          alert("Data is not sorted");
      }
  }

  else if (option === 2) {
      if (isPalindrome()) {
          alert("Data represents a palindrome");
      } else {
          alert("Data does not represent a palindrome");
      }
  }

  else {
    alert("Invalid option provided.");
  }

  if(option <2){
    main();
  }
}

答案 3 :(得分:0)

您可以在readNumberOfEntries

中运行循环
function readNumberOfEntries($value) {
   while(true) {
      if($value>2) {
         return $value;
      } else {
         $value = Number(prompt("Enter a value greater than 2"));
      }
   }
}

然后将readNumberOfEntries返回的值分配给option

option = readNumberOfEntries(option);