购物车中出现重复的项目
Duplicate items appearing in shopping cart
我主要是想在静态网站上构建一个购物车。项目显示在 table 上。我从头开始构建了这个购物车,没有使用外部 jQuery 购物车库。
有一个功能我似乎无法使用:当用户添加购物车中已存在的商品时,它应该只增加数量而不是将商品添加到 table .
这是一个 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 但不知道如何转换的伪代码。
(为奇怪的 pseudocode/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编写的,所以是一个完全静态的网站。
非常感谢您!
勾选这个fiddle
new fiddle
使用每个选项的值来确定它是否已经被添加到 table:
$( "#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 url
编辑 2
新增fiddle更新数量
您可以在
上实现
- 维护列表
一个数组,由键值对值(JSON) item ID 和它的数量组成字段
例如:-
var items = [
{
itemID:101,
name:"Mobile:"
qty:1
},
{
itemID:102,
name:"Pen Drive"
qty:3
}
]
- 添加新商品时,将相应的商品 ID、数量、名称等推入列表
- 在已经存在的情况下使用 itemID 进行查询并增加 qty 字段
您显示的购物车在
cart-info tbody
中可用,因此在这种情况下,请确保您在 row(tr) 中具有唯一 ID
例如:<tr id=item-101><td>1</td><td>Mobile</td></tr>
最后用您更新后的数量更新相应 ID 的文本
我主要是想在静态网站上构建一个购物车。项目显示在 table 上。我从头开始构建了这个购物车,没有使用外部 jQuery 购物车库。
有一个功能我似乎无法使用:当用户添加购物车中已存在的商品时,它应该只增加数量而不是将商品添加到 table .
这是一个 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 但不知道如何转换的伪代码。
(为奇怪的 pseudocode/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编写的,所以是一个完全静态的网站。
非常感谢您!
勾选这个fiddle
new fiddle
使用每个选项的值来确定它是否已经被添加到 table:
$( "#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 url
编辑 2
新增fiddle更新数量
您可以在
上实现- 维护列表
一个数组,由键值对值(JSON) item ID 和它的数量组成字段
例如:-
var items = [
{
itemID:101,
name:"Mobile:"
qty:1
},
{
itemID:102,
name:"Pen Drive"
qty:3
}
]
- 添加新商品时,将相应的商品 ID、数量、名称等推入列表
- 在已经存在的情况下使用 itemID 进行查询并增加 qty 字段
您显示的购物车在
cart-info tbody
中可用,因此在这种情况下,请确保您在 row(tr) 中具有唯一 ID 例如:<tr id=item-101><td>1</td><td>Mobile</td></tr>
最后用您更新后的数量更新相应 ID 的文本