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 类型的包装对象(Typed Wrappers)
Oct 27 Javascript
jquery实现pager控件示例
Apr 09 Javascript
使用JavaScript获取电池状态的方法
May 03 Javascript
详解JavaScript中getFullYear()方法的使用
Jun 10 Javascript
js实现三张图(文)片一起切换的banner焦点图
Aug 25 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
Dec 26 Javascript
JavaScript中对JSON对象的基本操作示例
May 21 Javascript
Require.JS中的几种define定义方式示例
Jun 01 Javascript
angularJs中json数据转换与本地存储的实例
Oct 08 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
Nov 14 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
Jul 19 Javascript
uni-app从安装到卸载的入门教程
May 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
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
PHP+Redis开发的书签案例实战详解
2019/07/09 PHP
JSQL  一个 web DB 的封装
2010/05/05 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
python字符串排序方法
2014/08/29 Python
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
Python实现感知机(PLA)算法
2017/12/20 Python
TensorFlow的权值更新方法
2018/06/14 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
成教自我鉴定
2013/10/27 职场文书
药剂专业学生求职信范文
2013/12/28 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
2014年保育员工作总结
2014/12/02 职场文书
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis
pytorch中的 .view()函数的用法介绍
2022/03/17 Python
配置Kubernetes外网访问集群
2022/03/31 Servers