原生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 相关文章推荐
js加密解密字符串可自定义密码因子
May 13 Javascript
如何编写高质量JS代码
Dec 28 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
Dec 22 Javascript
基于jquery实现图片放大功能
May 07 Javascript
jQuery表单插件ajaxForm实例详解
Jan 17 Javascript
Angular4学习教程之HTML属性绑定的方法
Jan 04 Javascript
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 Javascript
深入理解 Koa 框架中间件原理
Oct 18 Javascript
node(koa2) web应用模块介绍详解
Mar 29 Javascript
详解async/await 异步应用的常用场景
May 13 Javascript
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
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
php获取网页请求状态程序示例
2014/06/17 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
深入探讨前端框架react
2015/12/09 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Java及python正则表达式详解
2017/12/27 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
领导的自我鉴定
2013/12/28 职场文书
环保志愿者活动总结
2014/06/27 职场文书
培训科主任岗位职责
2014/08/08 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
个人工作决心书
2015/09/22 职场文书
2019年年中工作总结讲话稿模板
2019/03/25 职场文书