javascript--实现购物车的实例分享

简介: 购物车对于大部分用户来说肯定都不陌生,每当双十一、双十二,我们都要把自己想要买的东西,提前加入购物车中,等到11月11号的凌晨抢时间抓紧下单。这对于用户来说,既可以管理自己想要购买的物品,又可以在购物车中进行选择。

购物车对于大部分用户来说肯定都不陌生,每当双十一、双十二,我们都要把自己想要买的东西,提前加入购物车中,等到11月11号的凌晨抢时间抓紧下单。这对于用户来说,既可以管理自己想要购买的物品,又可以在购物车中进行选择。对于所有的购物用户来说都很方便、直观。

但是一些对于用户来说方便、简洁的功能,对于开发者来说会很复杂。为了给用户提供便捷的功能,其中大量复杂的业务逻辑都是开发者处理了。不过开发者在看到自己的成果之后,会很有成就感,也就不会在乎那些曾经的那些付出。

第一步,实现购物车的样式布局结构:

<body>
          <div class="header">
              <div class="container clearfix">
                  <div class="header-logo fl">
                      <a class="logo ir" href="" title="">购物车</a>
                  </div>
                  <div class="header-title fl" id="J_miniHeaderTitle">
                      <h2 style="font-size: 30px;">我的购物车</h2>
                  </div>
                  <div class="topbar-info fr" id="J_userInfo">
                      <a class="link" href="">登录</a><span class="sep">|</span><a class="link" href="">注册</a>
                  </div>
              </div>
          </div>

          <div id="car" class="car">
              <div class="head_row hid">
                  <div class="check left"> <i onclick="checkAll()">√</i></div>
                  <div class="img left">&nbsp;&nbsp;全选</div>
                  <div class="name left">商品名称</div>
                  <div class="price left">单价</div>
                  <div class="number left">数量</div>
                  <div class="subtotal left">小计</div>
                  <div class="ctrl left">操作</div>
              </div>
          </div>
          <div id="sum_area">
              <div id="pay">去结算</div>
              <div id="pay_amout">合计:<span id="price_num">0</span>元</div>
          </div>
          <div id="box">
              <h2 class="box_head"><span>买购物车中商品的人还买了</span></h2>
              <ul>
              </ul>
          </div>
      </body>

上述示例代码完成了整个购物车页面的HTML结构,在HTML结构中,我们将样式相同的模块进行提取,通过使用js循环的方式,根据商品的数量进行循环生成商品列表。如果是在与后台的交互过程中,后台工程师也会将商品组合成一个list列表给我们前端工程师。

接下来,就需要给浏览器的页面添加样式效果,这里的样式就让大家自己去完成了。循环给页面赋值,最终生成商品列表的代码如下:

window.onload = function() {
                var aData = [{
                        "imgUrl": "img/03-car-01.png",
                        "proName": " 手环4 NFC版 ",
                        "proPrice": "229",
                        "proComm": "1"
                    },
                    {
                        "imgUrl": "img/03-car-02.png",
                        "proName": " AirDots真无线蓝牙耳机 ",
                        "proPrice": "99",
                        "proComm": "9.7"
                    },
                    {
                        "imgUrl": "img/03-car-03.png",
                        "proName": " 蓝牙温湿度计 ",
                        "proPrice": "65",
                        "proComm": "1.3"
                    },
                    {
                        "imgUrl": "img/03-car-04.png",
                        "proName": " 小爱智能闹钟 ",
                        "proPrice": "149",
                        "proComm": "1.1"
                    },
                    {
                        "imgUrl": "img/03-car-05.png",
                        "proName": "电子温湿度计Pro  ",
                        "proPrice": "750",
                        "proComm": "0.3"
                    },
                    {
                        "imgUrl": "img/03-car-06.png",
                        "proName": "手环3 NFC版 Pro  ",
                        "proPrice": "199",
                        "proComm": "3.3"
                    },
                    {
                        "imgUrl": "img/03-car-07.png",
                        "proName": " 手环3 / 4 通用腕带",
                        "proPrice": "19.9",
                        "proComm": "1.2"
                    },
                    {
                        "imgUrl": "img/03-car-08.png",
                        "proName": "温湿度传感器 ",
                        "proPrice": "45",
                        "proComm": "0.6"
                    },
                    {
                        "imgUrl": "img/03-car-09.png",
                        "proName": "电子温湿度计Pro 3个装  ",
                        "proPrice": "207",
                        "proComm": "0.3"
                    },
                    {
                        "imgUrl": "img/03-car-10.png",
                        "proName": "手环3 ",
                        "proPrice": "199",
                        "proComm": "7.2"
                    }
                ];
                var oBox = document.getElementById("box");
                var oUl = document.getElementsByTagName("ul")[0];

                for (var i = 0; i < aData.length; i++) {
                    var oLi = document.createElement("li");
                    var data = aData[i];

                    oLi.innerHTML += '<div class="pro_img"><img src="' + data["imgUrl"] + '" width="150" height="150"></div>';
                    oLi.innerHTML += '<h3 class="pro_name"><a href="#">' + data["proName"] + '</a></h3>';
                    oLi.innerHTML += '<p class="pro_price">' + data["proPrice"] + '元</p>';
                    oLi.innerHTML += '<p class="pro_rank">' + data["proComm"] + '万人好评</p>';
                    oLi.innerHTML += '<div class="add_btn">加入购物车</div>';
                    oUl.appendChild(oLi);

                }
}

