Vue 购物车案例

用Vue实现购物车。

程序详解:
页面要显示商品的基本信息(编号,名称,单价,购买数量,总价等)
1.增加和减少商品数量
2.商品金额会随数量变化
3.会自动计算总金额
4.对某一类商品进行移除操作
5.还有清空购物车

效果演示

原始样式
在这里插入图片描述
增加iphone5s和macbook的数量都为5则总价随之变化
在这里插入图片描述
移除iphone5s这一类商品
在这里插入图片描述
点击清空购物车按钮
在这里插入图片描述
看了上面的演示有没有心动的感觉呢???

代码演示

  1. 导入三个文件
<head><meta charset="utf-8"><link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.0.2/css/bootstrap.min.css" rel="external nofollow" /><script src="https://unpkg.com/tween.js@16.3.4"></script><script src="https://cdn.bootcss.com/vue/2.2.3/vue.min.js"></script></head>
  1. body内容
<body><div id="all" class="container"><table class="table"><thead><tr><th>产品编号</th><th>产品名字</th><th>购买数量</th><th>产品单价</th><th>产品总价</th><th>操作</th></tr></thead><tbody><tr v-for="(item , index) in message"><td @click="jia(index)">{{item.id}}</td><td>{{item.name}}</td><td><button type="button" class="btn tn-primary" @click="subtract(index)">-</button><input type="text" v-model="item.quantity"><button type="button" class="btn tn-primary" @click="add(index)">+</button></td><td>{{item.price | filtermoney}}</td><td>{{item.price*item.quantity | filtermoney}}</td><td><button type="button" class="btn btn-danger" @click="remove(index)">移除</button></td></tr><tr><td>总购买价</td><td>{{animatenum | filtermoney}}</td><td>总购买数量</td><td></td><td colspan="2"><button type="button" class="btn btn-danger" @click="empty()">清空购物车</button></td></tr></tbody></table><p v-if="message.length===0">您的购物车为空</p></div></body>
  1. Vue代码
<script>var vm = new Vue({el: "#all",data: {totalPrice: 0,animatenum: 0,message: [{id: 1003,name: 'iphone5s',quantity: 1,price: 3000}, {id: 1009,name: 'iphone11',quantity: 3,price: 8000}, {id: 1024,name: 'macbook',quantity: 1,price: 15000}, {id: 2019,name: 'ipad pro',quantity: 2,price: 7000}]},watch: {Computer: function(newValue, oldValue) {this.tween(newValue, oldValue);}},computed: {Computer: function() {var vm = this;vm.totalPrice = 0;this.message.forEach(function(mess) {vm.totalPrice += parseInt(mess.price * mess.quantity);})return this.totalPrice;}},filters: {filtermoney: function(value) {return '¥' + value;}},mounted: function() {this.tween('49000', '0');},methods: {toComput: function() {var vm = this;vm.message.forEach(function(mess) {vm.totalPrice += parseInt(mess.price * mess.quantity);})return vm.totalPrice;},add: function(index) {var vm = this;vm.message[index].quantity++;},subtract: function(index) {var vm = this;vm.message[index].quantity--;if (vm.message[index].quantity <= 0) {if (confirm("你确定移除该商品?")) {vm.message.splice(index, 1)}}},remove: function(index) {var vm = this;if (confirm("你确定移除该商品?")) {vm.message.splice(index, 1)}},empty: function() {var vm = this;vm.message.splice(0, vm.message.length);},jia: function(index) {var vm = this;vm.arr[index].one++;},tween: function(newValue, oldValue) {var vm = this;var twen = new TWEEN.Tween({animatenum: oldValue});function animate() {requestAnimationFrame(animate);TWEEN.update();};twen.to({animatenum: newValue}, 750);twen.onUpdate(function() {vm.animatenum = this.animatenum.toFixed();})twen.start();animate();}}});</script>

如果看上面分步代码有点疑惑的话看下面总体代码

总体代码展示

