2014-10-18 36 views
0

我有一个简单的购物车,用户可以将产品添加到购物车中。每个添加的产品都将作为一个对象保存到$ .cookie中。

当用户移除产品时,该产品对象将从Cookie中移除或数量被删除一个。更新对象数量工作好,我相信。

我的问题是,我不认为即时使用拼接正确,我无法弄清楚如何使这项工作作为结果。基本上会发生的情况是,第一个产品对象总是从$ .cookie中删除,而不是那个具有删除匹配的特定对象。

下面是我的代码。我希望有人能够发现问题。我怀疑这是导致问题的“1”(第一个元素)>> current_objs.splice(current_objs [i],1)

这里是我的代码。

$('body').on('click', '.remove_me', function(e) { 

    var productid = $(this).data('productid'); 

    var current_objs = $.cookie("obj"); 

    for (i = 0; i < current_objs.length; i++) { 

    if (current_objs[i].productid === productid.toString()) { 

     if (current_objs[i].qty == 1) { 

     current_objs.splice(current_objs[i],1);   

     $.cookie("obj",current_objs, { path: '/' }); 

     } else { 

     current_objs[i].qty = current_objs[i].qty - 1; 

     $.cookie("obj",current_objs, { path: '/' }); 
     } 

    } 

    } 

}); 

谢谢你提前。

+0

代替'current_objs.splice(current_objs [I],1); 'try'current_objs.splice(i,1); '。 – 2014-10-18 00:23:38

回答

0

的JavaScript array.splice()具有以下参数:

array.splice(index, howMany, item1, item2, .., itemN) 

  • index是在阵列的索引添加/删除的项目。
  • howMany是要移除的元素的数量。
  • item1-N是要添加的项目。

尝试此代替:

current_objs.splice(i, 1); // remove 1 item and index i