<input id='inpa' type='number' value=1>

< Сильный > JS

var inp = $('#inpa').val();

$('#btnext').click(function(){
    $('#inpa').val(inp + 1);
    $('#inpa').val(inp += 1); // also tried
});

В обоих случаях результат равен 11!

Как я могу получить 2?

-1
qadenza 23 Фев 2018 в 15:45

4 ответа

Лучший ответ

Значением входных данных HTML всегда являются строки. Вам нужно «разобрать» число как целое число.

parseint(inp)

Поймет, что inp является целым числом, из которого вы теперь можете +1 и -1.

Когда вы установите значение тега, он вернется к строке.

1
Thomas Edwards 23 Фев 2018 в 12:48

Ваш код объединяет строки.

Вам нужно конвертировать каждую переменную в число, вызывая parseFloat () вокруг каждой.

$('#btnext').click(function(){
   var inp = $('#inpa').val();
    $('#inpa').val(parseInt(inp) + 1);
   // $('#inpa').val(inp += 1); // also tried
});
1
Léo R. 23 Фев 2018 в 12:50

Вы должны преобразовать строку в число, используя Number или parseInt

$('#btnext').click(function() {
  var inp = Number( $('#inpa').val() ); /* Need to be inside the function, so that will get the updated value every user click*/
  $('#inpa').val(inp + 1);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id='inpa' type='number' value=1>
<input type="button" id="btnext" value="btnext">
1
Eddie 23 Фев 2018 в 12:48

Сначала вы должны разобрать их в числа:

var a = parseInt($('#inpa').val(), 10);
1
SANM2009 23 Фев 2018 в 12:47