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经典效果集锦
Jul 06 Javascript
Script的加载方法小结
Jan 12 Javascript
面向对象的Javascript之三(封装和信息隐藏)
Jan 27 Javascript
JavaScript中的prototype.bind()方法介绍
Apr 04 Javascript
jQuery的几个我们必须了解的特点
May 03 Javascript
浅析AngularJs HTTP响应拦截器
Dec 28 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
Jan 23 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
Mar 02 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
Apr 19 Javascript
了解前端理论:rscss和rsjs
May 23 Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
May 31 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
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
php数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
php判断目录存在的简单方法
2019/09/26 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
js实现分页功能
2017/05/24 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
理解python多线程(python多线程简明教程)
2014/06/09 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
python根据url地址下载小文件的实例
2018/12/18 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
什么是继承
2013/12/07 面试题
暑假家长评语大全
2014/04/17 职场文书
项目建议书怎么写
2014/05/15 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
MySQL快速插入一亿测试数据
2021/06/23 MySQL
Python读取和写入Excel数据
2022/04/20 Python