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));