0

我正在尝试基本上在静态网站上构建购物车。项目显示在表格上。我从头开始构建这个购物车,没有使用外部 jQuery 购物车库。

有一个功能我似乎无法使用:当用户添加购物车中已经存在的商品时,它应该只增加数量而不是将商品添加到表中。

这是一个JSFiddle 链接,其中包含我迄今为止实现的所有内容和一个工作演示,但您也可以查看下面的代码。

这是添加项目的 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 编写的,所以它是一个完全静态的网站。

非常感谢您!

4

2 回答 2

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);
    }
});

编辑:

固定小提琴网址

编辑 2

小提琴更新数量

于 2015-06-24T14:12:08.550 回答
0

你可以实现它

  • 维护清单

一个数组,由密钥对值(JSON)项目 ID 和它的数量作为字段
Ex:-

var items = [
      {
        itemID:101,
        name:"Mobile:"
        qty:1
      },
      {
        itemID:102,
        name:"Pen Drive"
        qty:3
      }
]
  1. 在添加新项目时,将相应的项目 ID、数量、名称等推送到列表中
  2. On 已经存在,然后使用 itemID 查询并增加 qty 字段您正在显示的购物车可用,cart-info tbody因此在这种情况下,请确保您在 row( tr ) 中具有唯一 ID 例如:<tr id=item-101><td>1</td><td>Mobile</td></tr>
    最后使用更新后的数量更新相应 id 的文本
于 2015-06-24T14:26:17.257 回答