2017-01-03 4 views

Répondre

3

Parce que vous n'êtes pas mise à jour à x dans la boucle:

var x = prompt("enter a number"); 

while (isNaN(x)){ 
    x = prompt("please enter a number"); // <==== 
} 

Notez que c'est l'un de ces endroits une boucle do-while est utile:

var x; 
do { 
    x = prompt("please enter a number"); 
} 
while (isNaN(x)); 

également notez que x sera une string. isNaN fonctionnera avec, cependant, parce que la première chose à faire est de convertir son argument en un nombre s'il n'en est pas un. Mais notez que x reste une chaîne et donc (par exemple) + peut ne pas faire ce que vous attendez. Donc, vous pouvez le convertir en utilisant un unaire +, Number(), parseInt, ou parseFloat. (Voir this answer pour plus de détails sur ces options.) Exemple:

var x; 
do { 
    x = +prompt("please enter a number"); 
// ^
} 
while (isNaN(x)); 
1

Sur la première ligne de votre script, vous demandez à l'utilisateur d'entrer et d'assigner cette entrée à x (Dites qu'ils entrent dans « un », non numérique). Ensuite, vous vérifiez pour voir si x est un nombre (ce n'est pas). Si ce n'est pas un nombre, l'utilisateur est invité à entrer de nouveau. Cependant, cette entrée n'est jamais (ré) affectée à x et la valeur de x reste 'a'. la commande prompt n'est en aucun cas couplée à la variable x. Essayez ceci dans votre boucle

x = prompt("please enter a number");