0

所以我想添加一个产品,同时更新购物车中的总价。

$(".articel input[type='button']").click(function() {                   
    var price = $(this).siblings("input[name='price']").attr("value");
    var quantity = $(this).siblings("input[type='number']").attr("value");

    if (quantity % 1 != 0) {
        alert("You must add a whole number");
    }
    else if (quantity <= 0) {
        alert("You can not add a negative number or nothing");
    }
    else {
        var name = $(this).siblings("input[name='prodname']").attr("value");
        var ul = document.getElementById("buylist"); 
        var totalprice = quantity * price;
        var prod = name + " x " + quantity + "= " + totalprice + "$";
        var el = document.createElement("li"); 
        el.innerHTML = prod; 
        ul.appendChild(el); 
    }
});
});

这是 products 和 totalprice 添加的地方:

<h4>Shopping Cart</h4>
<div id="buylist">
    <ul>
    </ul>
    <div id="totalprice">
        <h4>Total price:<h4>
    </div>
</div>

<a href="#checkout" onClick="checkOut()" class="click" data-toggle="tab" id="form">Checkout</a>
</div>

这是我将产品添加到购物车的一种形式

<form class="articel">
    Quantity: <input type="number" style="width:30px;"><br>
    Add to cart: <input type="button" class="btn">
    <input type="hidden" value="30" name="price">
    <input type="hidden" value="The walking dead" name="prodname">
</form>
4

2 回答 2

2

也许我真的不明白。但是当产品或数量发生变化时,您必须计算价格。我建议,你已经为这两个动作准备了一个事件。然后我会运行一个计算价格的函数。

现在取决于您是否已经有了固定价格,或者还必须将其与数量相乘。循环浏览产品并计算价格。

注意:要选择价格和数量,我使用了您的代码中实际上没有的选择器。

function calculatePrice() {
    var quantity, price, sum = 0;
    //loop through product "blocks"
    $('.articel').each(function() {
        price = $(this).children('.price').val();
        quantity = $(this).children('.quantity').val();
        //Add price to sum if number
        if (!isNaN(price) && !isNaN(quantity)) {
            sum += price * quantity;
        }
    });
    //Update Price
    $('#totalprice').html('<h4>Total price:' + sum + '</h4');
}
于 2012-11-16T14:33:31.633 回答
0

如果您将价格和数量添加到 UL 中,您可以轻松处理:

<ul>
  <li data-quantity="X" data-price="Z">...</li>
</ul>

将此函数添加到 javascript 文件中。

function calcTotal (ul) {
  var newTotal = 0;
  ul.find('li').each( function(i,e) {
    var li = $(e);
    newTotal += li.data('quantity') * li.data('price');
  });
}

然后在您的代码中,还有最后一个 else:

itemPrice = quantity * price;
var prodDesc = name + " x " + quantity + "= " + itemPrice + "$";//same as it was.
var newLi = $("<li>");
newLi.text(prodDesc).data('quantity', quantity).data('price', price);
ul.append(newLi);
var totalPrice = calcTotal(ul);
$('#totalprice h4').text('Total Price: ' + totalPrice);

或多或少就是这样。

于 2012-11-16T14:17:09.997 回答