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 相关文章推荐
js cookies 常见网页木马挂马代码 24小时只加载一次
Apr 13 Javascript
JavaScript CSS 修改学习第四章 透明度设置
Feb 19 Javascript
动态调用CSS文件的JS代码
Jul 29 Javascript
jquery 淡入淡出效果的简单实现
Feb 07 Javascript
基于javascript实现仿百度输入框自动匹配功能
Jan 03 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
Apr 03 Javascript
bootstrap网页框架的使用方法
May 10 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
Aug 24 Javascript
webpack开发跨域问题解决办法
Aug 03 Javascript
微信小程序实现YDUI的ScrollTab组件
Feb 02 Javascript
浅谈webpack4 图片处理汇总
Sep 12 Javascript
js面向对象之实现淘宝放大镜
Jan 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代码实现爬虫记录――超管用
2015/07/31 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
Python模拟登录12306的方法
2014/12/30 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
解决Python传递中文参数的问题
2015/08/04 Python
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
python 多线程中join()的作用
2020/10/29 Python
国际商务专业求职信
2014/07/15 职场文书
埃及王子观后感
2015/06/16 职场文书
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang