У меня есть 3 столбца, и я пытаюсь вычесть два столбца на JavaScript. Данные первого столбца (столбец A) взяты из базы данных, данные второго столбца (столбец B) вводятся пользователем, а третий столбец предназначен для значения. Я успешно выполнил сложение, но на самом деле мне нужно вычитание. Я попытался изменить знак + на -, но, как оказалось, дал мне неправильное значение. Может кто-нибудь мне помочь?
это мой код
<tr>
<td style = "text-align: center; vertical-align:middle;"><?php echo $no; ?></td>
<td style = "vertical-align:middle;"><?php echo $data[$i]['nama_barang']?></td>
<td style = "text-align: right; vertical-align:middle;" class = "so"><?php echo $data[$i]['stock']; ?></td>
<td><input type = "number" class = "form-control so" id = "stock_op" name = "stock_op" style = "text-align: left"></td>
<td style = "text-align: right; vertical-align:middle; font-weight:bold;"><output class = "result"></output></td>
</tr>
<?php
}
?>
<script src = "../js/jquery.min.js"></script>
<script>
$(document).on('input','.so',function(){
var grandSum = 0;
var totalSum = 0;
var currentRow = $(this).closest('tr');
currentRow.find('.so').each(function(){
var inputVal = ($(this).is('input')) ? $(this).val() : parseInt($(this).html());
if ($.isNumeric(inputVal)){
totalSum += parseFloat(inputVal);
}
});
currentRow.find('.result').val(totalSum);
});
</script>
</tr>
Это таблица 
@AmrAly, я не понимаю ..



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны добавить первое значение к общей сумме и вычесть второе значение как
if ($.isNumeric(inputVal)){
if (totalSum==0)
totalSum += parseFloat(inputVal);
else
totalSum -= parseFloat(inputVal);
}
Нет, мне просто нужно вычесть, но если я заменю totalSum += parseFloat(inputVal); на totalSum -= parseFloat(inputVal);, это даст мне неверный результат.
Во-первых, у вас должно быть значение первой строки в totalSum, затем вы можете вычесть из него второе значение, просто попробуйте запустить этот код
Если вы вычитаете значение первой строки из 0, а затем снова вычитаете значение второй строки из результата, как вы ожидаете получить правильный результат, я надеюсь, что вы его сейчас получите
Поскольку вы просматриваете как стандартный, так и статический номер
<?php echo $data[$i]['stock']; ?>
т.е. 4 / 13
и номер пользователя
<input type = "number" class = "form-control so" id = "stock_op" name = "stock_op" style = "text-align: left">
Вам все равно нужно добавить номер запаса и вычесть только номер, определенный пользователем.
Так что ты не можешь сделать
totalSum -= parseFloat(inputVal);
так как это вычитает оба.
Итак, вам нужно использовать -$(this).val() в
var inputVal = ($(this).is('input')) ? -$(this).val() : parseInt($(this).html());
так как вы хотите вычесть только значение поля ввода.
См. http://jsfiddle.net/gujex58p/
еще раз, что, если я хочу столбец B - столбец A вместо столбца A - столбец B? поставил - расписался на $(this).closest('tr');?
Нет, вы бы использовали его на -parseInt($(this).html());, так как это значение из столбца A.
Вы можете получить значения из базы данных внутри вашего кода javascript и выполнить на нем любой процесс, например, так
var phpValue = "<?php echo $data[$i]['nama_barang']?>";