商城购物车物品数量加减js

合集下载

基于javascript的购物车设计与实现

基于javascript的购物车设计与实现

基于JavaScript的购物车设计与实现随着电子商务的快速发展,购物车功能已成为全球信息站的常见部分。

购物车是电子商务全球信息站上用于存储和管理用户所选择商品的重要功能。

在该文章中,将针对基于JavaScript的购物车设计与实现进行讨论。

一、购物车的功能需求分析在设计购物车之前,首先需要对其功能需求进行分析。

购物车的主要功能需求包括但不限于以下几点:1. 添加商品到购物车2. 删除购物车中的商品3. 修改购物车中的商品数量4. 计算购物车中商品的总价5. 显示购物车中的商品列表二、购物车的技术选型分析为了实现以上功能需求,需要选择一个合适的技术进行购物车的设计和实现。

在当前的前端开发中,JavaScript是一种非常流行的语言,并且有着丰富的生态系统和强大的功能,因此可以选择使用JavaScript来实现购物车功能。

还可以借助其他技术如HTML、CSS等来实现购物车的界面展示。

三、购物车的设计与实现在设计购物车时,可以采用面向对象的思想,将购物车视为一个实体对象。

购物车对象可以包含以下属性和方法:1. 属性:- 商品列表:用来存储购物车中的商品信息- 总价:用来存储购物车中所有商品的总价2. 方法:- 添加商品:根据用户的选择,向商品列表中添加商品信息,并更新总价- 删除商品:根据用户的选择,从商品列表中删除商品信息,并更新总价- 修改数量:根据用户的选择,修改商品列表中商品的数量,并更新总价- 计算总价:根据商品列表中商品的信息,计算出购物车中所有商品的总价- 显示商品列表:将购物车中的商品列表展示给用户四、购物车的界面实现除了购物车功能的设计与实现,还需要考虑购物车的界面展示。

购物车的界面应包括以下内容:1. 商品列表:展示购物车中所有商品的信息,包括商品名称、数量、单价等2. 总价:展示购物车中所有商品的总价3. 操作按钮:提供添加、删除、修改数量等操作的按钮,方便用户对购物车中的商品进行管理五、购物车的性能优化在实现购物车功能时,还需要考虑性能优化的问题。

js实现购物车商品数量加减

js实现购物车商品数量加减

js实现购物车商品数量加减本⽂实例为⼤家分享了js实现购物车商品数量加减的具体代码,供⼤家参考,具体内容如下Html<link rel='stylesheet' type='text/css' media='screen' href='../css/bootstrap.min.css'><script src="../js/jquery-1.12.4.js"></script><div style="width: 300px;margin: 30px auto 0;"><form class="form-inline"><div class="form-group"><div class="input-group"><div onclick="minus()" class="input-group-addon">-</div><input type="text" class="form-control" id="exampleInputAmount"><div onclick="add()" class="input-group-addon">+</div></div></div></form></div>CSS<style>.list a {display: block;margin: 30px;padding: 0 20px;height: 100px;}.list .list-img {width: 180px;height: 100px;border-radius: 6px;object-fit: cover;}.list .title {font-size: 16px;font-weight: bold;white-space: nowrap;text-overflow: ellipsis;margin: 10px 0 0;}.list .content {font-size: 14px;line-height: 26px;margin: 10px 0 0;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;}</style>Js<script>var num = 0;// 对表单进⾏初始赋值$('#exampleInputAmount').val(num);// 点击添加时function add() {// ⽅法体if (num >= 5) {alert('最多可添加5个');return;}num++;console.log(num);$('#exampleInputAmount').val(num);}// 点击删除时function minus() {if (num < 1) {alert('已减到最低了');return;}num--;console.log(num);$('#exampleInputAmount').val(num);}</script>以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

JS实现购物车功能(JS案例)

JS实现购物车功能(JS案例)

JS实现购物车功能(JS案例)购物车功能是一个非常常见的电商网站功能,它允许用户将感兴趣的商品加入购物车,然后在结算时一次性支付。

本文将使用JavaScript实现一个简单的购物车功能。

首先,我们需要定义一个购物车对象,用于保存用户选择的商品信息。

购物车对象可以包含以下几个属性:- `items`: 一个数组,用于保存用户选择的商品信息- `addItem`: 一个方法,用于将商品加入购物车- `removeItem`: 一个方法,用于从购物车中移除商品- `getTotalPrice`: 一个方法,用于计算购物车中所有商品的总价格```javascript//购物车对象var cart =items: [],addItem: function(item)this.items.push(item);},removeItem: function(itemIndex)this.items.splice(itemIndex, 1);},getTotalPrice: functiovar totalPrice = 0;for (var i = 0; i < this.items.length; i++)totalPrice += this.items[i].price;}return totalPrice;}```在上面的代码中,`addItem`方法用于将商品加入购物车,它接受一个商品对象作为参数,并将其添加到`items`数组中。

`removeItem`方法用于从购物车中移除商品,它接受一个商品在`items`数组中的索引作为参数,并使用`splice`方法将其从数组中删除。

`getTotalPrice`方法用于计算购物车中所有商品的总价格,它通过循环遍历`items`数组,将每个商品的价格累加到`totalPrice`变量中,最后返回总价格。

下面是一个简单的示例,演示如何使用购物车对象:```javascript//创建几个商品对象var item1 =name: '商品1',price: 100};var item2 =name: '商品2',price: 200};//将商品加入购物车cart.addItem(item1);cart.addItem(item2);//输出购物车中所有商品的名称和价格for (var i = 0; i < cart.items.length; i++) console.log('商品名称:', cart.items[i].name); console.log('商品价格:', cart.items[i].price); //输出购物车中所有商品的总价格console.log('总价格:', cart.getTotalPrice(); //从购物车中移除商品2cart.removeItem(1);//再次输出购物车中所有商品的总价格console.log('总价格:', cart.getTotalPrice();```在上面的示例中,我们通过创建了两个商品对象`item1`和`item2`,然后使用`addItem`方法将它们加入购物车。

javascript大作业案例

javascript大作业案例

javascript大作业案例JavaScript大作业案例1. 2048游戏2048游戏是一款经典的数字消除游戏,玩家通过滑动数字方块,使相同数字的方块相加,最终得到2048这个数字的方块。

这个案例可以通过JavaScript来实现游戏逻辑、界面交互以及分数统计等功能。

2. 在线购物车在线购物车是一个常见的电商网站功能,用户可以通过点击“加入购物车”按钮将商品添加到购物车中,然后可以查看购物车的商品列表、修改商品数量、删除商品等操作。

这个案例可以通过JavaScript实现购物车的动态更新、购物车总价的计算、商品数量的统计等功能。

3. 图片轮播图片轮播是网站常见的一种效果,可以展示多张图片,并通过自动播放或手动切换的方式进行显示。

这个案例可以通过JavaScript实现图片轮播的逻辑,包括图片的切换、自动播放的控制、切换按钮的显示等功能。

4. 数据可视化数据可视化是将抽象的数据通过图表、地图等可视化的方式展示出来,以便用户更直观地理解和分析数据。

