Die Daten werden simuliert. Wenn ich auf „Bearbeiten“ klicke, werden die ausgewählten Elemente gelöscht Das Array wird standardmäßig gelöscht
Demo-Adressechecked
HTML-Struktur
JS-Code<p class="t-root" style="margin-bottom: 1.6rem;"> <section class="shopping-cart-title" flex f-d="r" f-w="n" j-c="s-b" a-i="center"> <p>全部商品</p> <p> <a href="javascript:;" @click="editorShopping">{{ showtext ? '编辑' : '完成' }}</a> </p> </section> <!-- 购物车商品列表 --> <section class="shopping-list"> <template v-if="shoppingList.length > 0"> <p v-for="(shopping,index) in shoppingList" class="item" flex f-d="r" f-w="n" j-c="s-b" a-i="center"> <p class="shopping-checkbox"> <input :id="shopping.id" type="checkbox" name="" class="" v-model="shopping.checked"> <label :for="shopping.id"></label> </p> <p class="shopping-box" flex f-d="r" f-w="n" j-c="start" a-i="center"> <p><img :src="shopping.imgsrc" alt=""></p> <p class="info"> <h3>{{ shopping.title }}</h3> <p class="acount" flex f-d="r" f-w="n" j-c="s-b" a-i="center"> <span class="money">¥{{ shopping.money }}</span> <p class="count" flex f-d="r" f-w="n" j-c="center" a-i="center"> <span class="shopping-num" v-show="showtext">x{{ shopping.shoppingnum }}</span> <p flex f-d="r" f-w="n" j-c="center" a-i="center" v-show="!showtext"> <span class="minus" :class="{active : shopping.shoppingnum > 1}" @click="reduce(index)"> <i class="icon iconfont icon-t-icon8"></i> </span> <input type="text" readonly disabled class="showNumber" v-model="shopping.shoppingnum"> <span class="add" :class="{active : shopping.shoppingnum < 100}" @click="add(index)"> <i class="icon iconfont icon-t-icon7"></i> </span> </p> </p> </p> </p> </p> </p> </template> </section> <section class="download-order-footer" flex f-d="r" f-w="n" j-c="s-b" a-i="center"> <p class="shopping-checkall"> <input id="checkall" type="checkbox" class="" name=""> <label for="checkall"> <i>全选</i> </label> </p> <p class="left"> 总计:<b>¥684</b> </p> <p class="right"> <a href="javascript:;" flex f-d="r" f-w="n" j-c="center" a-i="center" v-show="showtext">去付款</a> <a @click="removeShopping" href="javascript:;" flex f-d="r" f-w="n" j-c="center" a-i="center" v-show="!showtext">删除</a> </p> </section> </p>
var vm = new Vue({ el : ".t-root", data : { showtext : true, shoppingList : [ { id : 11, title : '贡牌茶叶西湖春茶正宗雨前龙井茶礼盒装礼盒装160g礼盒装', money : 48, imgsrc : 'images/download-order-img-11@2x.png', shoppingnum : 1, checked : true }, { id : 22, title : '贡牌茶叶西湖春茶正宗雨前龙井茶礼盒装礼盒装160g礼盒装', money : 98, imgsrc : 'images/download-order-img-11@2x.png', shoppingnum : 1, checked : true }, { id : 33, title : '贡牌茶叶西湖春茶正宗雨前龙井茶礼盒装礼盒装160g礼盒装', money : 148, imgsrc : 'images/download-order-img-11@2x.png', shoppingnum : 1, checked : true } ] }, computed : { }, methods : { editorShopping : function(){ this.showtext = !this.showtext; }, removeShopping : function(){ var that = this; that.shoppingList.forEach(function(value,index){ //只有为true时才删除 if (value.checked) { that.shoppingList.splice(index,1); // console.log(index); } }); }, add : function(index){ var shopping = this.shoppingList[index]; if (shopping.shoppingnum == 100) { return false; }else { shopping.shoppingnum ++; } }, reduce : function(index){ var shopping = this.shoppingList[index]; if (shopping.shoppingnum == 1){ return false; }else { shopping.shoppingnum --; } } } });
JS中删除批量删除数组元素时应该倒序删除(意思是先删除索引大的元素,再删除索引小的元素),
因为在删除的过程中数组的索引会变化,如果先删除了小的元素,后面元素的索引都会变化.
我写了个简单的demo:
换个思路,别删除,过滤更简单直观。
已经解决了!
参考地址
用逆向循环