Как получить пользовательский ввод из приглашения на регистрацию при l oop, если что-то является числом? - PullRequest
0 голосов
/ 09 апреля 2020

Я новичок в javascript, и я искал повсюду ответы на вопросы о том, как проверить вводимые пользователем данные из приглашения, чтобы убедиться, что пользователь дает правильный номер. Я пробовал result!==isNan() result==isNan(Nan) и другие варианты. Не могли бы вы помочь мне понять, почему это не работает и как заставить его работать

var result = prompt("Give number between 4-10"); 
    while (result<4||result>10||result==isNaN(result)) 
    {
        var result = prompt("You need to give number between 4-10!");
    }
  alert ("success")

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Ваш result==isNaN(result) код никогда не запускается

// a prompt returns a string or null ( if cancelled )
// The values are casted to a number when comparing with a value of the type number
console.log( Number(null) ) // 0
console.log( Number('5') ) // 5
console.log( Number('') ) // 0

// this means the values of null and '' are never even reach your isNan() code because 0<4 resolves to true. Thus repeating your loop.

var result = prompt("Give number between 4-10"); 
while ( result<4 || result>10 ) {
  result = prompt("You need to give number between 4-10!");
  // you could break your loop if an use cancels here
  if( result === null ) break;
}
alert ( `success: ${result}`)

Вы можете использовать рекурсию вместо while l oop

askUser();

function askUser(){
  let answer = prompt('Hello would you please enter a number between 4 and 10?');
  if( answer>4 && answer<10 )
    alert('Thank you, you are awesome!')
  else if( answer === null )
    alert('Really you can\'t think of a number between 4 and 10??!?!?')
  else 
    askUserAgain();
}

function askUserAgain() {
  let answer = prompt('This is not a number between 4 and 10, you are a fool! Please try again.');
  if( answer>4 && answer<10 )
    alert('Thank you, you are awesome!')
  else if( answer === null )
    alert('Really you can\'t think of a number between 4 and 10??!?!?')
  else 
    askUserAgain();
}
0 голосов
/ 09 апреля 2020

Вы можете попробовать проверить значение результата по isNan(result) == true

<script>
var result = prompt("Give number between 4-10"); 
    while (result < 4||result > 10|| isNaN(result) == true) 
    {
        var result = prompt("You need to give number between 4-10!");
    }
  alert ("success")
</script>

...