这个案例可以通过JavaScript调用数据可视化库,如D3.js或Echarts,来实现数据的图表展示、交互操作、数据筛选等功能。

5. 在线聊天室在线聊天室是一个可以实现实时通信的网页应用,用户可以通过输入文字、发送图片等方式与其他用户进行交流。

这个案例可以通过JavaScript结合WebSocket技术来实现实时通信的功能,包括消息的发送、接收、显示等操作。

6. 博客系统博客系统是一个可以发布、编辑、管理文章的网站,用户可以注册账号、登录、撰写文章、查看文章列表等操作。

这个案例可以通过JavaScript实现用户的注册登录功能、文章的发布与编辑功能、文章列表的展示与分页等功能。

7. 在线音乐播放器在线音乐播放器可以实现在线播放音乐、创建歌单、收藏喜欢的音乐等功能。

这个案例可以通过JavaScript结合音乐API来实现音乐的搜索、播放、歌单的创建与管理等功能。

Web前端开发与设计13-购物车案例

Web前端开发与设计13-购物车案例

Web前端开发与设计13-购物车案例说明使⽤js脚本实现商品的添加、修改、删除、价格计算。

⽰例代码<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript实现购物车功能</title><style type="text/css">.num {width: 30px;}</style><!--⼊jquery--><script src="script/jquery-1.12.4.js"></script><script>//1.实现全选的效果function checkAll() {let eles = document.getElementsByName("product");//获取的是对象集合//console.log(eles);//调试代码for (let i = 0; i < eles.length; i++) {eles[i].checked = document.getElementById("checkall").checked;}}//2.实现选择商品改变全选框的效果function checkProduct() {let ckall = document.getElementById("checkall");//全选框let eles = document.getElementsByName("product");//获取商品选框对象集合let size = eles.length;//商品数⽬let total = 0;//选中的商品数⽬//遍历集合,判断商品是否都被选中for (let i = 0; i < size; i++) {if (eles[i].checked == false) {ckall.checked = false;break;//中断循环} else {total += 1;}}//判断是否已经遍历完成if (total == size) {ckall.checked = true;}}//jquery开发环境$(function () {//alert("hello jquey!");//3.实现增加商品数量$("#mycart").find(".add").click(function () {let $_pre = $(this).prev();//console.log($_pre);let num = parseInt($_pre.val());//alert(num);$_pre.val(num + 1);//数量+1//改变⼩计⾦额let price=$_pre.parent().prev().text();//读取价格$_pre.parent().next().text(parseInt(price)*(num+1));totalPrice();})//4.减少商品数量$("#mycart").find(".sub").click(function () {let $_next = $(this).next();let num = parseInt($_next.val());if (num < 2) {let result = confirm("确定删除该商品?");if (result == true) {$_next.parent().parent().remove();//删除商品totalPrice();}} else {$_next.val(num - 1);//数量-1//改变⼩计⾦额let price=$_next.parent().prev().text();//读取价格$_next.parent().next().text(parseInt(price)*(num-1));totalPrice();}})//5.增加商品效果$("#addProduct").click(function () {let $_newRow =$("#mycart").find("tr").eq(1).clone(true);$("#mycart").find("tr").eq(1).after($_newRow);totalPrice();})//6.总计价格function totalPrice() {var sum=0;$(".total").each(function (i,e) {sum+=parseInt($(e).text());})$("#sum").text(sum);}//执⾏计算总价totalPrice();})</script></head><body><button id="addProduct">增加商品</button><hr><table id="mycart" border="1px"><tr><th>全选<input type="checkbox" id="checkall" onclick="checkAll()"></th><th>品名</th><th>价格</th><th>数量</th><th>⼩计</th></tr><tr><td><input type="checkbox" name="product" onclick="checkProduct()"></td> <td>⾐服</td><td>800</td><td><button class="sub">-</button><input type="text" name="num" class="num" value="1"><button class="add">+</button></td><td class="total">800</td></tr><tr><td><input type="checkbox" name="product" onclick="checkProduct()"></td> <td>鞋⼦</td><td>500</td><td><button class="sub">-</button><input type="text" name="num" class="num" value="1"><button class="add">+</button></td><td class="total">500</td></tr><tr><td colspan="3">总计</td><td colspan="2" id="sum">888</td></tr></table></body></html>。

ecshop购买数量的加减按钮,加一个减一个代码,商品数量加减代码

ecshop购买数量的加减按钮,加一个减一个代码,商品数量加减代码

ecshop购买数量的加减按钮,加一个减一个代码,商品数量加减代码方法一:1.复制以下JS代码,添加到 js/common.js 的最后function cart_number(txt_id, type, num){ num = num || 1;var txt = document.getElementByIdx_x_x(txt_id);var source_num = parseInt(txt.value);if (source_num == 1 && type == '-'){alert('请最少购买一个商品');return;}var to_num = source_num;if (type == '+'){to_num += num;}else if (type == '-'){to_num -= num;}txt.value = to_num;showdiv(txt);}2.在flow.dwt中找到购买数量的文本框,在他的前后分别加上<ahref="javascript:cart_number('goods_number_{$goods.rec_id}', '-');">-</a><ahref="javascript:cart_number('goods_number_{$goods.rec_id}', '+');">+</a>方法二:在flow.dwt中找到购买数量的文本框,在他的前后分别加上<IMG style="PADDING-LEFT: 0px; CURSOR: pointer"onclick='if(document.getElementByIdx_x("number").value>1){document.g etElementByIdx_x("number").value--;}'src="images/down.gif" ><INPUT id=number style="WIDTH: 40px; TEXT-ALIGN: right" maxLength=4value=1 name=cart_quantity><IMG style="PADDING-RIGHT: 30px; MARGIN: 0px; WIDTH: 25px; CURSOR: pointer" onclick='document.getElementByIdx_x("number").value ++;'src="images/up.gif" >。

js实现购物车加减以及价格计算功能

js实现购物车加减以及价格计算功能

