2016-11-06 2 views
3

Мое упражнение - заставить пользователя ввести число и проверить, что оно меньше 100. Я думаю, что я сделал это хорошо, но есть другой случай, который я не знаю, как это сделать. Если пользователь не вводит номер в пробе, программа должна показывать что-то вроде «вы должны ввести число». Как написать код?Подтверждение ввода пользователем Javascript

var number=prompt('enter a number'); 
if (number<100){ 
    newnumber=100-number; 
    document.write(number+'is less than 100 by'+ newnumber); 
}else if(number>100){ 
    document.write('type again'); 
} 
+0

я думаю используя подсказку вы не можете сделать это. – Mahi

+4

@Mahi Конечно, вы можете ... – Brad

+0

@Brad Как вы можете отключить приглашение для возврата пустого значения строки? – Mahi

ответ

2

Вы можете определить, если вход пользователей является допустимым числом с помощью функции isNaN. Я также подтвердил для вас пустой символ, как показано ниже.

var isValid = !isNaN(number) && number !== ""; 

Полный фрагмент кода:

var number = prompt('enter a number'); 
 
number = number.replace(/\s/g, ""); 
 
var isValid = !isNaN(number) && number !== ""; 
 

 
if (isValid) { 
 
    if (number<100) { 
 
    newnumber=100-number; 
 
    document.write(number+'is less than 100 by'+ newnumber); 
 
    } else if(number>100) { 
 
     document.write('type again'); 
 
    } 
 
} else { 
 
    document.write("Looks like you didn't enter a valid number"); 
 
}

https://jsfiddle.net/ezgn5cv5/

+0

, когда я нажимаю ok после ввода ничего не должен идти, если условие – Mahi

+0

@ Даррен Дэвис, я думаю, вы должны удалить пробелы, чтобы избежать лишних пробелов и пустых входов '' '' будет '0 ' –

+0

@MamdouhFreelancer - тогда вы можете добавить еще одну проверку' && number! == "" '- см. Мое обновление. –

1
  • Удалить все пробелы .replace(/\s/g, "").
  • Detect, если пользовательский ввод номера с помощью parseFloat(), если вы хотите, чтобы позволить пользователю десятичных чисел входных как 5.254 или только целых чисел, используя parseInt() как 5.
  • Затем определить, number > 100 или number < 100.

Смотрите этот пример:

var number = prompt('enter a number'); 
 
    number = number.replace(/\s/g, ""); //remove all spaces 
 

 
if (number != "") { // if not empty 
 
    if (parseFloat(number) == number) { // if decimal/integer number 
 
    if (number < 100) { 
 
     newnumber = 100 - number; 
 
     document.write(number + ' is less than 100 by ' + newnumber); 
 
    } else if (number > 100) { 
 
     //number = prompt('enter a number'); 
 
     document.write('type again'); 
 
    } 
 
    } else { 
 
     //number = prompt('enter a number'); 
 
    document.write('you must type a number'); 
 
    } 
 
} else { // if empty input 
 
     //number = prompt('enter a number'); 
 
    document.write('shouldn\'t be empty'); 
 
}

1
var number = null; 
while (number !== 0 && !number || number >= 100) { 
    number = parseInt(prompt('Enter a number, less than 100')); 
} 

document.write(
    number + 
    ' is less than 100 by ' + 
    (100 - number) 
); 

Это ставит нас в петлю для того, или нет, число является действительным целое (я предположил, что это то, что вы но вы можете изменить это на float или что-то еще) и ниже 100. Только когда вход пользователя действителен, он перейдет к строке для вывода.

второй состояние для while loop is !number. Это в основном тесты для фальсификаций, например NaN или null. Если parseInt() не может понять, что пользователь вводил для числа, он вернет NaN. И, конечно, мы инициализировали переменную number до null.

первого условие while является number !== 0 на самом деле требуется из второго состояния, которое испытывает на falsy. 0 является фальшивым, но 0 является действительным числом менее 100, поэтому нам нужно убедиться, что мы допустим, что 0 будет действительным. Условные обозначения, такие как короткое замыкание. Это означает, что они обрабатываются слева направо, и любое условие, не выполняющее тест, немедленно обходит условный блок кода ниже. Если number - 0, мы знаем, что все условие ложно и мы можем двигаться дальше.

Состояние третье условие просто гарантирует, что мы находимся под 100 путем повторного запроса, если мы этого не сделаем.

Кроме того, я должен отметить, что у document.write() есть некоторые проблемы. Лучше выбрать элемент на странице и задать его текст.

Смежные вопросы