您好,登錄后才能下訂單哦!
需求是商品只能選一次,有原價和現價.
大概的效果圖是這樣:
完整代碼在這里,直接復制就能用:
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> html{ background: rgb(214,175,209); } /*計算器*/ #app{ text-align: center; margin-top: 8%; position: relative; } .goods_box{ width: 70vw; margin-left:15vw; height: auto; margin-top: 5%; } .goods_box ul{ width: 100%; overflow:auto; } .goods_box ul li{ float: left; width: 23%; height: auto; cursor: pointer; margin: 2% 1%; font-size: 0.6rem; background: #fff; display: flex; align-items: center; align-content: center; padding-bottom: 1%; border-radius: 4px; } .goods_img{ width: 40%; border-radius: 6px; height: auto; margin-left: -4%; margin-top: -4%; box-shadow: 3px 3px 2px rgba(0,0,0,.24); } .price{ margin-left: 6%; text-align: left; } .or_price{ color: rgba(242,58,58,0.8); text-decoration: line-through; } .goods_name{ margin-top: 4%; } .now_and_or{ margin-top: 5%; } .now_price{ font-size: 1rem; } /*計算結果的盒子*/ .count_box{ width: 70vw; margin-left:15vw; height: auto; border: 2px dashed rgb(253,234,93); display: flex; align-items: center; padding: 2%; position: relative; } .count_box .goods_img{ width: 100px; height: 100px; margin:0; box-shadow: none; } .count_box ul{ width: 100%; overflow:auto; } .count_box ul li{ float: left; cursor: pointer; font-size: 0.6rem; display: flex; align-items: center; align-content: center; padding-top: 2%; padding-bottom: 1%; border-radius: 4px; } .count_box ul li .price{ text-align: center; } .img_box{ position: relative; } .add{ font-size: 2rem; color:rgb(253,234,93); margin-left: 20px; } .delete{ display: flex; align-items: center; color:rgb(253,234,93); font-size: 34px; position: absolute; top: -25%; right: -9%; cursor: pointer; z-index: 1; } /*計算結果*/ .result{ margin-top: 16%; margin-left: -30px; font-size: 1rem; display: flex; align-items: center; text-align: left; background: rgb(214,175,209); } .result_content{ display: block; margin-left: 2rem; } .or_amount{ text-decoration: line-through; line-height: 2rem; } .equal_to{ font-size: 2rem; color:rgb(253,234,93); } .now_amount span{ color:rgb(253,234,93); } .img01{ position: absolute; } .buy{ position: absolute; right: 12px; bottom: 10px; font-size: 0.75rem; } </style> </head> <body> <!-- 商品計算器 --> <div id="app"> <div class="goods_box"> <ul> <li class="goods" v-for="(item, index) in list" @click="choose(index)"> <img class="goods_img" v-bind:src="item.goods_img"> <div class="price"> <div class="goods_name"> {{item.name}} </div> <div class="now_and_or"> <div class="now">現價:<span class="now_price">{{item.hide_price}}¥</span></div> <div class="or">原價:<span class="or_price">{{item.or_price}}¥</span></div> </div> </div> </li> </ul> </div> <div class="count_box"> <ul> <li v-for="(item, index) in count_list" @click="deleteGoods(index)"> <div class="count_box_item"> <div class="img_box"> <div class="delete">×</div> <img class="goods_img" v-bind:src="item.goods_img"> </div> </div> <div class="add">+</div> </li> <li> <div class="result"> <div class="equal_to">=</div> <div class="result_content"> <div class="or_amount">原價:{{or_amount}}¥</div> <div class="now_amount">現價:<span>{{now_amount}}¥</span></div> </div> </div> </li> </ul> <a class="buy" href="#" rel="external nofollow" >立即購買</a> </div> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script> <script type="text/javascript"> var idsArray = []; var or_priceArray = []; var now_priceArray = []; //數組去重 function removeDuplicatedItem(arr) { for(var i = 0; i < arr.length-1; i++){ for(var j = i+1; j < arr.length; j++){ if(arr[i]==arr[j]){ arr.splice(j,1); j--; } } } return arr; } var app = new Vue({ el:"#app", data:{ // 商品列表 list:[ { goods_img:"http://cdn.w7.cc/images/2018/05/19/mdqzEyVEeqBdK3xKulqskX9ryMMfTbgbU1jMOE7i.jpeg?imageView2/5/w/88/format/png", or_price:"100", now_price:"10", //顯示的價格 hide_price:"50", name:"很長很長的名字" }, { goods_img:"http://cdn.w7.cc/images/2018/05/19/mdqzEyVEeqBdK3xKulqskX9ryMMfTbgbU1jMOE7i.jpeg?imageView2/5/w/88/format/png", or_price:"200", now_price:"20", hide_price:"?", name:"很長很長的名字" }, { goods_img:"http://cdn.w7.cc/images/2018/05/19/mdqzEyVEeqBdK3xKulqskX9ryMMfTbgbU1jMOE7i.jpeg?imageView2/5/w/88/format/png", or_price:"300", now_price:"30", hide_price:"50", name:"很長很長的名字" }, { goods_img:"http://cdn.w7.cc/images/2018/05/19/mdqzEyVEeqBdK3xKulqskX9ryMMfTbgbU1jMOE7i.jpeg?imageView2/5/w/88/format/png", or_price:"100", now_price:"10", hide_price:"50", name:"很長很長的名字" }, { goods_img:"http://cdn.w7.cc/images/2018/05/19/mdqzEyVEeqBdK3xKulqskX9ryMMfTbgbU1jMOE7i.jpeg?imageView2/5/w/88/format/png", or_price:"200", now_price:"20", hide_price:"?", name:"很長很長的名字" }, { goods_img:"http://cdn.w7.cc/images/2018/05/19/mdqzEyVEeqBdK3xKulqskX9ryMMfTbgbU1jMOE7i.jpeg?imageView2/5/w/88/format/png", or_price:"300", now_price:"30", hide_price:"50", name:"很長很長的名字" }, { goods_img:"http://cdn.w7.cc/images/2018/05/19/mdqzEyVEeqBdK3xKulqskX9ryMMfTbgbU1jMOE7i.jpeg?imageView2/5/w/88/format/png", or_price:"100", now_price:"10", hide_price:"50", name:"很長很長的名字" }, { goods_img:"http://cdn.w7.cc/images/2018/05/19/mdqzEyVEeqBdK3xKulqskX9ryMMfTbgbU1jMOE7i.jpeg?imageView2/5/w/88/format/png", or_price:"200", now_price:"20", hide_price:"50", name:"很長很長的名字" }, { goods_img:"http://cdn.w7.cc/images/2018/05/19/mdqzEyVEeqBdK3xKulqskX9ryMMfTbgbU1jMOE7i.jpeg?imageView2/5/w/88/format/png", or_price:"300", now_price:"30", hide_price:"50", name:"很長很長的名字" } ], //動態選擇列表 count_list:[], //原總價 or_amount:0, //現總價 now_amount:0 }, methods:{ choose: function(index){ var arr = this.list; var that = this; //清空數組 this.count_list = []; this.or_amount = 0; this.now_amount = 0; or_priceArray = []; now_priceArray = []; idsArray.push(index); //數組去重 removeDuplicatedItem(idsArray); //循環打印選中商品 for( var i=0;i<idsArray.length;i++){ that.count_list.push(arr[idsArray[i]]); or_priceArray.push(parseInt(arr[idsArray[i]].or_price)); now_priceArray.push(parseInt(arr[idsArray[i]].now_price)); } //循環計算價格 for(var i=0;i<or_priceArray.length;i++){ this.or_amount += or_priceArray[i]; this.now_amount += now_priceArray[i]; } }, //刪除商品 deleteGoods: function(index){ this.or_amount = 0; this.now_amount = 0; this.count_list.splice(index,1); idsArray.splice(index,1); or_priceArray.splice(index,1); now_priceArray.splice(index,1); //循環計算價格 for(var i=0;i<or_priceArray.length;i++){ this.or_amount += or_priceArray[i]; this.now_amount += now_priceArray[i]; } } } }) </script> </body> </html>
總結
以上所述是小編給大家介紹的vue實現商品加減計算總價,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。