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 异步调用框架 (Part 3 - 代码实现)
Aug 04 Javascript
struts2+jquery+json实现异步加载数据(自写)
Jun 24 Javascript
javascript full screen 全屏显示页面元素的方法
Sep 27 Javascript
js触发onchange事件的方法说明
Mar 08 Javascript
JavaScript判断浏览器类型的方法
Feb 10 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
Mar 27 Javascript
JS 拼凑字符串的简单实例
Sep 02 Javascript
jQuery Ztree行政地区树状展示(点击加载)
Nov 09 Javascript
ionic3 懒加载
Aug 16 Javascript
JS扩展String.prototype.format字符串拼接的功能
Mar 09 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
Jan 07 Javascript
手把手带你入门微信小程序新框架Kbone的使用
Feb 25 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 INI配置文件的解析实现分析
2011/01/04 PHP
PHP实现过滤各种HTML标签
2015/05/17 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
Dojo 学习要点
2010/09/03 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
django使用xadmin的全局配置详解
2019/11/15 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
大学生职业生涯设计书
2014/01/02 职场文书
村干部承诺书
2014/03/28 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
公开致歉信
2019/06/24 职场文书
python实现监听键盘
2021/04/26 Python
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs