码迷,mamicode.com
首页 > 编程语言 > 详细

关于Javascript splice方法的一个坑。

时间:2016-10-28 23:15:16      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:odi   begin   相关   sum   asp   http   amp   code   购物车   

w3c相关文档:http://www.w3school.com.cn/jsref/jsref_splice.asp

bug:购物车计算价格的时候。加商品没问题,减商品的时候价格总是计算错误。

经排查发现在减商品计算总价的时候调用了splice方法,导致正在循环的数组发生了改变,价格计算错误。

修改方法:总价计算完成的时候再操作数组。

上代码:

 1 //错误代码
 2 $.each(categoryJson.shop_cart_consume,function (i,prodItem) { 
 3     //S_IS_NEW_USER_PARSE 1新用户  2老用户
 4     if(S_IS_NEW_USER_PARSE == ‘1‘ && parseInt(prodItem.unit_price_discount) > 0){
 5         totalPrice += Number(prodItem.unit_price_discount * prodItem.count);
 6     }else{
 7         totalPrice += Number(prodItem.unit_price *prodItem.count);
 8     }
 9     if(prodItem.ware_sku_id == product.ware_sku_id){
10         prodItem.count --;
11         if (prodItem.count <= 0){
12             categoryJson.shop_cart_consume.splice(i,1);
13         }else{
14             categoryJson.shop_cart_consume[i] = prodItem;
15         }
16     }
17 });
 1 //正确代码
 2 //存放数组中减去元素的下标。
 3 var arrayIndex;
 4 //用变量 来标识从0开始的下标。
 5 var beginIndex = 0;
 6 $.each(categoryJson.shop_cart_consume,function (i,prodItem) { 
 7     //S_IS_NEW_USER_PARSE 1新用户  2老用户
 8     if(S_IS_NEW_USER_PARSE == ‘1‘ && parseInt(prodItem.unit_price_discount) > 0){
 9         totalPrice += Number(prodItem.unit_price_discount * prodItem.count);
10     }else{
11         totalPrice += Number(prodItem.unit_price *prodItem.count);
12     }
13     if(prodItem.ware_sku_id == product.ware_sku_id){
14         prodItem.count --;
15         if (prodItem.count <= 0){
16             // categoryJson.shop_cart_consume.splice(i,1);
17             arrayIndex = i;
18         }else{
19             categoryJson.shop_cart_consume[beginIndex] = prodItem;
20             beginIndex++;
21         }
22     }
23 });
24 categoryJson.shop_cart_consume.splice(arrayIndex,1);

 

关于Javascript splice方法的一个坑。

标签:odi   begin   相关   sum   asp   http   amp   code   购物车   

原文地址:http://www.cnblogs.com/wanglizhi/p/6009370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!