JSFiddle - React, Tailwind, and code Playground
HTML
<div class="goods">
<div class="name">Название товара 1</div>
<div class="goods-count">
<span class="amount">
<input type="button" class="down" value="-" data-id="1">
<input type="text" class="counter" value="1" size="4" data-price="5000" data-count="1" data-id="1"> шт
<input type="button" class="up" value="+" data-id="1">
</span>
</div>
<div class="goods-price"><span class="sum" data-id="1">5000</span> руб.</div>
</div>
<div class="goods">
<div class="name">Название товара 2</div>
<div class="goods-count">
<span class="amount">
<input type="button" class="down" value="-" data-id="2">
<input type="text" class="counter" value="1" size="4" data-price="1000" data-count="1" data-id="2"> шт
<input type="button" class="up" value="+" data-id="2">
</span>
</div>
<div class="goods-price"><span class="sum" data-id="2">1000</span> руб.</div>
</div>
<div class="goods">
<div class="name">Название товара 3</div>
<div class="goods-count">
<span class="amount">
<input type="button" class="down" value="-" data-id="3">
<input type="text" class="counter" value="1" size="4" data-price="3000" data-count="1" data-id="3"> шт
<input type="button" class="up" value="+" data-id="3">
</span>
</div>
<div class="goods-price"><span class="sum" data-id="3">3000</span> руб.</div>
</div>
<div>Итого: <span id='total'>9000</span> руб.</div>
JavaScript
$(document).ready(function() {
var updateTotalPrice = function() {
var totalPrice = 0;
$('.sum').each(function(index, elem) {
totalPrice += parseInt($(elem).html());
});
$('#total').html(totalPrice);
}
var increment = function(elem, plus) {
var id = elem.getAttribute('data-id');
if (id == null) throw new Error('This element has no data-id attribute');
var currentCount = parseInt($('.counter[data-id="' + id + '"]').val());
var newCount = currentCount + plus;
var unitPrice = parseInt($('.counter[data-id="' + id + '"]').attr('data-price'));
var totalPrice = newCount * unitPrice;
$('.counter[data-id="' + id + '"]').val(newCount);
$('.sum[data-id="' + id + '"]').html(totalPrice);
updateTotalPrice();
};
$('.up').on('click', function() {
increment(this, 1);
});
$('.down').on('click', function() {
increment(this, -1);
});
});