使用vue实现购物车功能
页面效果图:
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实现购物车功能的更多相关文章
- vue实战记录(五)- vue实现购物车功能之商品总金额计算和单选全选删除功能
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(五) GitHub:sue ...
- vue实战记录(六)- vue实现购物车功能之地址列表选配
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(六) GitHub:sue ...
- vue实战记录(四)- vue实现购物车功能之过滤器的使用
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(四) GitHub:sue ...
- vue实战记录(三)- vue实现购物车功能之渲染商品列表
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(三) GitHub:sue ...
- vue实战记录(二)- vue实现购物车功能之创建vue实例
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(二) GitHub:sue ...
- vue实战记录(一)- vue实现购物车功能之前提准备
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(一) GitHub:sue ...
- 042——VUE中组件之子组件使用$on与$emit事件触发父组件实现购物车功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Vue nodejs商城项目-商品列表价格过滤和加入购物车功能
一.价格过滤功能 GoodsList.vue >>点击价格区间时发送请求 methods:{ getGoodsList(flag){ var param = { ...
- 基于vue2.0打造移动商城页面实践 vue实现商城购物车功能 基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
基于vue2.0打造移动商城页面实践 地址:https://www.jianshu.com/p/2129bc4d40e9 vue实现商城购物车功能 地址:http://www.jb51.net/art ...
随机推荐
- 关于foreach总是报错invalid param等问题
原因为被foreach的数组可能为空,则会报错,只需做好容错即可,例如 if ( !empty( $arr ) ) { foreach ( $arr as $k => $v ) { } }
- koa+mysql实现增删改查-全栈之路(001)
Date: 2020-4-23 以前很少写文章,从今天开始我要挑战一下自己,连续输出100篇技术类文章.这100篇文章我尽量以实战案例为主. 如果你觉得本文还不错,记得关注或者给个 star,你们的赞 ...
- mysql-管理命令【创建用户、授权、修改密码、删除用户和授权、忘记root密码】
一.创建用户 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 关键参数说明: username - 创建登录用户名, host ...
- Apple Watch Series 6或将增加焦虑监测和睡眠追踪功能
一条新的泄露消息称,Apple Watch Series 6 将增加心理健康功能,延长电池续航时间,并对现有传感器进行扩展,这样设备可以测量血液含氧量.苹果即将更新的 Apple Watch 新款推测 ...
- Shoutem旨在成为React Native移动应用领域的WordPress
近日,Shoutem推出了新的基于React Native的应用构建器,为开发人员提供了移动应用领域的WordPress. \\ Shoutem让开发人员可以使用一个可视化环境快速创建基于React ...
- 【K8S】K8S部署Metrics-Server服务
写在前面 在新版的K8S中,系统资源的采集均使用Metrics-Server服务,可以通过Metrics-Server服务采集节点和Pod的内存.磁盘.CPU和网络的使用率等信息. 读者可参考< ...
- elementUI字体图标不显示问题
原文链接: 点我 自己搭建的Vue项目,没有使用vue-cli,引入elementUI时提示字体图标404,找不到文件,如下错误: GET http://localhost:9090/WEB-INF/ ...
- 第K短路+严格第K短路
所谓K短路,就是从s到t的第K短的路,第1短就是最短路. 如何求第K短呢?有一种简单的方法是广度优先搜索,记录t出队列的次数,当t第k次出队列时,就是第k短路了.但点数过大时,入队列的节点过多,时间和 ...
- TX2开启最大功耗模式
我们移植深度学习模型到Jetson TX2,为了获得更好的指标参数,我们需要将TX2开启最大功耗模式. Jetson TX2 工作模式及相应的CPU和GPU频率: 上电时,默认采用最低功耗模式1,风扇 ...
- 0x01-Linux常用文件处理命令
0x01-Linux常用文件处理命令 摘要 文件可以说是占据了Linux系统半壁江山,那么,我们理所应当要认识文件,且还要懂得如何创建.查看文件(touch.cat命令).既然是使用Linux,当然是 ...