I wrote this little code to put a few skills together to make sure I am understanding the logic correctly.
*Code runs a prompt asking for your name
*Take the name and runs a prompt to ask your age.
*I have loops set up to make sure the fields are filled out correctly, if not it re-runs the prompt.
*The prompt to ask the age, keeps looping, I have the parameters set correctly it looks like, but it won't accept any number to end the loop.
**I emboldened the few lines of code I am having an issue with.
Thanks,
Russell
Code:
var counter= 0
//declares vaule to variable
var yourName= prompt("What is your name?")
//variable created from prompt
while(counter= 1){
//loop to run to ensure prompt is filled out
if (yourName.length== 0) {
//condtion to check if variable has a value
var yourName= prompt("What is your name?")
counter =1}
//counter set to re-run the loop if variable is blank
else {
//run the new prompt once variable has a value
counter= 2
var age= prompt(yourName+ " how old are you?")}
}
//declares value to new variable
var counter2= 0
while(counter2 = 1) {
//loop to verify content of prompt is correctly filled out
if (age <0 || age >99) {
//conditional to set parameters for the loop
var age= prompt(yourName+ " how old are you?")
counter =1}
//sets variable counter to 1 to re-run loop
else {
//sets counter to 2 to end loop and print a string
counter= 2
document.write("Hello "+ yourName+ " I see you are"+ age+ " years old.")
}
I did some more tinkering around with it, and I found the bug is in a different area of the code (new emboldened lines)
Code:
var counter= 0;
//declares value to variable
var yourName= prompt("What is your name?")
//variable created from prompt
while(counter= 1){
//loop to run to ensure prompt is filled out
if (yourName.length== 0) {
//condition to check if variable has a value
var yourName= prompt("What is your name?")
counter= 1}
//counter set to re-run the loop if variable is blank
else {
//run the new prompt once variable has a value
counter= 2
var age= prompt(yourName+ " how old are you?")}
}
//declares value to new variable
var counter2= 0
while(counter2 == 1) {
if (age <0 || age >99) {
var age= prompt(yourName+ " how old are you?")
counter =1}
else {
counter= 2
document.write("Hello "+ yourName+ " I see you are"+ age+ " years old.")
}
}
You shouldn't be using either prompt or document.write in your javaScript - those became obsolete a long time ago.
Absolutely right!
But if you insist on using prompt, here is the best way to require a valid entry-
Code:
<script type = "text/javascript">
for (var i=1; i<2; i++) {
var ans = prompt ("Enter your name here", "");
if ((ans == null ) || (ans == "") || (/[^a-z\s\-\']/gi.test(ans))) {
alert ("You must enter your name using only letters, space, hyphen and/or apostrophe!! ");
i -- ;
}
}
</script>
Likewise to require a number in range 0-100
Code:
<script type = "text/javascript">
var repeat = true;
while(repeat) {
var ans = parseFloat(prompt("Enter a positive number max.100",""));
if ((isNaN(ans)) || (ans == null) || (ans < 0) || (ans > 100)) {
alert ("You must enter a positive number max. 100");
}
else {
repeat = false;
}
}
</script>
__________________
All the code given in this post has been tested and is intended to address the question asked.
Unless stated otherwise it is not just a demonstration.
while( true )
{
var ans = parseFloat(prompt("Enter a positive number max.100",""));
if ((isNaN(ans)) || (ans == null) || (ans < 0) || (ans > 100))
{
alert ("You must enter a positive number max. 100");
} else { break; }
}
Or, my preference (I don't know why...just me):
Code:
while( true )
{
var age = parseInt(prompt("Enter a positive whole number max.100",""));
if ( ! isNaN(age) && age != null && age >= 0 && age <= 100 ) { break; }
alert ("You must enter a positive whole number max. 100");
}
I did change to parseInt since this is supposed to be getting an age.
__________________
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.
Of course none of those approaches will prevent a visitor using any browser except Internet Explorer from simply checking the checkbox at the bottom of the prompt either on its first appearance in Opera - where it turns off JavaScript - or on its second appearance in other browsers - where it turns off all further prompts, confirms and alerts.
Thanks for the feedback yall, using values of true/false/null helped it run along with my mistakes of = instead of ==.
Code:
<html>
<script>
function nameFunction(){
var counter= 1;
//declares value to variable
var yourName= prompt("What is your name?", "Enter your name")
//variable created from prompt
while(counter== 1){
//loop to run to ensure prompt is filled out
if (yourName.length== 0 || yourName==="Enter your name" || yourName== null) {
//condition to check if variable has a value
var yourName= prompt("What is your name?")
(counter)}
//counter set to re-run the loop if variable is blank
else {
//run the new prompt once variable has a value
(counter++)
var age= prompt(yourName+ " how old are you?", "Enter your age")}
}
//declares value to new variable
var counter2= 1
//sets a new variable to the counter
while(counter2 == 1) {
//counter to check new prompt
if (age <=0 || age >99) {
//parameters for new prompt
var age= prompt(yourName+ " how old are you?")
counter2 =1}
else {
//variable to end loop
(counter2++)
document.write("Hello "+ yourName+ ", I see you are "+ age+ " years old.")
//prints statement based on variable
}
}
}
</script>
<body>
<input type= "button" onclick="nameFunction()" value="Click me">
<script>
//links function to a button
</script>
</body>
</html>