js实现购物车加减以及价格计算功能本⽂实例为⼤家分享了js实现购物车加减以及价格计算的具体代码,供⼤家参考,具体内容如下需求说明:1、单击“半闭”按钮时,关闭当前页⾯购物车页⾯2、单击“移⼊收藏”弹出收藏提⽰3、单击“删除”弹出确认删除提⽰4、单击“结算”按钮,弹出结算信息页⾯窗⼝5、⾃动计算商品总计6、单击“删除”按钮,使⽤parentNode访问当前节点的⽗亲节点等,使⽤removeChild( )删除当前商品效果图:代码:<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><title>完善当当购物车页⾯</title><style type="text/css">body,ul,li,div,p,h1,h2,ol{margin: 0;padding: 0;}ul,li,ol{list-style: none;}.content{width: 810px; margin: 0 auto; font-family: "微软雅⿊";}.logo{margin: 10px 0;}.logo span{display: inline-block;float: right;width: 60px;height: 30px;line-height: 30px;font-size: 14px;background: #ff0000;color: #ffffff;text-align: center;border-radius: 10px;margin-top: 5px;margin-right: 10px;cursor: pointer;font-weight: bold;}.cartList{/*background: url("../image/02.jpg") no-repeat;*//*height: 414px;*/overflow: hidden;}.cartList ul{display: flex;justify-content: space-between;/*float: right;*//*width: 450px;*/}.cartList ul:nth-of-type(1){display: flex;margin-top: 125px;}.cartList ul:nth-of-type(2){margin: 20px 0;}.cartList ul li{font-family: "微软雅⿊";font-size: 12px;color: #666666;text-align: center;line-height: 25px;/*float: left;*/}.cartList ul li input[name="price"]{border: none;background: transparent;width: 45px;text-align: center;}.cartList ul li input[name="amount"]{width: 45px;text-align: center;border: 1px solid #999999;border-left: none;border-right: none;height: 21px;}.cartList ul li input[name="minus"],.cartList ul li input[name="plus"]{height: 25px;border: 1px #999999 solid;width: 25px;text-align: center;}.cartList ul li:nth-of-type(1){width: 130px;}.cartList ul li:nth-of-type(2){width: 100px;}.cartList ul li:nth-of-type(3){width: 130px;}.cartList ul li p{cursor: pointer;}.cartList ol{float: right;clear: both;margin-top: 40px;}.cartList ol li{float: left;}.cartList ol li:nth-of-type(1){color: #ff0000;width: 80px;height: 35px;line-height: 35px;text-align: center;}.cartList ol li span{display: inline-block;float: right;width: 80px;height: 35px;line-height: 35px;font-size: 14px;font-family: "微软雅⿊";background: #ff0000;color: #ffffff;text-align: center;/*margin-top: 5px;*//*margin-right: 15px;*/cursor: pointer;font-weight: bold;}</style></head><!--onload,在加载时计算好原始⾦额--><body onload="total()"><div class="content"><div class="logo"><span onclick="javascript:if (confirm('确认要关闭吗'))window.close() ">关闭</span></div><div class="cartList"><ul><li>商品信息</li><li>商品图⽚</li><li>单价(元)</li><li>数量</li><li>⾦额(元)</li><li>操作</li></ul><ul style="display: flex;justify-content: space-between;align-items: center" id="first"><li>《平凡的世界》</li><li><img src="./img/1.png" alt="" width="50" height="50"></li><li>¥<input type="text" name="price" value="21.90"></li><li><input type="button" name="minus" value="-" onclick="minus(0)"><input type="text" name="amount" value="1"><input type="button" name="plus" value="+" onclick="plus(0)" ></li> <li id="price0">¥21.90</li><li><p onclick="save()">移⼊收藏</p><p onclick="delete1()">删除</p></li></ul><ul style="display: flex;justify-content: space-between;align-items: center; margin: 20px 0;"><li>《昆⾍记》</li><li><img src="./img/2.png" alt="" width="50" height="50"></li><li>¥<input type="text" name="price" value="24.00"></li><li><input type="button" name="minus" value="-" onclick="minus(1)"><input type="text" name="amount" value="1"><input type="button" name="plus" value="+" onclick="plus(1)"></li> <li id="price1">¥24.00</li><li><p onclick="save()">移⼊收藏</p><p onclick="delete1()">删除</p></li></ul><ol><li id="totalPrice">&nbsp;</li><li><span>结算</span></li></ol></div></div></body></html><script>//减法function minus(index) {//获取当前数量的值var amounts=document.getElementsByName("amount");//得到第⼀个amount的元素的value属性的值var count=parseInt(amounts[index].value); //数量加1if (count<=1){alert("不能再减了,快没了!!");} else {//得到第⼀个amount的元素的value属性的值var count=parseInt(amounts[index].value)-1; //数量加1//重新把count的值绑定在数量⽂本框⾥amounts[index].value=count;var prices=document.getElementsByName("price");var price=parseFloat(prices[index].value);//乘以Math.pow(10,2)的原因为避免失真var totalMoney=((price*Math.pow(10,2))*count)/Math.pow(10,2);document.getElementById("price"+index).innerHTML="¥:"+totalMoney;}total();}//加法function plus(index) {//获取当前数量的值var amounts=document.getElementsByName("amount");//得到第⼀个amount的元素的value属性的值var count=parseInt(amounts[index].value)+1; //数量加1//重新把count的值绑定在数量⽂本框⾥amounts[index].value=count;//当前操作端⼝的价格也要重新计算//得到当前端⼝的单价var prices=document.getElementsByName("price");var price=parseFloat(prices[index].value);//乘以Math.pow(10,2)的原因为避免失真var totalMoney=((price*Math.pow(10,2))*count)/Math.pow(10,2);//把当前价格显⽰在⽂本中document.getElementById("price"+index).innerHTML="¥:"+totalMoney;total();}//求总⾦额function total() {//得到所有的数量var counts=document.getElementsByName("amount");//得到所有的单价var prices=document.getElementsByName("price");var sumMoney=0;for (var i=0;i<counts.length;i++){//乘以Math.pow(10,2)的原因为避免失真sumMoney+=(parseFloat(prices[i].value)*Math.pow(10,2)*parseInt(counts[i].value)/Math.pow(10,2)); }//把总⾦额显⽰再指定的元素中document.getElementById("totalPrice").innerHTML="¥:"+sumMoney;}//加⼊收藏function save() {if (confirm("确认要收藏吗?")){alert("收藏成功!");}}//删除function delete1() {if (confirm("确认要删除吗?")) {var del=document.getElementById("first");del.parentNode.removeChild(del);alert("删除成功!!");}}</script>以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

商品详情页添加购买数量加减按钮【新增购物车页加减按钮】

商品详情页添加购买数量加减按钮【新增购物车页加减按钮】

商品详情页添加购买数量加减按钮【新增购物车页加减按钮】——⽼杨,承接⼀切ecshop⼆次开发、插件开发、功能定制、ecshop整站建设、整站仿制第⼀次更新:应⼴⼤群众要求,加上购物车页⾯的按钮!!蓝字!第⼆次更新:新增购物车页⾯加减按钮第三次更新:解决了⼀个购物车页⾯的按钮⼀个错误。

增加了判断输⼊的数量是否为数字!第四次更新:加⼊⽰例⽂件第五次更新:针对购物车页⾯加减时,会跳转到结果页⾯这⼀情况。

修成成⾮跳转,直接刷新。

找到flow.php⾥的如下代码复制内容到剪贴板1. elseif ($_REQUEST['step'] == 'update_cart')2. {3. if (isset($_POST['goods_number']) && is_array($_POST['goods_number']))4. {5. flow_update_cart($_POST['goods_number']);6. }7. show_message($_LANG['update_cart_notice'], $_LANG['back_to_cart'], 'flow.php');8. exit;9. }修改为:复制内容到剪贴板1. elseif ($_REQUEST['step'] == 'update_cart')2. {3. if (isset($_POST['goods_number']) && is_array($_POST['goods_number']))4. {5. flow_update_cart($_POST['goods_number']);6. }7. ecs_header("Location: flow.php?step=cart\n");8. // show_message($_LANG['update_cart_notice'], $_LANG['back_to_cart'], 'flow.php');9. exit;10. }第六次更新:针对不会改样式的朋友,在商品详情页添加代码后,“数量:”这个名称错位,新增名称标签和样式。

JSP实现购物车功能

JSP实现购物车功能

JSP实现购物车功能JSP(Java Server Pages)是一种用于开发动态Web应用程序的Java技术。

购物车是电子商务网站中常见的功能之一,它允许用户将所选商品添加到购物车中,然后在结账时进行付款。

在本文中,我们将讨论如何使用JSP实现购物车功能。

实现购物车功能主要涉及以下几个方面:1.商品列表和功能2.将商品添加到购物车3.显示购物车内容4.修改购物车内容5.结算购物车首先,我们需要创建一个XML或数据库来存储商品信息。

每个商品包含名称、价格和库存等属性。

我们可以使用JSTL库来读取和显示商品列表。

通过循环迭代商品列表,我们可以在页面上展示商品信息,并为每个商品添加一个“添加到购物车”按钮。

在用户点击“添加到购物车”按钮时,我们可以使用JSP的请求参数来获取该商品的ID,并将其添加到购物车中。

购物车可以使用JavaBean 或ServletContext来存储。

购物车类可以包含以下方法:1.添加商品到购物车2.从购物车中删除商品3.获取购物车内容4.清空购物车购物车类还可以包含购物车的计算逻辑,例如计算总价格和更新商品库存等。

购物车可以存储在用户的会话中,以便在整个购物过程中保持持久性。

接下来,我们可以创建一个JSP页面来显示购物车内容。

该页面可以使用JSTL库来迭代购物车内容,并显示商品名称、价格和数量等信息。

此外,我们可以为每个商品添加一个“删除”按钮,以便用户可以删除购物车中的商品。

当用户修改购物车内容时,例如更改商品数量或删除商品,我们可以使用请求参数来获取用户的选择,并相应地修改购物车内容。

通过调用购物车类中的相应方法,我们可以更新购物车的内容,然后重新加载购物车页面以显示更新后的购物车内容。

最后,当用户完成购物后,我们可以提供一个结算页面。

该页面显示购物车中的商品信息和总价格,并包含付款选项。

用户可以选择支付方式和输入付款信息。

完成付款后,我们可以更新商品库存,并清空购物车。

js商城加减按钮

js商城加减按钮

js商城加减按钮<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>练习</title></head><style>*{padding:0;margin:0;}em,i{font-style:normal;font-size:20px;margin:0 20px;}input{width:50px;height:50px;text-align:center;line-height:50px;}</style><script>window.onload=function(){var oUl=document.getElementsByTagName('ul')[0];var oLi=oUl.getElementsByTagName('li');for(var i=0;i<oLi.length;i++){fn1(oLi[i]);}function fn1(a) {var oInp=a.getElementsByTagName('input');var oEm=a.getElementsByTagName('em')[0];var oSpan=a.getElementsByTagName('span')[0];var oI=a.getElementsByTagName('i')[0];var par=parseFloat(oSpan.innerHTML);oInp[0].onclick = function () {oEm.innerHTML--;if (oEm.innerHTML < 0) {oEm.innerHTML = 0}oI.innerHTML = oEm.innerHTML * par + '元';};oInp[1].onclick = function () {oEm.innerHTML++;oI.innerHTML = oEm.innerHTML * par + '元';};}}</script><body><ul><li><input type="button" value="-"><em>0</em><input type="button" value="+"><p>单价<span>12.5元</span>;合计<i>0元</i></p></li><li><input type="button" value="-"><em>0</em><input type="button" value="+"><p>单价<span>20.5元</span>;合计<i>0元</i></p></li><li><input type="button" value="-"><em>0</em><input type="button" value="+"><p>单价<span>9.5元</span>;合计<i>0元</i></p></li><li><input type="button" value="-"><em>0</em><input type="button" value="+"><p>单价<span>10.5元</span>;合计<i>0元</i></p> </li></ul><div>你购买的商品合计<b>0</b>件;共<span>0</span>元</div></body></html>。

javascript怎么实现购物车效果

javascript怎么实现购物车效果

javascript怎么实现购物车效果javascript实现购物车效果的⽅法:1、使⽤table来进⾏界⾯布局;2、⾃⾏封装getClasses函数;3、通过js实现选中和全选商品,以及商品数量的增减等功能即可。

本⽂操作环境:windows7系统、javascript1.8.5版,DELL G3电脑javascript怎么实现购物车效果?⽤javascript实现的购物车实例基于javascript实现的购物车实例:⾸先是效果和功能,如下图所⽰,具有购物车的基本功能。

包括1、选中和全选商品;2、商品数量的增减;3、单个商品价格的计算;4、总价的计算;5、删除商品。

⼀、界⾯布局使⽤的是table来进⾏布局,由于⽤js来获取tr 和 td节点的时候,可以获取带下标的元素集合,操作起来较为便利。

html+css的代码如下:<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>购物车</title><style>*{margin:0px; padding:0px;}table,td,td{border:1px solid #000000;font-size:10px;}table{display: block;}img{float:left;}tr{text-align: center;}#box{width:900px;}#cart{float:left;border-collapse:collapse;}#head{background:#F0FFFF;}#settlement{margin-top:20px;width:805px;height:30px;border:1px solid #EBEBEB;float:left;background: #EBEBEB;font-size:10px;line-height:30px ;}#settlement div{float:left;}#addupto{color:#ff0000;font-weight:700;}#NumofGoods{color:#ff0000;font-weight:700;}.goods{padding:5px;text-align: left;.number{position:relative;left:19px;width:60px;height:10px;border:1px solid #cccccc;}.acc{width:40px;height:10px;border-left:0px solid #cccccc;border-right:0px solid #cccccc;line-height: 10px;float:left;}.desymbol{width:10px;height:10px;line-height: 10px;background:#ccc;float:left;cursor:pointer;}.adsymbol{width:10px;height:10px;line-height: 10px;background:#ccc;float:right;cursor: pointer;}/*.dele{cursor: pointer;}*/.total{color:#ff0000;font-weight:700;}</style></head><body><div id="box"><table id="cart"><tr id="head"><td width="50px"><input type="checkbox"></td><td width="400px">商品</td><td width="100px">单价</td><td width="100px">数量</td><td width="100px">⼩计</td><td width="50px">操作</td></tr><tr><td><input type="checkbox"></td><td><img src="img/goods1.jpg">外星⼈笔记本电脑17 R4 15R3 13⼨ 17⼨ alienware今晚吃鸡游戏本</td> <td>12888.00</td><td><div><div>-</div><div>1</div><div>+</div></div></td><td></td><td>删除</td></tr><tr><td><input type="checkbox"></td><td><img src="img/goods2.jpg">任天堂(Nintendo)Switch 家⽤游戏机掌机NS智能体感游戏主机</td> <td>2258.00</td><td><div><div>-</div><div>1</div><div>+</div></div></td><td></td><td>删除</td></tr><tr><td><input type="checkbox"></td><td><img src="img/goods3.jpg">Microsoft/微软 Surface Pro i5 8G 256G 笔记本平板电脑⼆合⼀</td><td>4999.00</td><div><div>-</div><div>1</div><div>+</div></div></td><td></td><td>删除</td></tr><tr><td><input type="checkbox"></td><td><img src="img/goods4.jpg">Apple/苹果 10.5 英⼨ iPad Pro</td><td>3666.00</td><td><div><div>-</div><div>1</div><div>+</div></div></td><td></td><td>删除</td></tr></table><div id="settlement"><div style="width:550px"><input type="checkbox"> 全选</div><div style="width:120px">全选商品<span id="NumofGoods"></span><span>件^</span></div> <div style="width:80px">合计:¥<span id="addupto"></span></div><div style="width:50px;text-align: center;border-left:1px solid #000000;">结算</div></div></div><script src="cart.js"></script></body></html>⼆、javascript代码⾃⾏封装了getClasses()函数,避免兼容性问题。

vuex实现购物车的增加减少移除

vuex实现购物车的增加减少移除

vuex实现购物车的增加减少移除本⽂实例为⼤家分享了vuex实现购物车增加减少移除的具体代码,供⼤家参考,具体内容如下1.store.js(公共的仓库)import Vue from 'vue'import Vuex from 'vuex'e(Vuex)export default new Vuex.Store({state: {carList: [] //购物车的商品},mutations: {// 加addCar(state, params) {let CarCon = state.carList;// 判断如果购物车是否有这个商品,有就只增加数量,否则就添加⼀个// some 只要有⼀个isHas为true,就为truelet isHas = CarCon.some((item) => {if (params.id == item.id) {item.num++;return true;} else {return false;}})if (!isHas) {let obj = {"id": params.id,"title": params.title,"price": params.price,"num": 1,}this.state.carList.push(obj)}},// 减reducedCar(state,params){let len=state.carList.length;for(var i=0;i<len;i++){if(state.carList[i].id==params.id){state.carList[i].num--if(state.carList[i].num==0){state.carList.splice(i,1);break;}}}},//移出deleteCar(state,params){let len=state.carList.length;for(var i=0;i<len;i++){if(state.carList[i].id==params.id){state.carList.splice(i,1);break;}}},// 初始化购物车,有可能⽤户⼀登录直接进⼊购物车// initCar(state, car) {// state.carList = car// },},actions: {// 加addCar({ commit }, params) {// console.log(params) //点击添加传过来的参数// 使⽤setTimeout模拟异步获取购物车的数据setTimeout(function () {let result = 'ok'if (result == 'ok') {// 提交给mutationscommit("addCar", params)}}, 100)},// 减reducedCar({ commit }, params) {// console.log(params) //点击添加传过来的参数// 使⽤setTimeout模拟异步获取购物车的数据setTimeout(function () {let result = 'ok'if (result == 'ok') {// 提交给mutationscommit("reducedCar", params)}}, 100)},// 移出deleteCar({ commit }, params) {// console.log(params) //点击添加传过来的参数// 使⽤setTimeout模拟异步获取购物车的数据setTimeout(function () {let result = 'ok'if (result == 'ok') {// 提交给mutationscommit("deleteCar", params)}}, 100)}// initCar({ commit }) {// setTimeout(function () {// let result = 'ok'// if (result == 'ok') {// // 提交给mutations// commit("initCar", [{// "id": 20193698,// "title": '我是购物车原来的',// "price": 30,// "num": 100,// }])// }// }, 100)// }},getters: {//返回购物车的总价totalPrice(state) {let Carlen = state.carList;let money = 0;if (Carlen.length != 0) {Carlen.forEach((item) => {money += item.price * item.num})return money;} else {return 0;}},//返回购物车的总数carCount(state) {return state.carList.length}},})2. list.vue(商品列表)<template><!-- 商品列表 --><div id="listBox"><!-- --><router-link :to="{path:'/car'}" style="line-height:50px">跳转到购物车</router-link> <el-table :data="tableData" border style="width: 100%"><el-table-column fixed prop="id" align="center" label="商品id"></el-table-column><el-table-column prop="title" align="center" label="商品标题"></el-table-column><el-table-column prop="price" align="center" label="商品价格"></el-table-column><el-table-column label="操作" align="center"><template slot-scope="scope"><el-button @click="addCar(scope.row)" type="text" size="small">加⼊购物车</el-button></template></el-table-column></el-table></div></template><script>export default {name: "listBox",data() {return {tableData: [] //商品列表};},methods: {// 初始化商品列表initTable(){this.$gAjax(`../static/shopList.json`).then(res => {console.log(res)this.tableData=res;})["catch"](() => {});},// 加⼊购物车addCar(row){// console.log(row)// 提交给store⾥⾯actions 由于加⼊购物车的数据要同步到后台this.$store.dispatch('addCar',row)}},mounted () {this.initTable()}};</script><style>#listBox {width: 900px;margin: 0 auto;}</style>3. car.vue(购物车)<template><!-- 购物车 --><div id="carBox"><!-- 商品总数 --><h2 style="line-height:50px;font-size:16px;font-weight:bold">合计:总共{{count}}个商品,总价{{totalPrice}}元</h2> <p v-if="count==0">空空如也!·······</p><div v-else><el-table :data="carData" border style="width: 100%"><el-table-column fixed prop="id" align="center" label="商品id"></el-table-column><el-table-column prop="title" align="center" label="商品标题"></el-table-column><el-table-column prop="price" align="center" label="商品价格"></el-table-column><el-table-column label="操作" align="center"><template slot-scope="scope"><el-button @click="reduceFun(scope.row)" type="text" size="small">-</el-button><span >{{scope.row.num}}</span><el-button @click="addCar(scope.row)" type="text" size="small">+</el-button><el-button @click="deleteFun(scope.row)" type="text" size="small">删除</el-button></template></el-table-column></el-table></div></div></template><script>export default {name: "carBox",data() {return {};},computed: {//购物车列表carData() {return this.$store.state.carList;},//商品总数count() {return this.$store.getters.carCount;},//商品总价totalPrice() {return this.$store.getters.totalPrice;}},methods: {// 增加数量addCar(row){this.$store.dispatch('addCar',row)},// 减数量reduceFun(row){this.$store.dispatch('reducedCar',row)},// 删除deleteFun(row){this.$store.dispatch('deleteCar',row)}// ⽤户⾸次登录请求购物车的数据// initCar(){// this.$store.dispatch('initCar')// }},created () {// this.initCar();},mounted() {}};</script><style>#carBox {width: 900px;margin: 0 auto;}</style>以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

js类的使用案例

js类的使用案例

js类的使用案例JavaScript 是一种基于对象的语言,它支持使用类来定义对象和对象之间的关系。

类可以帮助开发人员组织代码,使其更易于理解和维护。

下面是一些使用JavaScript 类的实际案例:1. 购物车类购物车是电子商务网站中常见的功能,可以使用类来实现。

购物车类可以包含添加商品、删除商品、计算总价等功能。

以下是购物车类的一个简单示例:javascriptclass ShoppingCart {constructor() {this.items = [];}addItem(item) {this.items.push(item);}removeItem(item) {this.items = this.items.filter(i => i !== item);}calculateTotalPrice() {return this.items.reduce((total, item) => total + item.price, 0); }}class Item {constructor(name, price) { = name;this.price = price;}}使用购物车类const cart = new ShoppingCart();const item1 = new Item("手机", 1000);const item2 = new Item("电视", 2000);cart.addItem(item1);cart.addItem(item2);console.log(cart.calculateTotalPrice()); 输出:3000cart.removeItem(item1);console.log(cart.calculateTotalPrice()); 输出:2000上面的代码定义了一个ShoppingCart 类和一个Item 类。

js购物应用设计实验报告

js购物应用设计实验报告

js购物应用设计实验报告
实验名称:js购物应用设计
实验目的:通过设计一个基于JavaScript 的购物应用,学习和掌握JavaScript 的基本语法和应用。

实验步骤:
1. 实验环境搭建:需要安装一个支持JavaScript 的浏览器,如Chrome、Firefox 等。

2. 页面布局设计:使用HTML 和CSS 实现购物应用的基本页面布局,包括商品列表、购物车、结算等部分。

3. 数据模拟:使用JavaScript 创建并模拟商品数据,包括商品的名称、价格、库存等信息。

4. 商品列表展示:使用JavaScript 动态生成商品列表,并显示商品的名称、价格等信息,同时实现商品的搜索、排序等功能。

5. 购物车功能实现:通过JavaScript 实现购物车的添加、删除、修改数量等功能,同时实现购物车中商品的总价计算。

6. 结算功能实现:通过JavaScript 实现结算功能,包括选择结算商品、计算商品总价、输入优惠码等功能。

7. 页面优化:通过调整布局、使用响应式设计等方式优化购物应用的页面展示效果。

实验结果:成功设计并实现了一个基于JavaScript 的购物应用,具备商品列表展示、购物车功能和结算功能。

实验总结:通过这个实验,我学习了JavaScript 的基本语法和应用,掌握了如
何使用JavaScript 创建和操作DOM 元素,实现动态生成页面内容和交互功能。

这个实验对我理解和掌握前端开发的基本知识有很大帮助,并且让我对JavaScript 的应用范围和潜力有了更深的认识。

我相信通过不断的实践和学习,我能够进一步提升自己在前端开发领域的能力。

js实现购物车加减和价格运算

js实现购物车加减和价格运算

js实现购物车加减和价格运算本⽂实例为⼤家分享了js实现购物车加减和价格运算的具体代码,供⼤家参考,具体内容如下主要实现功能:购物车的加减,单件商品价格的运算,总价格的运算。

价格保留两位⼩数。

<div class="content"><div class="logo"><img src="images/dd_logo.jpg"><span onclick="guan()">关闭</span></div><div class="cartList" id="zong"><ul><li >¥21.90</li><li><input type="button" name="minus" value="-" onclick="jian()"><input type="text" name="amount" value="1" id="shang"><input type="button" name="plus" value="+" onclick="jia()"></li><li>¥<input type="text" name="price" value="21.90" id="yiqian"></li><li><p onclick="shou()">移⼊收藏</p><p onclick="shan()">删除</p></li></ul><ul><li >¥24.00</li><li><input type="button" name="minus" value="-" onclick="jian1()"><input type="text" name="amount" value="1" id="shang1"><input type="button" name="plus" value="+" onclick="jia1()"></li> <li>¥<input type="text" name="price" value="24.00"id="erqian" ></li><li><p onclick="shan()">移⼊收藏</p><p onclick="shan()">删除</p></li></ul><ol><li id="totalPrice" > 0.00</li><li><span onclick="jie()">结算</span></li></ol></div><h3 id="shijian">现在是:</h3></div>上边是html页⾯以下是JS脚本var price = 0.00;var price1 = 0.00;var price2 = 0.00;function jian() {var i = parseInt(document.getElementById("shang").valueOf().value) - 1;if (i <= 0) {i = 0;}document.getElementById("shang").valueOf().value = i;price1 = 21.90 * i;document.getElementById("yiqian").value=suan(price1);zong();}function jia() {var i = parseInt(document.getElementById("shang").valueOf().value) + 1;document.getElementById("shang").valueOf().value = i;price1 = 21.90 * i;document.getElementById("yiqian").value=suan(price1);zong();}function jian1() {var i = parseInt(document.getElementById("shang1").valueOf().value) - 1;if (i <= 0) {i = 0;}document.getElementById("shang1").valueOf().value = i;price2 = 24.00 * i;document.getElementById("erqian").value=suan(price2);zong();}function jia1() {var i = parseInt(document.getElementById("shang1").valueOf().value) + 1;document.getElementById("shang1").valueOf().value = i;price2 = 24.00 * i;document.getElementById("erqian").value=suan(price2);zong();}function suan(number) {price = price1 + price2;if (isNaN(number)) {return false;}number = Math.round(number * 100) / 100;var s = number.toString();var rs = s.indexOf(".");if (rs < 0) {rs = s.length;s += ".";}while (s.length <= rs + 2) {s += "0";}return s;}function zong() {price = price1 + price2;if (isNaN(price)) {return false;}price = Math.round(price * 100) / 100;var s = price.toString();var rs = s.indexOf(".");if (rs < 0) {rs = s.length;s += ".";}while (s.length <= rs + 2) {s += "0";}document.getElementById("totalPrice").innerHTML=s;}⽤的是最基本的⽅式,便于初学者看懂,特别是知识点有短板的额,基本上都能看懂。

js实现简单购物车模块

js实现简单购物车模块

js实现简单购物车模块本⽂实例为⼤家分享了js实现简单购物车模块的具体代码,供⼤家参考,具体内容如下主要功能输⼊框正则判断,两位数⼩数,开头可以为0如果商品名字相同,⾃动数量+1,如果名字相同,价格不同,以最新价格为准(有bug,多个商品⽆法操作。

程序混乱,随后在改)选住商品,或添加减少数量,都会⾃动更新右下⾓的价格和数量结算过的商品⾃动消失源码:1.html<body><div id="head" align="center"><form><span class="font1">名称:</span><input type="text" id="name"><span class="font1">单价:</span><input type="text" id="price"><input id="add1" type="button" value="添加"><input id="pay1" type="button" value="结算"><input id="set1" type="reset" value="重置"></form></div><div><table border="1" id="t" ><thead><tr align="center"><td><input type="checkbox" style='cursor: pointer'></td><td>商品名称</td><td>价格</td><td>数量</td><td>操作</td></tr></thead><tbody></tbody></table></div><div align="right" id="b"><span>总价:</span><span id="Total" style="color: red">0</span>&nbsp; <span>商品数量:</span><span id="TotalNum" style="color: red">0</span> </div></body>2.css<style>body{background-color: coral;}#head{margin:30px auto 10px auto;}#name,#price{background-color: aquamarine;}#add1,#pay1,#set1{color: red;font-weight: bold;background-color: gold;cursor: pointer;}.font1{font-weight: bold;font-size: large;}#t,#b{border-collapse: collapse;margin: 30px auto;width: 600px;}#t thead{border: 3px solid gold;color: white;background-color: blue;}#t tbody{color: #1414bf;background-color: white;}</style>js部分<script src="../lib/jquery-3.3.1.js"></script><script>//初始化按钮function initButton(){$("input[name=j1]").off();$("input[name=x1]").off();//添加数量按钮$("input[name=j1]").on("click", function (){var num = parseInt($(this).prev().val());if (num > 1){$(this).prev().prev().attr("disabled",false);}if (num > 9){$(this).attr("disabled","disabled");return;}num++;if (num > 1){$(this).prev().prev().attr("disabled",false);}if (num > 9){$(this).attr("disabled","disabled");}$(this).prev().val(num);$("#Total").text(cal());$("#TotalNum").text(calNum());})//减少数量按钮$($("input[name=x1]")).click(function (){var num = parseInt($(this).next().val());if (num-1 < 10){$("#add1").prop("disabled",false);}num--;if (num < 10){$(this).next().next().prop("disabled",false);}if (num == 1){$(this).prop("disabled","disabled");}$(this).next().val(num);$("#Total").text(cal());$("#TotalNum").text(calNum());});}//初始化删除function initdelete(){$(".delete").on("click",function (){$(this).parent().parent().remove();$("#Total").text(cal());$("#TotalNum").text(calNum());});}//全选或全不选功能$("thead input[type=checkbox]").on("click",function (){$("tbody input[type=checkbox]").each(function (index,element){$(this).prop("checked",$("thead input[type=checkbox]").prop("checked"));$("#Total").text(cal());$("#TotalNum").text(calNum());});})//初始化每个选框选中的⽅法function initCheckBox(){$("tbody input[type=checkbox]").off();$("tbody input[type=checkbox]").on("change",function (){$("#Total").text(cal());$("#TotalNum").text(calNum());});}//计算总价function cal(){var price = null;$("tbody input[type=checkbox]:checked").each(function (){var priceByOne = parseFloat($(this).parent().next().next().text());var num = parseFloat($(this).parent().next().next().next().find("input[name='num']").val()); var totalMoneyByone = priceByOne * num;price+= totalMoneyByone ;});return price;}//计算总的数量function calNum(){var totalNum = null;$("tbody input[type=checkbox]:checked").each(function (){var num = parseInt($(this).parent().next().next().next().find("input[name='num']").val()); totalNum+=num;});return totalNum;}//结算$("#pay1").on("click",function (){alert("⼀共消费:"+cal());$("thead input[type=checkbox]:checked").prop("checked",false);$("tbody input[type=checkbox]:checked").parent().parent().remove();});//添加$("#add1").on("click",function (){var name = $("#name").val();var price = $("#price").val();var priceZ = /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/if ((name == "" || price == "") ||(!priceZ.test(price)) ){alert("输⼊错误!");}else {var GameArr = [];var flag = false;var repeat = null;//得到名字数组$("tbody").each(function (){var finds = $(this).find(".goodsName");for (let i = 0; i < finds.length; i++) {GameArr.push(finds.eq(i).text());}});for (let i = 0; i < GameArr.length; i++) {if (name == GameArr[i]){repeat = i;flag = true;break;}}//如果有相同名字,改数量和价格if (flag == true){var totalNum = parseInt($("tbody:eq(" + repeat + ")").find("input[name='num']").val())+1;if (totalNum > 9){$(this).attr("disabled","disabled");}$("tbody:eq(" + repeat + ")").find("input[name='num']").val(totalNum);$("tbody:eq(" + repeat + ")").find(".goodsPrice").text(price);//否则拼接表格}else {var goods = "<tr>"+"<td><input type='checkbox' style='cursor: pointer'></td>"+"<td class='goodsName'>"+name+"</td>"+"<td class='goodsPrice'>"+price+"</td>"+"<td>"+"<input type='button' value='-' name='x1' style='cursor: pointer'>&nbsp;"+"<input type='text' value='1' name='num'>&nbsp;"+"<input type='button' value='+' name='j1' style='cursor: pointer'>"+"</td>"+'<td><a href="" class=" rel="external nofollow" delete" style="color:red">删除</a></td>' + "</tr>"$("tbody").append(goods);//每次添加完,绑定事件initButton();initdelete();initCheckBox();}}});</script>以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

JS实现简单加减购物车效果

JS实现简单加减购物车效果

JS实现简单加减购物车效果本⽂实例为⼤家分享了JS实现简单加减购物车的具体代码,供⼤家参考,具体内容如下1.书写input输⼊框作为加减实现的效果。

2.加减按钮⽤button按钮来实现3.利⽤js控制i的值作为输⼊框中的值。

实现的效果:完整代码如下:<!DOCTYPE html><html><head><meta charset="utf-8" /><title></title><style>body{margin: 0;padding: 0;}.box{border: red solid 1px;height: 40px;width: 200px;margin: 200px auto;text-align: center;padding-top: 20px;}.box input{width: 40px;text-align: center;}#money{border: none;text-align: left;margin-left: 2px;}ul{list-style: none;}ul li{display: block;float: left;vertical-align: middle;}</style><script>window.onload = function(){var plus = document.getElementById("plus");var i = document.getElementById("text").value;var subtract = document.getElementById("subtract");var money = document.getElementById("money").value;plus.onclick = function(){i++;document.getElementById("text").value = i;document.getElementById("money").value = i*money;}subtract.onclick = function(){if (i>0) {i--;document.getElementById("text").value = i;document.getElementById("money").value = i*money;} else{i=0;document.getElementById("text").value = i;document.getElementById("money").value = i*money;}}}</script></head><body><ul class="box"><li><button id="plus">+</button></li><li><input type="text" id="text" value="1"/></li><li><button id="subtract">-</button></li><li>&nbsp;&nbsp;&nbsp;¥<input type="text" id="money" value="88"/></li></ul></body></html>以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

Javascript实现购物车功能的详细代码

Javascript实现购物车功能的详细代码

Javascript实现购物车功能的详细代码我们肯定都很熟悉商品购物车这⼀功能,每当我们在某宝某东上购买商品的时候,看中了哪件商品,就会加⼊购物车中,最后结算。

购物车这⼀功能,⽅便消费者对商品进⾏管理,可以添加商品,删除商品,选中购物车中的某⼀项或⼏项商品,最后商品总价也会随着消费者的操作随着变化。

现在,笔者对购物车进⾏了简单实现,能够实现真实购物车当中的⼤部分功能。

在本⽰例当中,⽤到了javascript中BOM操作,DOM操作,表格操作,cookie,json等知识点,同时,采⽤三层架构⽅式对购物车进⾏设计,对javascript的综合应⽤较强,对javascript初学者进阶有⼀定的益处。

请看主页效果图:现在读者已经对主页的效果图进⾏了了解,我在这⾥附上主页的html代码,供读者参考,建议读者根据⾃⼰的思路写代码。

请看html代码:<!DOCTYPE html><html><head><meta charset="utf-8" /><title>商品列表页⾯</title><!--商品列表样式表--><link rel="stylesheet" type="text/css" href="../css/index.css" rel="external nofollow" /><!--cookie操作的js库--><script src="../js/cookie.js" type="text/javascript" charset="utf-8"></script></head><body><div class="container"><h1>商品列表</h1><div class="mycar"><a href="cart.html" rel="external nofollow" >我的购物车</a><i id="ccount">0</i></div><div class="list"><dl pid="1001"><dt><img src="../images/p1.jpg" /></dt><dd>智能⼿表</dd><dd>酷⿊,棒,棒,棒,棒</dd><dd>¥<span>998</span></dd><dd><button>添加购物车</button></dd></dl><dl pid="1002"><dt><img src="../images/p2.jpg" /></dt><dd>智能⼿机001</dd><dd>⾦红⾊,酷酷酷酷</dd><dd>¥<span>1998</span></dd><dd><button>添加购物车</button></dd></dl><dl pid="1003"><dt><img src="../images/p3.jpg" /></dt><dd>华为⼿机002</dd><dd>帅帅帅帅帅帅帅帅帅帅</dd><dd>¥<span>998</span></dd><dd><button>添加购物车</button></dd></dl><dl pid="1004"><dt><img src="../images/p4.jpg" /><dd>华为⼿机003</dd><dd>杠杠的</dd><dd>¥<span>2000</span></dd><dd><button>添加购物车</button></dd></dl></div></div><!--描述:数据访问层,操作本地数据的模块--><script type="text/javascript" src="../js/server.js"></script><!--描述:本页⾯的js操作--><script type="text/javascript" src="../js/index.js"></script></body></html>html结构代码有了之后,就可以对主页进⾏css表现设计,这⾥不对css进⾏过多讲解。

node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例

node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例

node.js使⽤mongoose操作数据库实现购物车的增、删、改、查功能⽰例本⽂实例讲述了node.js使⽤mongoose操作数据库实现购物车的增、删、改、查功能。

分享给⼤家供⼤家参考,具体如下:1、数据库操作语句Mongoose通过model实现对每个集合的操作,在使⽤前需要先定义model:goods。

①、增加数据:从集合中查询⼀条记录,并返回doc,对doc操作之后通过save()保存到集合goods.findOne({productId},(err,goodsDoc)=>{goodsDoc.productNum=1;goodsDoc.save(err,doc);});②、删除数据:model.remove(conditions,callback(){})③、修改数据:model.update(conditions,updates,callback(){})④、查询数据:model.find(conditions,callback(){})2、添加购物车在mongodb中新建⽤户user集合,user中有cartList数组,⽤户点击添加购物车时在前端发出post请求包括⽤户、商品的id。

然后在后端查询到对应的⽤户,将其cartList中的商品id进⾏⽐对,如果在其中,则把商品数量+1,否则从商品集合中查询商品信息,插⼊到cartList数组中。

前端添加购物车请求:addCart(productId){//加⼊购物车axios.post('./users/addCart',{userId:"100000077",productId:productId}).then((response)=>{let res=response.data;console.log(res.msg);});}后端处理:var express = require('express');var router = express.Router();const mongoose=require('mongoose');var user=require('../models/userModel');var goods=require('../models/productModel');//连接数据库mongoose.connect('mongodb://localhost:27017/mall');mongoose.connection.on('connected',()=>{console.log("mongoDB连接成功");});//处理添加购物车请求router.post('/addCart',(req,res,next)=>{let userId=erId;let productId=req.body.productId;let params={userId};user.findOne(params,(err,userDoc)=>{//查询对应⽤户信息if (err){res.json({status:1,msg:err.message});}else{if(userDoc){let inCart=false;userDoc.cartList.forEach(function(item){//遍历cartList⽐对商品idif (item.productId==productId){ //若商品在购物车内,数量增加inCart=true;item.productNum++;saveDoc(userDoc,res);}});//所选商品不在购物车内,则从商品列表内查找并添加到购物车if(!inCart){goods.findOne({productId},(err,goodsDoc)=>{if(err){res.json({status:1,msg:err.message})}else{goodsDoc.checked=true;goodsDoc.productNum=1;userDoc.cartList.push(goodsDoc);//将商品插⼊到⽤户cartList数组内console.log(userDoc.cartList);saveDoc(userDoc,res);}});}}}})});利⽤doc.save将修改后的⽂档保存到数据库function saveDoc(doc,res) {//保存操作doc.save((err,doc)=>{if (err){res.json({status:1,msg:err.message})}else {res.json({status:0,msg:"添加购物车成功",result:'success'})}})}3、从购物车删除数据前端点击删除按钮,调⽤deleteCart()发出post请求,删除成功重新加载购物车列表 deleteCart(){axios.post('users/deleteCart',{productId:this.productId}).then((response,err)=>{let res=response.data;if(res.status===0){this.getCart();this.modalShow=false;}})},后端获取到删除商品的id、⽤户的id,删除数据库中指定条⽬router.post('/deleteCart',(req,res)=>{"use strict";let productId=req.body.productId;let userId=erId;user.update({userId:userId},{$pull:{cartList:{productId:productId}}},(err,doc)=>{if(err){res.json({status:1,msg:'数据库删除失败'})}else{if(doc){res.json({status:0,msg:'购物车删除成功'})}}})});4、修改购物车前端对不同的按钮点击,实现购物车数量的增、减、选中的改变,调⽤editCart(opt,item),然后将修改的数据以post发送editCart(flag,item){if(flag==='check'){item.checked=!item.checked;}else if(flag==='add'){item.productNum++;}else if(flag==='sub'){item.productNum<=0 ? item.productNum=0 : item.productNum++ ;}axios.post('users/editCart',{productId:item.productId,checked:item.checked,productNum:item.productNum}).then((response,err)=>{let res=response.data;if(res.status===0){this.getCart();}else{console.log(res.msg);}})}后端接收要修改的数据,并对数据库进⾏更新:router.post('/editCart',(req,res)=>{"use strict";let productId=req.body.productId;let checked=req.body.checked;let productNum=req.body.productNum;let userId=erId;user.update({userId:userId,'cartList.productId':productId},{$set:{"cartList.$.checked":checked,"cartList.$.productNum":productNum}},(err,doc)=>{if(err){res.json({status:1,msg:err.message})}else {res.json({status:0,msg:'购物车更新成功'})}})});5、查询购物车前端发送查询购物车get请求,将结果数据赋予catList,页⾯遍历cartList渲染数据getCart(){axios.get('users/getCart').then((response,err)=>{let res=response.data;if(res.status===0){this.cartList=res.result.list;}else{console.log(res.msg);}})},后端根据⽤户的cookie,查询指定的⽤户的购物车router.get('/getCart',(req,res)=>{"use strict";user.findOne({userId:erId},(err,doc)=>{if(doc){res.json({status:0,msg:'',result:{list:doc.cartList}})}else{res.json({status:1,msg:"购物车列表查询失败"})}})});6、购物车的总价与全选利⽤vue的计算属性可以实现属性的随时变化,计算属性只有在相关数据发送改变时才会随之改变,计算属性的实现像函数,但使⽤类似于⼀般属性,例如总价totalPrice与判断是否全部选中allSelected:computed:{totalPrice(){let total=0;this.cartList.forEach((item)=>{if(item.checked)total+=parseFloat(item.salePrice)*parseInt(item.productNum);});return total;},allSelected(){let selected=true;this.cartList.forEach((item)=>{selected=selected&&item.checked;});console.log(selected);return selected;}},计算属性totalPrice由每个商品单价*数量⽽来,当其中有⼀个改变时,总价会⽴即改变,显⽰在页⾯中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档