2011-12-29 2 views
3

Я создаю калькулятор. Часть этого позволит вам вводить до 4 чисел, но вы можете просто иметь 1,2 или 3. У меня есть код, за исключением того, что когда я ввожу только 1, 2 или 3 числа, я получаю результат NaN для чисел, которые я еще не вводил.Как избавиться от isNaN от результатов формы?

Как я могу избавиться от результата NaN?

моего JQuery для разделения введенных данные форм -

var numbers = num4.split(" "); 
    var firstNumber = parseInt(margins[0], 10), 
     secondNumber = parseInt(margins[1], 10), 
     thirdNumber = parseInt(margins[2], 10), 
     fourthNumber = parseInt(margins[3], 10); 
    console.log(firstNumber, secondNumber, thirdNumber, fourthNumber); 

    var shorthand1 = parseInt (firstNumber, 10) * 1; 
    var shorthand2 = parseInt (secondNumber, 10) * 1; 
    var shorthand3 = parseInt (thirdNumber, 10) *1; 
    var shorthand4 = parseInt (fourthNumber, 10) *1; 

и я просто

shorthand1 + shorthand2 + shorthand3 + shorthand4 

в результате отображается в DIV на этой странице.

вопросы, если я вхожу «10 10 10», а не ввести четвертый номер, я получаю результат

10 10 10 NaN 

Могу ли я проверить NaN и не получить, что результат обрабатывается?

ответ

3

Вы можете проверить, является ли значение NaN, используя функцию Javascript isNaN(value).

2

Вы можете проверить isNaN() в js.

Обратите внимание, что функция isNaN() проверяет только «числовой характер» значения, а не конечное значение. Чтобы проверить, является ли число конечным, вы должны использовать JavaScript isFinite().

+0

Sudhur прав - isFinite детектирует и возвращает ложь на NaN. parseInt возвращает NaN, как вы уже нашли. Кроме того, я предлагаю вам проверить длину массива чисел до разделения. Если кто-то входит в «10 10 10», в массиве отсутствует элемент, а number.length расскажет об этом. Вы должны назначать значения наполнителя, возвращать пользователю ошибку или обращаться с ней любым способом, который вы считаете нужным. – user8109

1

Функция isNaN() определяет, является ли значение незаконным числом (Not-a-Number).

Эта функция возвращает значение true, если значение NaN и false, если нет.

<script type="text/javascript"> 
document.write(isNaN(123)+ "<br />"); 
document.write(isNaN("Hello")+ "<br />"); 
document.write(isNaN(NaN)+ "<br />"); 
</script> 

Выходные:
ложные
истинные
правда
В вашем случае, вы можете проверить, как показано ниже:

<html> 
<body> 
<script type="text/javascript"> 
if(!isNaN(123)){ 
document.write(isNaN(123)+ "<br />"); 
} 
if(isNaN("Hello")){ 
document.write(isNaN("Hello")+ "<br />"); 
} 
</script> 
</body> 
</html> 
+0

делает это, если нет или нет слов или нет? Поэтому, если они вводят только 10 10, а не 10 10 10 10, так что это не приведет к 10 10 NaN NaN? –

+0

в любом случае, в вашем случае ** parseInt ** вернет NaN для пустого значения. см. этот [Вопрос] (http://stackoverflow.com/questions/6736476/javascript-parseint-return-nan-for-empty-string) –

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

  • Нет связанных вопросов^_^