Javascript метод parseInt возвращает NaN - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь суммировать две переменные. Предположим, что count = 1 и get_item_amount = 3

count = parseInt(count) + get_item_amount
output : 13

Когда я преобразовываю переменную в целое число, она возвращает NaN. Я не знаю, почему я не могу преобразовать значение из строки в int. jQuery правильно получают значение из элемента ввода, когда я отлаживаю с console.log без метода parseInt.

$("[id^=item-]").each(function(){

 var get_item_amount = $(this).val();
 count = parseInt(count) + parseInt(get_item_amount)

 console.log(count)

});
output: NaN

Кто-нибудь может это объяснить?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2020

Кажется, что некоторые из ваших входных данных имеют пустую строку.

parseInt("") возвращает NaN, вы можете использовать Number() Вместо. Преобразование пустой строки с помощью Number() даст вам 0, и вы получите ожидаемый результат при сложении.

Обратите внимание: Вы по-прежнему можете использовать parseInt(), отфильтровывая входные данные с пустыми значениями, используя Селектор не равный , как показано ниже:

var count = 0;
$("[id^=item-][value!='']").each(function(){
 var get_item_amount = $(this).val();
 count = parseInt(count) + parseInt(get_item_amount);
 console.log(count);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="input item-input" type="text" id="item-1" placeholder="จำนวน" value="11">

<input class="input item-input" type="text" id="item-2" placeholder="จำนวน" value="">

<input class="input item-input" type="text" id="item-3" placeholder="จำนวน" value="33">
0 голосов
/ 09 февраля 2020

Проблема решена. Спасибо.

$("[id^=item-]").each(function(){
 if($(this).val() > 0) {
  var get_item_amount = $(this).val();
  count = parseInt(count) + parseInt(get_item_amount)
 }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...