vue.js实现简单购物车功能


Posted in Javascript onMay 30, 2020

本文实例为大家分享了vue.js实现简单购物车的具体代码,供大家参考,具体内容如下

这次我将给大家带来一个vue.js实现购物车的小项目,如有不足请严厉指出。

购物车功能有:全选和选择部分商品,选中商品总价计算,商品移除,以及调整购买数量等功能。

js主要有以下方法

加函数,减函数,手动修改数量判断库存函数,总价格计算函数,单选事件,全选事件,一共分为6个事件

具体效果如下图

vue.js实现简单购物车功能

代码在这里

main.js

'use strict'
 
var app = new Vue({
 el: '#app',
 data: {
 list: [
  {
  id: 1,
  name: 'iPhone 7',
  price: 6188,
  count: 1,
  check: true,
  },
  {
  id: 2,
  name: 'iPad Pro',
  price: 5888,
  count: 1,
  check: false,
  },
  {
  id: 3,
  name: 'MacBook Pro',
  price: 21488,
  count: 1,
  check: true,
  },
 ]
 },
 methods: {
 remove: function (index) { //移除商品
  this.list.splice(index, 1);
 },
 reduce: function (index) { //减少商品
  this.list[index].count --;
 },
 add: function (index) { //增加商品
  this.list[index].count ++;
 },
 selAll: function () { //商品全选
  let isAll = document.querySelector('#all');
 
  if (isAll.checked == true) {
  this.list.forEach(function(item, index) {
   item.check = true;
  }) 
  } else {
  this.list.forEach(function(item, index) {
   item.check = false;
  }) 
  }
 }
 },
 computed: {
 totalPrices: function () { //计算总价
  let totalPrices = 0;
 
  this.list.forEach(function (val, index) {
  if (val.check == true)
   totalPrices += parseFloat(val.price * val.count);
  })
 
  return totalPrices.toString().replace(/\B(?=(\d{3})+$)/g, ','); //每三位数中间加一个‘,'
 }
 }
})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <link rel="stylesheet" href="main.css" >
</head>
<body>
<div id="app" v-cloak>
 <template v-if="list.length">
 <table>
  <thead>
  <tr>
   <th>全选<input id="all" @click="selAll" type="checkbox" checked></th>
   <th>商品名称</th>
   <th>商品单价</th>
   <th>购买数量</th>
   <th>操作</th>
  </tr>
  </thead>
  <tbody>
  <template v-for="(item, index) in list">
   <tr>
   <td>
    <input type="checkbox" :checked="item.check" @click="item.check = !item.check">
   </td>
   <td>
    {{ item.name }}
   </td>
   <td>
    {{ item.price }}
   </td>
   <td>
    <button @click="reduce(index)" :disabled="item.count == 1">-</button>
    {{ item.count }}
    <button @click="add(index)">+</button>    
   </td>
   <td>
    <button @click="remove(index)">移除</button>
   </td>
   </tr>
  </template>
  </tbody>
 </table>
 <div>总价: ¥ {{ totalPrices }}</div>
 </template>
 <template v-else>
 购物车没有商品
 </template>
</div>
 
<script src="vue.js"></script>
<script src="main.js"></script>
</body>
</html>

main.css

[v-cloak] {
 display: none; 
}
 
#app {
 width: 500px;
 margin: 0 auto;
}
 
table {
 width: 100%;
 border: 1px solid #444;
 border-collapse: collapse;
}
 
th, td {
 padding: 8px 16px;
 border: 1px solid #444;
 text-align: left;
}
 
th {
 background: #89abd3;
 color: rgb(214, 224, 235);
 font-weight: 600;
 white-space: nowrap;
}

更多文章可以点击《Vue.js前端组件学习教程》学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

更多vue学习教程请阅读专题《vue实战教程》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
Oct 23 Javascript
select组合框option的捕捉实例代码
Sep 30 Javascript
你必须知道的Javascript知识点之&quot;单线程事件驱动&quot;的使用
Apr 23 Javascript
javascript强大的日期函数代码分享
Sep 04 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
Oct 14 Javascript
js计算任意值之间随机数的方法
Jan 16 Javascript
PHP守护进程实例
Mar 06 Javascript
JS中cookie的使用及缺点讲解
May 13 Javascript
详解vue组件通信的三种方式
Jun 30 Javascript
第一个Vue插件从封装到发布
Nov 22 Javascript
element ui 表格动态列显示空白bug 修复方法
Sep 04 Javascript
微信小程序实现列表的横向滑动方式
Jul 15 Javascript
vue实现简单学生信息管理
May 30 #Javascript
vue实现学生信息管理系统
May 30 #Javascript
vue实现在线学生录入系统
May 30 #Javascript
VueJS实现用户管理系统
May 29 #Javascript
如何在vue中使用jointjs过程解析
May 29 #Javascript
vue实现信息管理系统
May 30 #Javascript
微信小程序语音同步智能识别的实现案例代码解析
May 29 #Javascript
You might like
实现php加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
学习php中的正则表达式
2014/08/17 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
PHP内存使用情况如何获取
2015/10/10 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
javascript中clone对象详解
2014/12/03 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
Python Trie树实现字典排序
2014/03/28 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
python 日期操作类代码
2018/05/05 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
Django组件cookie与session的具体使用
2019/06/05 Python
python中的列表与元组的使用
2019/08/08 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
CSS实现聊天气泡效果
2020/04/26 HTML / CSS
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
几个SQL的面试题
2014/03/08 面试题
个人找工作求职简历的自我评价
2013/10/20 职场文书
大学生优秀自荐信范文
2014/02/25 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书