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 相关文章推荐
UserData用法总结 lanyu出品
Jul 01 Javascript
页面回到顶部的三种实现(锚标记,js)
Oct 01 Javascript
你未必知道的JavaScript和CSS交互的5种方法
Apr 02 Javascript
javascript实现校验文件上传控件实例
Apr 20 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
Oct 19 Javascript
解析JavaScript模仿块级作用域
Dec 29 Javascript
js基于myFocus实现轮播图效果
Feb 14 Javascript
jQuery倒计时代码(超简单)
Feb 27 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
Apr 24 Javascript
基于node.js制作简单爬虫教程
Jun 29 Javascript
React-Native使用Mobx实现购物车功能
Sep 14 Javascript
详解vue 实例方法和数据
Oct 23 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
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
JS中==与===操作符的比较
2009/03/21 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
js array数组对象操作方法汇总
2019/03/18 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
学校联谊活动方案
2014/02/15 职场文书
抄作业检讨书
2014/02/17 职场文书
租赁意向书范本
2014/04/01 职场文书
中秋手机店促销方案
2014/06/16 职场文书
代领报检证委托书范本
2014/10/11 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
内勤岗位职责
2015/02/10 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
联谊会开场白
2015/06/01 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js