页面效果图:

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. C# 基础知识系列-13 常见类库(三)

    0. 前言 在<C# 基础知识系列- 13 常见类库(二)>中,我们介绍了一下DateTime和TimeSpan这两个结构体的内容,也就是C#中日期时间的简单操作.本篇将介绍Guid和Nu ...

  2. 企业级 Harbor 镜像仓库

    Harbor是由VMWare公司开源的容器镜像仓库.事实上,Harbor是在Docker Registry上进行了相应 的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基 ...

  3. OpenCV学习(2)——一个简单的例子

    光说不练假把式,来看一个简单的例子,了解了解OpenCV.这个小demo没有几行代码,作用是显示项目目录下面的一张图片. #include <opencv2\opencv.hpp> #in ...

  4. js 实现对象的混合与克隆效果,带完整版解析代码[helpers.js]

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS写淘宝无缝轮播图效果 对象混合 ...

  5. 源码安装nginx 方法二

    yum 仓库不能用大写字母 [root@oldboy conf.d]# gzip * 压缩当前目录下的所有文件 gzip ./* gzip . gzip./ # 关闭防火墙和selinux [root ...

  6. 标准库模块time,datetime

    在Python中,通常有这几种方式来表示时间: 1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素. 由于Python的time模块实现主要调用C库,所以各个平台可能有所 ...

  7. HTML中使用CSS样式(下)

    上节内容回顾加补充: 补充:默认img标签,有一个1px的边框 如果点击图片跳转到连接,a标签下套img标签,在IE有的版本中,会有蓝色边框. <a href="http://blog ...

  8. TreeMap分析(中)

    通过上篇文章,大家已经能够理解红黑树的基础数据结构,那么这篇文章就来分析下,在红黑树中插入一个结点后,内部数据结构发生了哪些变化. TreeMap插入某个结点的源码分析 /** * 插入节点,并平衡红 ...

  9. 打造livecd的注意事项

    一:在CentOS.ks的定制脚本中,删除syslinux组件:出错提示: /usr/lib/python2.6/site-packages/imgcreate/errors.py:45: Depre ...

  10. XML--XML作用

    XML 把数据从 HTML 分离 如果你需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑 HTML. 通过 XML,数据能够存储在独立的 XML 文件中.这样你就可以专注 ...