0

1 つのオブジェクトに 2 つのメソッドがあります。onclick に入れることができる最初の「Basket.add('clothing-item-name')」。ユーザーがクリックすると、その衣料品がパラメーター「名前」からバスケットの旅程内の対応する場所に追加されます。

Basket.add で作成された +1 関数を使用して、Basket.items() を使用してここに追加されたアイテムを表示するにはどうすればよいですか?

私は .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 に答える