实现的购物车静态页面效果如下:

_

最后,也是最复杂的部分,就是处理购物车的业务逻辑,我们要在商品上点击加入购物车,商品会自动展示在购物车模块中,加入多个商品,勾选商品前的选择复选框,可以进行核算商品的总价格,去结算。还可以删除已加入购物车的商品。

实现商品价格合计方法的代码:

//进行价格合计
          function getAmount() {
              // console.log(ys);
              ns = document.getElementsByClassName("i_acity");
              console.log(ns);
              sum = 0;
              //选中框
              document.getElementById("price_num").innerText = sum;
              for (y = 0; y < ns.length; y++) {
                  //小计
                  amount_info = ns[y].parentElement.parentElement.lastElementChild.previousElementSibling;
                  num = parseInt(amount_info.innerText);
                  sum += num;
                  document.getElementById("price_num").innerText = sum;
              }
          }

不管我们进行购物车中复选框的勾选功能,还是购物车的删除商品功能,还是进行商品的加减,都需要进行价格的核算。所以这个方法是很重要的。

最终实现的购物车的功能如下:

_

目录
相关文章
|
6月前
|
JavaScript
当当网上书店购物车——JS源码
当当网上书店购物车——JS源码
|
1月前
|
前端开发 JavaScript
基础 JavaScript 实例
基础 JavaScript 实例
21 1
|
6月前
|
数据可视化 JavaScript 架构师
D3.js实战:数据可视化高级技巧实例应用
本文介绍了D3.js入门,包括创建HTML文件引入库、绘制简单线图、柱状图和饼图。示例展示了数据绑定、交互性和动画效果,如柱状图的悬停效果和线图的数据平滑过渡。此外,还提及力导向图和地图可视化的实现,以及使用Enter, Update, Exit模式进行动态更新。最后提到了复杂图表和高级技巧,如使用组件库、动画、交互性和性能优化。
121 0
|
3月前
|
缓存 JavaScript 前端开发
Vue.js 2 项目实战(五):水果购物车
Vue.js 2 项目实战(五):水果购物车
|
3月前
|
JavaScript
js之选项卡制作实例
js之选项卡制作实例
27 0
|
5月前
|
设计模式 JSON JavaScript
Javascript实现购物车的详细代码
Javascript实现购物车的详细代码
109 3
|
4月前
|
设计模式 缓存 JavaScript
js设计模式实例
【7月更文挑战第2天】JavaScript设计模式包含工厂、单例、建造者、抽象工厂和代理模式等,它们是最佳实践和可重用模板,解决创建、职责分配和通信等问题。例如,工厂模式封装对象创建,单例确保全局唯一实例,建造者模式用于复杂对象构建,抽象工厂创建相关对象集合,而代理模式则控制对象访问。这些模式提升代码质量、可读性和灵活性,是高效开发的关键。
37 0
|
5月前
|
前端开发 JavaScript 容器
程序技术好文:纯原生javascript下拉框表单美化实例教程
程序技术好文:纯原生javascript下拉框表单美化实例教程
82 0
|
5月前
|
JavaScript BI
技术笔记:JS获取子节点、父节点和兄弟节点的方法实例总结
技术笔记:JS获取子节点、父节点和兄弟节点的方法实例总结
69 0
下一篇
无影云桌面