我有一个问题,我可以正确地添加到总价格中考虑3种类型的商品。
每个人都有货物数量的输入。
当突变计算总价格变得不规则时。
我怎样才能纠正总价格? demo
对不起我的英语,我希望你会意识到我的意思
$('.checkbox').change(function () {
var item = $(this).parent();
if ( $(this).is(':checked') ) {
addPrice(item);
} else {
removePrice(item);
}
});
function addPrice(item) {
var price = $(item).find('.price').text().replace('.', '');
var totalPrice = $('.total-price').text().replace('.', '');
var addToPrice = (parseFloat(totalPrice) + parseFloat(price)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
$('.total-price').text(addToPrice);
}
function removePrice(item) {
var price = $(item).find('.price').text().replace('.', '');
var totalPrice = $('.total-price').text().replace('.', '');
var addToPrice = (parseFloat(totalPrice) - parseFloat(price)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
$('.total-price').text(addToPrice);
}
$(document).on('input', '.quniti',function(){
var item = $(this).parent();
var quniti = $(item).find('.col').val();
var totalPriceOld = $('.total-price').text();
var addPrice = (parseFloat(quniti) * parseFloat($(this).val() || 0));
var addTotalPrice = (parseFloat(totalPriceOld) + parseFloat(addPrice));
$(item).find('label').text(addPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."));
if ($(item).find('input[type="checkbox"]').is(':checked') ) {
$('.total-price').text( addTotalPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".") );
}
});
答案 0 :(得分:1)
试试这个结构
$('.checkbox').change(function () {
recount();
});
function recount() {
var sum=0;
$('.price').each(function(){
if ($(this).parent().find('.checkbox').is(":checked")){
sum += parseFloat($(this).text());
$('.total-price').text(sum);
}
});
}
$(document).on('input', '.quniti',function(){
var item = $(this).parent();
var quniti = $(item).find('.col').val();
var addPrice = (parseFloat(quniti) * parseFloat($(this).val() || 0));
$(item).find('label').text(addPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."));
recount();
});
工作示例是here。
答案 1 :(得分:0)
这是我第一次来这里,所以请原谅我是否有任何错误
我认为你需要让流程更简单,这里是HTML
<div class="tovar">
<input type="checkbox" id="span1" class="checkbox">
<label for="span1" class="price">1.360</label>
<input type="text" class="quniti">
</div>
<div class="tovar">
<input type="checkbox" id="span2" class="checkbox">
<label for="span2" class="price">1.270</label>
<input type="text" class="quniti">
</div>
<div class="tovar">
<input type="checkbox" id="span3" class="checkbox">
<label for="span3" class="price">1.470</label>
<input type="text" class="quniti">
</div>
<div class="total-price">35</div>
这是js
$('.checkbox').change(function () {
var item = $(this).parent();
if ( $(this).is(':checked') ) {
addPrice(item);
} else {
removePrice(item);
}
});
function addPrice(item) {
var price = parseFloat($(item).find('.price').text());
var quniti = parseFloat($(item).find('.quniti').val() || 0);
var totalPrice = parseFloat($('.total-price').text());
var newPrice = totalPrice + quniti * price;
$('.total-price').text(newPrice);
}
function removePrice(item) {
var price = parseFloat($(item).find('.price').text());
var quniti = parseFloat($(item).find('.quniti').val() || 0);
var totalPrice = parseFloat($('.total-price').text());
var newPrice = totalPrice - quniti * price;
$('.total-price').text(newPrice);
}