<!DOCTYPE html>
<html><head><meta charset="utf-8"><link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.0.2/css/bootstrap.min.css" rel="external nofollow" /><script src="https://unpkg.com/tween.js@16.3.4"></script><script src="https://cdn.bootcss.com/vue/2.2.3/vue.min.js"></script></head><body><div id="all" class="container"><table class="table"><thead><tr><th>产品编号</th><th>产品名字</th><th>购买数量</th><th>产品单价</th><th>产品总价</th><th>操作</th></tr></thead><tbody><tr v-for="(item , index) in message"><td @click="jia(index)">{{item.id}}</td><td>{{item.name}}</td><td><button type="button" class="btn tn-primary" @click="subtract(index)">-</button><input type="text" v-model="item.quantity"><button type="button" class="btn tn-primary" @click="add(index)">+</button></td><td>{{item.price | filtermoney}}</td><td>{{item.price*item.quantity | filtermoney}}</td><td><button type="button" class="btn btn-danger" @click="remove(index)">移除</button></td></tr><tr><td>总购买价</td><td>{{animatenum | filtermoney}}</td><td>总购买数量</td><td></td><td colspan="2"><button type="button" class="btn btn-danger" @click="empty()">清空购物车</button></td></tr></tbody></table><p v-if="message.length===0">您的购物车为空</p></div></body><script>var vm = new Vue({el: "#all",data: {totalPrice: 0,animatenum: 0,message: [{id: 1003,name: 'iphone5s',quantity: 1,price: 3000}, {id: 1009,name: 'iphone11',quantity: 3,price: 8000}, {id: 1024,name: 'macbook',quantity: 1,price: 15000}, {id: 2019,name: 'ipad pro',quantity: 2,price: 7000}]},watch: {Computer: function(newValue, oldValue) {this.tween(newValue, oldValue);}},computed: {Computer: function() {var vm = this;vm.totalPrice = 0;this.message.forEach(function(mess) {vm.totalPrice += parseInt(mess.price * mess.quantity);})return this.totalPrice;}},filters: {filtermoney: function(value) {return '¥' + value;}},mounted: function() {this.tween('49000', '0');},methods: {toComput: function() {var vm = this;vm.message.forEach(function(mess) {vm.totalPrice += parseInt(mess.price * mess.quantity);})return vm.totalPrice;},add: function(index) {var vm = this;vm.message[index].quantity++;},subtract: function(index) {var vm = this;vm.message[index].quantity--;if (vm.message[index].quantity <= 0) {if (confirm("你确定移除该商品?")) {vm.message.splice(index, 1)}}},remove: function(index) {var vm = this;if (confirm("你确定移除该商品?")) {vm.message.splice(index, 1)}},empty: function() {var vm = this;vm.message.splice(0, vm.message.length);},jia: function(index) {var vm = this;vm.arr[index].one++;},tween: function(newValue, oldValue) {var vm = this;var twen = new TWEEN.Tween({animatenum: oldValue});function animate() {requestAnimationFrame(animate);TWEEN.update();};twen.to({animatenum: newValue}, 750);twen.onUpdate(function() {vm.animatenum = this.animatenum.toFixed();})twen.start();animate();}}});</script>
</html>

扫一扫关注我的公众号获取更多资讯呦!!!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python入门基础篇(一)列表,详细实用,简单易懂!!!!

请仔细阅读哦&#xff01;&#xff01;&#xff01; 文章目录前言一、Python列表的创建与删除1.赋值运算符直接创建列表2.创建空列表3.创建数值列表4.删除列表二、访问列表中的元素三、遍历列表中的元素1.直接使用for循环实现2.使用for循环和enumerate()函数实现四、列表元素的…

【OpenCV 例程200篇】74. 图像的抗混叠

【OpenCV 例程200篇】74. 图像的抗混叠 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 2.2 图像的混叠和重取样 由于无法对一个函数无限地取样&#xff0c;因此在数字图像中总是会出现混叠。 …

图片滚动显示

用H5实现图片滚动显示像跑马灯一样的效果。 程序详解&#xff1a; 图片滚动的开始和停止 鼠标的放上和移走事件 无限循环 每次滚动速度的快慢 效果演示&#xff08;图片自右向左滚动&#xff09; 代码演示 <!DOCTYPE html> <html><head><meta charset&…

【OpenCV 例程200篇】75. Numpy 实现图像傅里叶变换

【OpenCV 例程200篇】75. Numpy 实现图像傅里叶变换 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 2.3 二维离散傅里叶变换&#xff08;DFT&#xff09; 对于二维图像处理&#xff0c;通常使…

什么是大数据,大数据到底应该如何学?

文章目录 一、食用须知二、大数据的基本概念1. 什么是大数据2. 数据是如何采集的3. 大数据真的能预测吗 三、什么是大数据开发四、什么是大数据分析五、应如何学习大数据 一、食用须知 再更一篇技术杂谈类的文章。。。粉丝甲&#xff1a;所以这就是你拖更系列文章和视频的理由…

IDEA Servlet页面报错

IDEA和MyEclipise使用方法不同&#xff0c;在IDEA里新建Servlet的时候会报错。 错误如图所示 这是因为idea中没有导入servlet-api包造成的 解决办法如下&#xff1a; file –> project Structure 点击Libraries &#xff0c;然后绿色的号&#xff0c;找到自己tomact的部…

【OpenCV 例程200篇】76. OpenCV 实现图像傅里叶变换

【OpenCV 例程200篇】76. OpenCV 实现图像傅里叶变换 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 2.3 二维离散傅里叶变换&#xff08;DFT&#xff09; 对于二维图像处理&#xff0c;通常使…

