我正在尝试在静态网站上构建购物车。项目显示在表格上。我从头开始构建这个购物车,没有使用外部jQuery购物车库。
我似乎无法开始工作的一项功能:当用户添加购物车中已存在的商品时,它应该只增加数量,而不是将商品添加到表格中。
这是一个JSFiddle link,其中包含我迄今为止实施的所有内容以及一个有效的演示,但您也可以看到下面的代码。
这是添加项目的JS:
$( "#addBtn" ).click(function() {
var item = $("#orderMenu option:selected").text();
var qty = $("#orderQty option:selected").text();
var newRowContent = "<tr><td>" + qty + "</td><td>" + item + "</td>";
$("#cart-info tbody").append(newRowContent);
});
为简单起见,这是简化的HTML:
<table class="table" id="cart-info">
<thead>
<tr>
<th>#</th>
<th>Item</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<select id="orderMenu">
<option>Foo</option>
<option>Bar</option>
</select>
<select id="orderQty">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<button id="addBtn">ADD TO CART</button>
这是我想转换为jQuery的伪代码,但不知道如何。
(为奇怪的伪代码/ jQuery混合物道歉,我还在学习jQuery)
for each <td> in #cart-info {
if (<td>.html() == item) {
qtyCell = the previous <td>
oldQty = Number(qtyCell.text())
newQty = oldQty + qty
qtyCell.html(newQty)
exit for loop
}
}
网站本身纯粹是用HTML / CSS / JS编写的,因此它是一个完全静态的网站。
非常感谢你!
答案 0 :(得分:1)
检查此fiddle
new fiddle
使用每个选项的值来确定它是否已添加到表中:
$( "#addBtn" ).click(function() {
var item = $("#orderMenu option:selected").text();
var item_val = $("#orderMenu").val();
var qty = $("#orderQty option:selected").text();
var newRowContent = "<tr><td class='qty'>" + qty + "</td><td data-val='"+item_val+"'>" + item + "</td>";
if ($("#cart-info tbody [data-val='"+item_val+"']").length < 1)
$("#cart-info tbody").append(newRowContent);
else {
var new_qty = parseInt($("#cart-info tbody [data-val='"+item_val+"']").prev('.qty').text())+parseInt(qty);
$("#cart-info tbody [data-val='"+item_val+"']").prev('.qty').text(new_qty);
}
});
固定小提琴网址
新的fiddle更新数量
答案 1 :(得分:0)
你可以在
上实现它由键对值( JSON )项ID和作为字段的数量组成的数组
的例: - 强>
var items = [
{
itemID:101,
name:"Mobile:"
qty:1
},
{
itemID:102,
name:"Pen Drive"
qty:3
}
]
cart-info tbody
,因此在这种情况下请确保您在行中有唯一的ID( tr )
例如:<tr id=item-101><td>1</td><td>Mobile</td></tr>