2013-02-23 14 views
7

Potrzebuję zachęcić gościa do liczby całkowitej od 1 do 100 i do kontynuuj podpowiedzi, aż do wpisania prawidłowego numeru.Monit javascript i kontynuuj pytania, jeśli odpowiedź jest błędna.

Oto co mam:

<script> 

var number = parseInt(prompt("Please enter a number from 1 to 100", "")); 

if (number < 100) { 
    document.write("Your number (" + number + ") is matches requirements", ""); 
} else if (isNaN(number)) { 
    parseInt(prompt("It is not a number. Please enter a number from 1 to 100", "")); 
} else { 
    parseInt(prompt("Your number (" + number + ") is above 100. Please enter a number from 1 to 100", "")); 
} 

</script> 

Uznaje numer, ale nie zapytać ponownie, gdy liczba jest źle. Czy możesz mi pomóc i wyjaśnić, co dodałeś?

Dziękuję bardzo.

Odpowiedz

8

Coś jak to powinno załatwić sprawę:

do{ 
    var selection = parseInt(window.prompt("Please enter a number from 1 to 100", ""), 10); 
}while(isNaN(selection) || selection > 100 || selection < 1); 
+0

Dodaj parametr radix 10 do funkcji parseInt i jesteś dobry, aby przejść :) –

+0

Wielkie dzięki za pomoc! – Art

2

Oto rekurencyjny podejście:

var number = (function ask() { 
    var n = prompt('Number from 1 to 100:'); 
    return isNaN(n) || +n > 100 || +n < 1 ? ask() : n; 
}()); 
+0

Lepiej unikać rekursji, gdy nie jest to konieczne. Pętla jak w tej odpowiedzi http://stackoverflow.com/a/15047174/1162143 jest prostsza - dobrze! – MoMolog

1

Innym podejściem:

<html> 
    <head> </head> 
    <body onload="promptForNumber();"> 


<script> 
    function promptForNumber(text) 
{ 
    if(text == ''){ 
    text = "Please enter a number from 1 to 100"; 
    } 
    var number = parseInt(window.prompt(text, "")); 
    checkNumber(number); 

} 
function checkNumber(number){ 

    if (number <= 100 && number >= 1) { 
    document.write("Your number (" + number + ") matches requirements", ""); 
} else if (isNaN(number)) { 
    promptForNumber("It is not a number. Please enter a number from 1 to 100", ""); 
} else { 
    promptForNumber("Your number (" + number + ") is not between 1 and 100", ""); 
} 

} 


</script> 

    </body> 
</html> 
+0

Dziękuję za odpowiedź. – Art

Powiązane problemy