Python入门基础篇(二)元组,更适合新手哦!!!

文章目录前言一、Python元组的创建与删除1.元组的创建2.元组的删除二、元组的访问与修改1.访问元组元素2.修改元组元素总结前言 元组&#xff08;tuple&#xff09;是Python中另一种重要的序列结构&#xff0c;它与列表&#xff08;list&#xff09;有着许多类似之处。但是元组…

IDEA 载入jQuery的方法

使用IDEA开发java web时&#xff0c;页面写入了jquery代码&#xff0c;但是可能因为未能添加该模块&#xff0c;所以并不能起到作用。 那么如何添加Jquery模块呢&#xff1f;&#xff1f;&#xff1f; 最简单的添加方法 1.在jsp中写入&#xff1a; <script src"htt…

【OpenCV 例程200篇】77. OpenCV 实现快速傅里叶变换

【OpenCV 完整例程】77. OpenCV 实现快速傅里叶变换 欢迎关注 『OpenCV 完整例程 100 篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 傅里叶变换在理论上需要 O(MN)2O(MN)^2O(MN)2 次运算&#xff0c;非常耗时&#xff1…

python入门基础篇(三)序列切片,列表、元组推导式

前面介绍了列表与元组&#xff0c;在这里补充一下关于列表、元组推导式&#xff0c;以及序列的切片。切片不仅仅用于列表元组&#xff0c;还可以用于字符串等等 文章目录一、序列切片二、列表推导式1.根据列表生成指定需求的列表2.生成指定范围的数值列表3.从列表中选择符合条件…

Vue商品添加到购物车

用Vue实现把商品添加到购物车然后计算购物车里商品总金额。 功能分析&#xff1a; 1.商品添加到购物车 2.购物车显示商品的名称数量价格 3.计算购物车商品的总金额 4.删除购物车商品 效果演示 原始样式 添加商品 增加商品数量 下面向大家展示一下实现的过程。 代码演示 …

【OpenCV 例程200篇】78. 频率域图像滤波基础

【OpenCV 例程200篇】78. 频率域图像滤波基础 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3. 频率域低通滤波器 图像变换是对图像信息进行变换&#xff0c;使能量保持但重新分配&#xff0…

H5 Canvas下雨特效

模仿下雨的特效&#xff0c;雨点从空中随机飘落。 这个特效使用了H5的新特性Canvas。 效果演示 代码展示 body代码 <!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>H5 Canvas下雨特效</titl…

用Notepad++来编写第一个HTML网页程序,你也可以!!!

学习任何一门编程语言&#xff0c;我们都要迈出第一步&#xff0c;运行第一个代码.我还记得当第一次运行成功python的"hello word"时的激动&#xff0c;还有html时的开心&#xff0c;反正收获蛮大的。哈哈&#xff0c;还是进入正题吧^o^/ 1.打开notepad&#xff0c;点…

【OpenCV 例程200篇】79. 频率域图像滤波的基本步骤

【OpenCV 例程200篇】79. 频率域图像滤波的基本步骤 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3. 频率域低通滤波器 空间域滤波器和频率域滤波器实际上是相互对应的&#xff0c;有些空间…

别踩白块小游戏

用H5新特性实现别踩白块小游戏。 功能分析&#xff1a; 1.游戏开始按钮 2.每点中一个记一分 3.分数达到二十弹出鼓励弹框 4.点击错误则游戏结束 效果演示 看了效果有没有急迫的心情呢&#xff1f; 代码演示 body内容 <body><h2>本次得分</h2><h2 id…

鸿蒙不是安卓也不是Linux

1.1 鸿蒙不是Linux&#xff0c;也不是安卓 很多人会混淆鸿蒙跟Linux的关系。 先举个例子&#xff0c;大家很熟悉的Windows里面含有内核&#xff0c;也含有UI系统&#xff0c;含有桌面程序&#xff0c;普通人可以直接使用Windows。但是Linux仅仅是一个内核(它提供进程管理、文…

【OpenCV 例程200篇】80. 频率域图像滤波详细步骤

【OpenCV 例程200篇】80. 频率域图像滤波详细步骤 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3. 频率域低通滤波器 3.2 频率域图像滤波的步骤 上节例程中通过一个简单的低通滤波遮罩 mas…

Struts 2框架创建的第一个项目

创建我的第一个Struts 2项目。 用Struts 2框架创建一个简单的WEB项目。 效果演示 登录页面 登陆成功之后显示的页面 在程序正式开始之前注意引入架包&#xff08;注意&#xff1a;架包放在WEB-INF下面的lib包里&#xff09; Struts 2一共有13个架包如下图所示 在开始我们…