使用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 ...
随机推荐
- tp5--数据库查询的常用操作
首先,我们要先明确,我们平时经常使用那些操作,我看了开发手册,主要是连贯操作比较多. 连贯操作有: field, order, limit, page, GROUP, HAVING, cache, 其 ...
- kubeadm 默认镜像配置问题引申
背景: 每次使用功能kubeadm的时候都需要提前准备好镜像,为什么自定义使用的镜像源呢? 在没有翻越围墙时 kubeadm init --kubernetes-version=v1.13.0 --p ...
- (第三篇)SSH网络协议概述
ssh简介原理 windows远程登录,QQ远程协助修电脑 简单说,SSH是一种网络协议,用于计算机之间的加密登录.最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑.1995年,芬兰学者 ...
- GithubAction-Deploy
GithubAction-Deploy githubhexoaction 使用 github action 自动化部署 创建GitHub repository 存放源文件 在repo设置界面里添加Se ...
- 使用VSCode连接到IBM Cloud区块链网络
文章目录 从IBM Cloud控制面板导出连接信息 在VSCode中创建gateway和wallet 在VSCode中提交transaction 上篇文章我们讲到怎么在IBM Cloud搭建区块链环境 ...
- .net多线程归并排序
一.概述 在了解排序算法的同时,想到用多线程排序减少排序的时间,所以写了一个简单的示例,加深印象.下面是具体代码 二.内容 环境:vs2017,.net core 2.2 控制台程序. 运行时使用r ...
- Python内置函数enumerate()
enumerate()是Python的内置函数. help(enumerate) Help on class enumerate in module builtins: class enumerate ...
- 浅谈 Objective-C Associated Objects
简介 Associated Objects 是 Objective-C 2.0 中 Runtime 的特性之一. 在 <objc/runtime.h> 中定义的三个方法, void obj ...
- 谈谈你对vuex的理解
vuex创建公有仓库的插件 1.储存公共状态 2.能够根据事件来修改状态 3.多个组件都需要变化,有机制把这个新的状态通知给所有的组件 vuex中的四个类 1.state 定义需要共享的状态 2 ...
- Notations
下面四种记号是为了建立函数间的相对级别. CLRS上的一张图很直观: 大O记号 定义:如果存在正常数\(c\)和\(n_0\),使得当\(N\ge n_o\)时\(T(N)\le cf(N)\),记\ ...