Search code examples
javascriptloopsfor-loopwhile-loopvar

How to display entry from prompt that stops loop


I'm trying to make a page that:

  • Asks the user for their name and displays the user's name on the page
  • Asks the user for a number between 1 and 9, and displays the multiplication table for that number
  • if the user enters a number outside this range, then send an alert with an error message
  • repeat until you get a number in the desired range

However, the number that gets written in the document for the multiplication table keeps being the first number entered into the prompt box even when it's not between 1 and 9.

var greetingString = "Your name is ";
var myName = prompt("What is your name?", "");
    document.write(greetingString + myName + ".", "<br/>");
    document.write("<br/>");


var number = prompt("Enter a number:", "");

for(index = 1; index <= 9; index = index + 1) {
    document.write(number+ "*" +index+ "=" +number*index+ "<br/>");
}

while(true) {
    if(number<=0 || number>=10) {
    alert("Error!");
    number = prompt("Enter a number:", "");
    } else {
        break;
    }
}
document.write("<br/>");

I'm expecting the loop to continue until I enter a number between 1 and 9 but then I expect a number between 1 and 9 to be in the document in the multiplication table.


Solution

  • You need to put the loop before you print the table.

    You can also put the initial prompt inside the loop so you don't have to write it twice.

    var greetingString = "Your name is ";
    var myName = prompt("What is your name?", "");
    document.write(greetingString + myName + ".", "<br/>");
    document.write("<br/>");
    
    while (true) {
      var number = prompt("Enter a number:", "");
      if (number <= 0 || number >= 10) {
        alert("Error!");
      } else {
        break;
      }
    }
    
    for (index = 1; index <= 9; index = index + 1) {
      document.write(number + "*" + index + "=" + number * index + "<br/>");
    }
    
    document.write("<br/>");