原生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 相关文章推荐
文件编码导致jquery失效的解决方法
Jun 26 Javascript
javascript 得到文件后缀名的思路及实现
May 09 Javascript
jQuery侧边栏实现代码
May 06 Javascript
jQuery实现根据滚动条位置加载相应内容功能
Jul 18 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
Aug 05 Javascript
原生JS实现简单放大镜效果
Feb 08 Javascript
Node.JS中事件轮询(Event Loop)的解析
Feb 25 Javascript
ES6入门教程之let和const命令详解
May 17 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
Jun 13 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
Feb 26 Javascript
基于Vuex无法观察到值变化的解决方法
Mar 01 Javascript
原生JS实现微信通讯录
Jun 18 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
JavaScript创建命名空间的5种写法
2014/06/24 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
2019/05/14 jQuery
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
2020/07/17 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
python执行使用shell命令方法分享
2017/11/08 Python
Python中常用信号signal类型实例
2018/01/25 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
django如何通过类视图使用装饰器
2019/07/24 Python
Python的Lambda函数用法详解
2019/09/03 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
办公室文秘自我评价
2013/09/21 职场文书
《火烧云》教学反思
2014/04/12 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
求职导师推荐信范文
2015/03/27 职场文书
三十年同学聚会感言
2015/07/30 职场文书
Python字符串的转义字符
2022/04/07 Python