原生js实现淘宝购物车功能


Posted in Javascript onJune 23, 2020

js淘宝购物车功能描述:

 1、点击“+”,单个商品数量加1,总数量加1;单个商品价格添加,总价也添加。
 2、点击“-”,单个商品数量减1,总数量减1;单个商品价格减少,总价也减少。
 当该商品数量为0时,点击依然为0;
 3、显示出总价,总数量和其中最贵的那个商品的价格。 

瞄一眼效果图:

原生js实现淘宝购物车功能

废话不多说,LU代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
*{padding:0;margin:0;}
#list,p{list-style:none;width:600px;margin:0 auto;}
#list li {width:600px;height:50px;line-height:50px;margin-top:20px;font-size:20px;}
#list li input{width:60px;height:40px;line-height:40px;}
.highlight{color:red;font-size:30px;font-weight:bold;}
</style>
<script>
window.onload = function () {

 var oUl = $('list');
 var totalNumber = $('totalNum');
 var totalPrice = $('totalPrice');
 var mostExpensive = $('mostExpensive');
 var aLi = oUl.getElementsByTagName('li');
 var maxPrice = [0];

 for ( var i = 0; i < aLi.length; i++ ) {
 price(aLi[i]);
 }

 function price(oLi) {

 var aBtn = oLi.getElementsByTagName('input');
 var oStrong = oLi.getElementsByTagName('strong')[0];
 var oEm = oLi.getElementsByTagName('em')[0];
 var oSpan = oLi.getElementsByTagName('span')[0];

 aBtn[0].onclick = function () {
  var num = Number(oStrong.innerHTML);
  var price = parseFloat(oEm.innerHTML);
  var numbers = Number(totalNumber.innerHTML);
  var prices = parseFloat(totalPrice.innerHTML);
  num--;
  if (num === 0) {
  // 如果该商品数量为0,,那么就得把它的价格从价格表中清除 
  var index = maxPrice.indexOf(price);
  if (index > -1) maxPrice.splice(index, 1);
  } else if (num < 0) {
  num = 0; 
  return;
  }
  numbers--;
  oStrong.innerHTML = num;
  oSpan.innerHTML = num * price + '元';
  totalNumber.innerHTML = numbers;
  totalPrice.innerHTML = prices - (num + 1) * price;
  mostExpensive.innerHTML = maxPrice[0];

 }
 aBtn[1].onclick = function () {

  var num = Number(oStrong.innerHTML);
  var price = parseFloat(oEm.innerHTML);
  var numbers = Number(totalNumber.innerHTML);
  var prices = parseFloat(totalPrice.innerHTML);

  num++;
  numbers++;
  if (maxPrice.indexOf(price) < 0) {
  maxPrice.push(price)
  maxPrice.sort(function (a,b) {return b - a});
  }
  oStrong.innerHTML = num;
  oSpan.innerHTML = num * price + '元';
  totalNumber.innerHTML = numbers;
  totalPrice.innerHTML = prices + num * price;
  mostExpensive.innerHTML = maxPrice[0];
 }
 }
 function $(id) {return document.getElementById(id);}
}
</script>
</head>

<body>
<ul id="list">
 <li>
 <input type="button" value="-" />
 <strong>0</strong>
 <input type="button" value="+" />
 单价:<em>12.5元</em>
 小计:<span class="highlight">0元</span>
 </li>
 <li>
 <input type="button" value="-" />
 <strong>0</strong>
 <input type="button" value="+" />
 单价:<em>10.5元</em>
 小计:<span class="highlight">0元</span>
 </li>
 <li>
 <input type="button" value="-" />
 <strong>0</strong>
 <input type="button" value="+" />
 单价:<em>8.5元</em>
 小计:<span class="highlight">0元</span>
 </li>
 <li>
 <input type="button" value="-" />
 <strong>0</strong>
 <input type="button" value="+" />
 单价:<em>8元</em>
 小计:<span class="highlight">0元</span>
 </li>
 <li>
 <input type="button" value="-" />
 <strong>0</strong>
 <input type="button" value="+" />
 单价:<em>14.5元</em>
 小计:<span class="highlight">0元</span>
 </li>
</ul>

<p>
商品合计共:<span class="highlight" id="totalNum">0</span>件,
共花费了:<span class="highlight" id="totalPrice">0</span>元<br />
其中最贵的商品单是:<span class="highlight" id="mostExpensive">0</span>元
</p>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
VBScript版代码高亮
Jun 26 Javascript
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
Mar 26 Javascript
一个轻量级的javascript库 pj介绍
Dec 19 Javascript
Jquery实现仿京东商城省市联动菜单
Nov 19 Javascript
js控件Kindeditor实现图片自动上传功能
Jul 20 Javascript
详细分析Javascript中创建对象的四种方式
Aug 17 Javascript
Node.js包管理器Yarn的入门介绍与安装
Oct 17 Javascript
javascript实现文本框标签验证的实例代码
Oct 14 Javascript
Vue数据绑定实例写法
Aug 06 Javascript
部署vue+Springboot前后端分离项目的步骤实现
May 31 Javascript
详解vue中v-on事件监听指令的基本用法
Jul 22 Javascript
js实现点击选项置顶动画效果
Aug 25 Javascript
jQuery实现拖拽可编辑模块功能代码
Jan 12 #Javascript
jQuery实现倒计时重新发送短信验证码功能示例
Jan 12 #Javascript
js仿京东轮播效果 选项卡套选项卡使用
Jan 12 #Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
Jan 12 #Javascript
JS百度地图搜索悬浮窗功能
Jan 12 #Javascript
原生js实现焦点轮播图效果
Jan 12 #Javascript
详解能在多种前端框架下使用的表格控件
Jan 11 #Javascript
You might like
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
用cssText批量修改样式
2009/08/29 Javascript
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
Python中map和列表推导效率比较实例分析
2015/06/17 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
python如何生成各种随机分布图
2018/08/27 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
食堂员工工作职责
2013/12/18 职场文书
法律专业应届生自荐信范文
2014/01/06 职场文书
庆元旦迎新年广播稿
2014/02/18 职场文书
红头文件任命书范本
2014/06/05 职场文书
大学生就业自荐书
2014/06/16 职场文书
毕业实习计划书
2015/01/16 职场文书
员工离职感谢信
2015/01/22 职场文书
立春观后感
2015/06/18 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
Redis集群的关闭与重启操作
2021/07/07 Redis
Java实现给Word文件添加文字水印
2022/02/15 Java/Android