| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 利用Vue写一个购物车项目 -> 正文阅读 |
|
[JavaScript知识库]利用Vue写一个购物车项目 |
? <!DOCTYPE?html> <html?lang="en"> <head> ????<meta?charset="UTF-8"> ????<meta?http-equiv="X-UA-Compatible"?content="IE=edge"> ????<meta?name="viewport"?content="width=device-width,?initial-scale=1.0"> ????<title>Document</title> </head> <body> ????<script?src="js/vue.js"?type="text/javascript"></script> ????<script?src="js/jquery-3.6.0.js"?type="text/javascript"></script> ????<div?id="app"?> ????????<div?it="container"> ????????????<my-cart></my-cart> ????????</div> ????</div> ????<style> ????????*?{ ???????????? ????????????padding:?0; ????????????margin:?0 ????????} ???????? ????????a?{ ????????????text-decoration:?none; ????????} ???????? ????????.container?{ ????????????width:?500px; ????????????margin:?10px?auto; ????????} ???????? ????????.title?{ ????????????width:?500px; ????????????height:?50px; ????????????text-align:?center; ????????????line-height:?50px; ????????????font-size:?20px; ????????????background-color:?paleturquoise; ????????} ???????? ????????.item?{ ????????????width:?500px; ????????????position:?relative; ????????????height:?50px; ????????????border-bottom:?1px?solid?rgb(0,?0,?0); ????????} ???????? ????????.item?img?{ ????????????float:?left; ????????????width:?100px; ????????????height:?50px; ????????} ????????/*?.item?name?{ ????????????position:?absolute; ????????????float:?left; ????????????width:?120px; ????????????margin-left:?10px; ????????????top:?15px; ????????????left:?100px; ????????}?*/ ???????? ????????/*?.item?.price?{ ????????????position:?absolute; ????????????float:?left; ????????????width:?120px; ????????????margin-left:?10px; ????????????top:?15px; ????????????left:?100px; ????????}?*/ ???????? ????????.item?.change?{ ????????????position:?absolute; ????????????left:?220px; ????????????top:?15px; ????????????float:?left; ????????????width:?200px; ????????} ???????? ????????.change?a?{ ????????????float:?left; ????????????display:?block; ????????????width:?20px; ????????????height:?20px; ????????????font-size:?18px; ????????????text-align:?center; ????????????line-height:?20px; ????????????background-color:?#ccc; ????????} ???????? ????????.change?input?{ ????????????float:?left; ????????????width:?50px; ????????????margin:?0?5px; ????????} ???????? ????????.item?.del?{ ????????????position:?absolute; ????????????top:?8px; ????????????left:?420px; ????????????color:?red; ????????????font-size:?24px; ????????} ???????? ????????.item?.del:hover?{ ????????????top:?0; ????????????height:?50px; ????????????background-color:?rgb(247,?247,?247); ????????} ???????? ????????.total?{ ????????????position:?relative; ????????????width:?500px; ????????????height:?50px; ????????????background-color:?sandybrown; ????????} ???????? ????????.total?span?{ ????????????position:?absolute; ????????????top:?14px; ????????????left:?250px; ????????} ???????? ????????.total?span?em?{ ????????????color:?red; ????????????font-style:?normal; ????????????font-size:?20px; ????????} ???????? ????????.total?button?{ ????????????position:?absolute; ????????????top:?8px; ????????????left:?400px; ????????????width:?50px; ????????????height:?35px; ????????????border-radius:?25%; ????????????border:?none; ????????????outline:?none; ????????????background-color:?tomato; ????????} ????</style> ????<script?src="js/vue.js"></script> ????<script> ????????//?三个子组件 ????????var?CartTitle?=?{ ???????????? ????????????template:?`<div?class="title">我的商品</div>` ????????} ????????var?CartList?=?{ ????????????props:?['list'], ????????????template:?`?<div?class="list"> ????????????????????<div?class="item"?:key="item.id"?v-for="item?in?list"> ????????????????????????<img?:src="item.img"?alt=""> ????????????????????????<div?class="name">{{item.name}}</div> ????????????????????????<div?class="change"> ????????????????????????????<a?href=""?@click.prevent="sub(item.id)">-</a> ????????????????????????????<input?type="text"?class="num"?:value="item.num"?@blur="changenum(item.id,$event)"> ????????????????????????????<a?href=""?@click.prevent="add(item.id)">+</a> ????????????????????????</div> ????????????????????????<div?class="del"?@click="del(item.id)">×</div> ????????????????????</div> ????????????????</div> ????????????????????`, ????????????methods:?{ ?????????????? ????????????????del:?function(id)?{ ???????????????????? ????????????????????this.$emit("del-cart",?id); ????????????????}, ??????????????? ????????????????changenum:?function(id,?event)?{ ??????????????????? ????????????????????this.$emit('change-num',?{ ????????????????????????id:?id, ????????????????????????num:?event.target.value ????????????????????}) ????????????????}, ???????????????? ????????????????sub:?function(id)?{ ????????????????????this.$emit('sub-num',?id); ????????????????}, ???????????????? ????????????????add:?function(id)?{ ????????????????????this.$emit('add-num',?id); ????????????????} ????????????} ????????} ????????var?CartTotal?=?{ ????????????????props:?['list'], ????????????????template:?`<div?class="total"> ????????????????????<span>总价:<em>{{total}}</em>¥</span> ????????????????????<button>结算</button> ????????????????</div>`, ????????????????computed:?{ ????????????????????total:?function()?{ ????????????????????????var?sum?=?0; ????????????????????????this.list.forEach(item?=>?{ ????????????????????????????sum?+=?item.price?*?item.num; ????????????????????????}); ????????????????????????return?sum; ????????????????????} ????????????????} ????????????} ????????????//父组件 ????????Vue.component('my-cart',?{ ????????????data:?function()?{ ????????????????return?{ ???????????????????? ????????????????????list:?[{ ????????????????????????id:?1, ????????????????????????name:?'TCL彩电', ????????????????????????price:?460, ????????????????????????num:?1, ????????????????????????img:?'images/猫一.jpg' ????????????????????},?{ ????????????????????????id:?2, ????????????????????????name:?'机顶盒', ????????????????????????price:?3000, ????????????????????????num:?1, ????????????????????????img:?'images/猫二.jpg' ????????????????????},?{ ????????????????????????id:?3, ????????????????????????name:?'海尔冰箱', ????????????????????????price:?6799, ????????????????????????num:?1, ????????????????????????img:?'images/猫三.jpg' ????????????????????},?{ ????????????????????????id:?4, ????????????????????????name:?'小米手机', ????????????????????????price:?2000, ????????????????????????num:?1, ????????????????????????img:?'images/猫二.jpg' ????????????????????}, ?????????????????????{ ????????????????????????id:?5, ????????????????????????name:?'PPTV电视', ????????????????????????price:?1000, ????????????????????????num:?1, ????????????????????????img:?'images/猫二.jpg' ????????????????????} ????????????????] ????????????????} ????????????}, ????????????template:?`<div?class="mycart"> ????????????????<cart-title></cart-title> ????????????????<cart-list?:list="list"?@del-cart="delcart($event)"?@change-num="changeNum($event)"?@sub-num="subnum($event)"?@add-num="addnum($event)"></cart-list> ????????????????<cart-total?:list="list"></cart-total> ????????????????</div>`, ????????????components:?{ ????????????????'cart-title':?CartTitle, ????????????????'cart-list':?CartList, ????????????????'cart-total':?CartTotal, ????????????}, ????????????methods:?{ ????????????????delcart:?function(id)?{ ????????????????????//?根据id删除list中对应的数据 ????????????????????//?1.找到id对应数据的索引 ????????????????????var?index?=?this.list.findIndex(item?=>?{ ????????????????????????return?item.id?==?id; ????????????????????}); ????????????????????//?2.根据索引删除对应的数据 ????????????????????this.list.splice(index,?1); ????????????????}, ????????????????//?根据id修改list中的数量num ????????????????changeNum:?function(val)?{ ????????????????????//console.log(val); ????????????????????this.list.some(item?=>?{ ????????????????????????if?(item.id?==?val.id)?{ ????????????????????????????item.num?=?val.num; ????????????????????????} ????????????????????}) ????????????????}, ???????????????? ????????????????subnum:?function(event)?{ ????????????????????//?console.log(event);?event是点击的id号 ????????????????????this.list.some(item?=>?{ ????????????????????????if?(item.id?==?event?&&?item.num?>?0)?{ ????????????????????????????item.num--; ????????????????????????} ????????????????????}) ????????????????}, ???????????????? ????????????????addnum:?function(event)?{ ????????????????????this.list.some(item?=>?{ ????????????????????????if?(item.id?==?event)?{ ????????????????????????????item.num++; ????????????????????????} ????????????????????}) ????????????????} ????????????} ????????}); ????????var?vm?=?new?Vue({ ????????????el:?"#app", ????????????data:?{ ????????????} ????????}); ????</script> </body> </html> |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 16:43:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |