页面效果图:

html代码:

      <div class="shop-car" id='car'>
<div class="count-custom">
全部商品 {{count}}
</div>
<table border="1" cellspacing="0" cellpadding="10">
<tr>
<th><input type="checkbox" name="" id="checkAll" value="" @click="checkAll"/>全部</th>
<th>商品</th>
<th>单价(元)</th>
<th>数量</th>
<th>操作</th>
</tr>
<tr v-for="item in goods" :key="item.id">
<td><input type="checkbox" name="" class="checked"id="" value="" @click="checked()"/></td>
<td>
<div class="info">
<div class="img-left">
<img :src="item.img" >
</div>
<div class="info-right">
<p class="name">{{item.name}}</p>
<p class="cun">{{item.cicun}}</p>
<p class="memery">{{item.memery}}</p>
</div>
</div>
</td>
<td>
{{item.price}}
</td>
<td>
<div class="steper">
<input type="button" class="opts" id="" value="-" @click="options(-1,item.id)" />
<span>{{item.num}}</span>
<input type="button" name="" @click="options(+1,item.id)" value="+" />
</div>
</td>
<td><a href="#" @click="del(item.id)">删除</a></td>
</tr>
<tr>
<td colspan="5" style="text-align: center;">统计:{{countPrice}}元</td>
</tr>
</table>
</div>

