Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка числа на неправильность и NaN (https://javascript.ru/forum/misc/77514-proverka-chisla-na-nepravilnost-i-nan.html)

Pashok11 15.05.2019 20:47

Проверка числа на неправильность и NaN
 
Пишу небольшой JS код в целях обучения подобного вида:

Написал что-то вот такое:
var someThing=prompt("someThing (1-12):","");
var someThingMath;

mainCheck: while(true) {
if(someThing>=1&&someThing<=12) {
  someThingMath=someThing-1;
  break;
}
else {
  if(someThing<1&&someThing>12){
    if (someThing<1) {
      someThing=prompt("Вы ввели число меньше заданного. Пожалуйста, повторите попытку.\n\nsomeThing (1-12):","");
      continue mainCheck;
    }
    else {
      someThing=prompt("Вы ввели число больше заданного. Пожалуйста, повторите попытку.\n\nsomeThing (1-12):","");
      continue mainCheck;
    }
  }
  else {
    var someThingIsNaN=isNaN(Number(someThing));
    if (someThingIsNaN == true) {
      someThing=prompt("Вы ввели не число. Пожалуйста, повторите попытку.\n\nsomeThing (1-12):","");
      continue mainCheck;
    }
  }
}}


но оно зависает, если ввести какое-либо число меньше 1 или больше 12 (в других случаях всё проходит нормально).

Поискал что-то подобное в интернете - но не нашёл (может плохо искал).
Как можно сделать что-то подобное в адекватном виде?
(если не сложно, напишите сразу код)

рони 15.05.2019 22:22

Pashok11,
var someThing=prompt("someThing (1-12):","");
var someThingMath;

mainCheck: while(true) {
var someThingIsNaN = isNaN(Number(someThing));
if (someThingIsNaN || someThing === "" || someThing === null) {
            someThing=prompt("Вы ввели не число. Пожалуйста, повторите попытку.\n\nsomeThing (1-12):","");
            continue mainCheck;
}

if(+someThing>=1&&+someThing<=12) {
    someThingMath=someThing-1;
    break;}

if (+someThing<1) {
            someThing=prompt("Вы ввели число меньше заданного. Пожалуйста, повторите попытку.\n\nsomeThing (1-12):","");
            continue mainCheck;
        }
else {
            someThing=prompt("Вы ввели число больше заданного. Пожалуйста, повторите попытку.\n\nsomeThing (1-12):","");
            continue mainCheck;
}


}
alert(someThingMath);


Часовой пояс GMT +3, время: 17:31.