0

我在一个对象中有两种方法。第一个'Basket.add('clothing-item-name')' 我可以放入onclick。当用户单击时,它会根据参数“名称”将那件衣服添加到购物篮行程中的相应位置。

我将如何使用 Basket.items() 通过在 Basket.add 中创建的 +1 函数在此处显示添加的项目?

我试过 .append(); 和 .text(); 到我希望项目每次增加 1 的 div。我还编写了一个单独的函数,它只更新购物篮总数,但不包含上述方法。

HTML-按钮

<button type="button" value="1" onclick="Basket.add('clothing-item-name')" id="add">ADD TO BASKET</button>  

HTML - 行程(部分)

<li class="tShirt1"><a href="#">T-shirt 1 <span class="amount">  </span></a></li>  

JS 对象

var Basket = (function () {

var _items = {};

return {
add: function (name) {
  if (_items.hasOwnProperty(name)) {
    _items[name] = _items[name] + 1;
  } else {
    _items[name] = 1;
  }
},

items: function () {
  return clone(_items);

  function clone(obj) {
    var target = {};
    for (var i in obj) {
      if (obj.hasOwnProperty(i)) {
        target[i] = obj[i];
      }
    }
    return target;
   }
  }
 };
}());
4

1 回答 1

0

我不确定我理解你在这里想要做什么。每次添加新项目时只是更新 span.amount 吗?如果是这样,您基本上可以在添加/删除时调用某种“setItems”函数:

    var Basket = (function () {

    var _items = {};

    return {
        add: function (name) {
            if (_items.hasOwnProperty(name)) {
                _items[name] = _items[name] + 1;
            } else {
                _items[name] = 1;
            }

            this.setItems(name);
        },

        items: function () {
            return clone(_items);

            function clone(obj) {
                var target = {};
                for (var i in obj) {
                    if (obj.hasOwnProperty(i)) {
                        target[i] = obj[i];
                    }
                }
                return target;
            }
        },
        setItems: function (name) {
            $(".amount").text(_items[name]);
        }
    };
}());

你可以在这个 jsfiddle 上查看它。

于 2013-06-27T13:40:40.167 回答