css代码:

       *{
margin: 0px;
padding: 0px;
box-sizing: border-box;
} .shop-car{
margin-left: 20px;
margin-top: 20px1;
}
table{
/* text-align: center; */
/* align-content: center; */
}
tr>td:first-child{
text-align: center;
}
.info{
display: flex;
flex-direction: row;
align-items: center;
}
.info-right{
height: 80px;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.img-left>img{
width: 100px;
}
.steper{ margin: 0px 20px;
}
.steper>input[type="button"]{
width:30px;
}
.steper>span{
display: inline-block;
width: 20px;
text-align: center;
}

js代码:

        var vm=new Vue({
el:"#car",
data:{
count:0,
countPrice:0,
goods:[
{id:0,name:"oppo 麦芒5 全网通 4GB+64GB版 墨黑 移动联通电信4G手机 双卡双待",cicun:"4.9英寸",memery:"4GB+64GB",price:"1339.00",img:"./images/phone01.jpg",num:1},
{id:1,name:"vivo 麦芒5 全网通 4GB+64GB版 墨黑 移动联通电信4G手机 双卡双待",cicun:"4.9英寸",memery:"4GB+64GB",price:"130.00",img:"./images/phone02.jpg",num:1},
{id:2,name:"华为 麦芒5 全网通 4GB+64GB版 墨黑 移动联通电信4G手机 双卡双待",cicun:"4.9英寸",memery:"4GB+64GB",price:"19.00",img:"./images/phone03.jpg",num:1},
]
},
methods:{
          //全选
checkAll(){
var checkAll=document.getElementById("checkAll");
var checkeds=document.getElementsByClassName("checked")
if(checkAll.checked==true){
for(var i=0;i<checkeds.length;i++){
checkeds[i].checked=true
}
}
this.countPrices()
},
checked(status){
var checkAll=document.getElementById("checkAll");
var checkeds=document.getElementsByClassName("checked")
console.log(checkeds)
for (var i=0;i<checkeds.length;i++){
if(checkeds[i].checked==false){
checkAll.checked=false return false
}
checkAll.checked=true;
}
this.countPrices()
},
options(value,id){ let goods=this.goods;
var newGoods=goods.map((item,index,arr)=>{
if(item.id==id){
item.num=item.num+value;
this.butonStatus()
}
return item;
})
this.goods=newGoods
this.countPrices()
},
// 计算价格
countPrices(){
var countPrice=0;
console.log(this.goods)
var goods=this.goods
var checkAll=document.getElementById("checkAll");
var checkeds=document.getElementsByClassName("checked")
console.log(checkeds)
for (var i=0;i<checkeds.length;i++){
if(checkeds[i].checked==true){
countPrice+=goods[i].price*goods[i].num
}
}
this.countPrice=countPrice
console.log(countPrice)
},
// 删除
del(id){
console.log(id)
var goods=this.goods;
var newGoods=goods.map((item,index,arr)=>{
if(item.id==id){
return arr.splice(index,1)
}
})
},
butonStatus(){
var opts=document.getElementsByClassName("opts")
var goods=this.goods;
var newGoods=goods.map((item,index)=>{
if(item.num<2){
console.log(index)
opts[index].disabled=true
}else{
opts[index].disabled=false
}
})
}
}, mounted(){
this.count=this.goods.length;//获取添加购物车商品的数量
this.butonStatus(); //这里判断 - 号按钮是否可用
}
})

使用vue实现购物车功能的更多相关文章

  1. vue实战记录(五)- vue实现购物车功能之商品总金额计算和单选全选删除功能

    vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(五) GitHub:sue ...

  2. vue实战记录(六)- vue实现购物车功能之地址列表选配

    vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(六) GitHub:sue ...

  3. vue实战记录(四)- vue实现购物车功能之过滤器的使用

    vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(四) GitHub:sue ...

  4. vue实战记录(三)- vue实现购物车功能之渲染商品列表

    vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(三) GitHub:sue ...

  5. vue实战记录(二)- vue实现购物车功能之创建vue实例

    vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(二) GitHub:sue ...

  6. vue实战记录(一)- vue实现购物车功能之前提准备

    vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(一) GitHub:sue ...

  7. 042——VUE中组件之子组件使用$on与$emit事件触发父组件实现购物车功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Vue nodejs商城项目-商品列表价格过滤和加入购物车功能

    一.价格过滤功能 GoodsList.vue >>点击价格区间时发送请求 methods:{     getGoodsList(flag){         var param = {   ...

  9. 基于vue2.0打造移动商城页面实践 vue实现商城购物车功能 基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果

    基于vue2.0打造移动商城页面实践 地址:https://www.jianshu.com/p/2129bc4d40e9 vue实现商城购物车功能 地址:http://www.jb51.net/art ...

随机推荐

  1. gin请求数据校验

    前言 最近优化gin+vue的前后端分离项目代码时候,发现代码中对请求数据的校验比较繁琐,于是想办法简化它.最终我发现了go-playground/validator开源库很好用. 优化前代码 代码如 ...

  2. MySQL如何创建一个好索引?创建索引的5条建议【宇哥带你玩转MySQL 索引篇(三)】

    MySQL如何创建一个好索引?创建索引的5条建议 过滤效率高的放前面 对于一个多列索引,它的存储顺序是先按第一列进行比较,然后是第二列,第三列...这样.查询时,如果第一列能够排除的越多,那么后面列需 ...

  3. Django ORM 查询表中某列字段值

    场景: 有一个表中的某一列,你需要获取到这一列的所有值,你怎么操作? 解决办法: 有一个model为:Event 方式一: 获取内容: Event.objects.values('title') 输出 ...

  4. webug3.0靶场渗透基础Day_1

    第一关: 最简单的get注入 单引号报错 http://192.168.129.136/pentest/test/sqli/sqltamp.php?gid=1' order by 5 --+     ...

  5. Python获取当前 年 月 日

    import datetime datetime.datetime.now().year datetime.datetime.now().month datetime.datetime.now().d ...

  6. Linux网络服务第五章NFS共享服务

    1.笔记 NFS一般用在局域网中,网络文件系统c/s格式 服务端s:设置一个共享目录 客户端c:挂载使用这个共享目录 rpc:111远程过程调用机制 Showmount -e:查看共享目录信息 def ...

  7. c语言解一元二次方程

    C语言解一元二次方程,输入系数a,b,c; #include <stdio.h> #include <math.h> int main(int argc, char *argv ...

  8. Java5-7作业总结(第八次作业)19201421-吴志越

    前言:关于此次三次作业,相比于前3次难度着实高了一个档次,第五次作业,虽然对于工具类没有很高.但是第一题的复杂程度很高,对于正则表达式有很高的要求,需要使用很多正则表达式的方法,而且不能有一处错误,对 ...

  9. 【JAVA基础】04 Java语言基础:方法

    1. 方法概述和格式说明 为什么要有方法 提高代码的复用性 什么是方法 完成特定功能的代码块. 方法的格式 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {     方法 ...

  10. WebRTC 及点对点网络通信机制

    原文请查阅这里,略有删减,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland. 这是 JavaScript 工作原理第十八章. 概述 何为 WebRTC ?首先,字面上已经给出了关于 ...