js中的DOM模拟购物车功能


Posted in Javascript onMarch 22, 2017

效果图:

js中的DOM模拟购物车功能

代码如下:

<!DOCTYPE html>
<html>
 <head>
 <title> new document </title>
 <meta charset="utf-8">
 <style>
 table{
 border:1px solid #000;
 border-collapse:collapse;
 width:600px;
 }
 td{
 border:1px solid #000;
 text-align:center;
 }
 </style>
 </head>
 <body>
 <table>
 <thead>
 <tr>
 <td>名称</td>
 <td>单价</td>
 <td>数量</td>
 <td>小计</td>
 </tr>
 </thead>
 <tbody id="tbody">
 <tr>
 <td>iphone6</td>
 <td>4488</td>
 <td>
  <button onclick="btnClick(this)">-</button>
  <span>1</span>
  <button onclick="btnClick(this)">+</button>
 </td>
 <td>4488</td>
 </tr>
 <tr>
 <td>iphone6</td>
 <td>5288</td>
 <td>
  <button onclick="btnClick(this)">-</button>
  <span>1</span>
  <button onclick="btnClick(this)">+</button>
 </td>
 <td>5288</td>
 </tr>
 <tr>
 <td>iphone6</td>
 <td>4288</td>
 <td>
  <button onclick="btnClick(this)">-</button>
  <span>1</span>
  <button onclick="btnClick(this)">+</button>
 </td>
 <td>4288</td>
 </tr>
 </tbody>
 <tfoot>
 <td colspan="3" align="right">总计:</td>
 <td id="all_total"></td>
 </tfoot>
 </table>
 <script>
 function btnClick(btn){
 //声明 spanValue 变量,用于保存 span中的数据
 var spanValue;
 //1、更改 span 中的数据
 //1.1 判断 btn 是+还是-
 if(btn.textContent == "+"){
 //1.2 根据 btn 找到 span
 var span=btn.previousElementSibling;
 //1.3 获取 span里的数据
 spanValue=parseInt(span.textContent);
 //1.4 更新 span中的数据
 spanValue+=1;
 span.textContent=spanValue;
 }else{
 //减法操作
 var span = btn.nextElementSibling;
 //1.3 获取 span里的数据
 spanValue=parseInt(span.textContent);
 //1.4 更新 span中的数据
 if(spanValue > 1){
  spanValue-=1;
  span.textContent=spanValue;
 }
 }
 //2.计算 小计
 //2.1 先 获取 单价 元素(tdPrice)
 var tdPrice=btn.parentNode.previousElementSibling;
 //2.2 获取 单价 元素中的 数值(price)
 var price=parseInt(tdPrice.textContent);
 //2.3 计算小计(spanValue*price),保存在 total
 var total=price*spanValue;
 //2.4 获取 小计 元素(tdTotal)
 var tdTotal=btn.parentNode.nextElementSibling;
 //2.5 将 total 的值 赋值给 tdTotal元素
 tdTotal.textContent=total;
 //调用 计算总计 的函数
 calAllTotal();
 }
 /**
 * 计算总计
 */
 function calAllTotal(){
 //1、获取 id为tbody 中的所有tr
 var tbody = document.getElementById("tbody");
 var trs=tbody.getElementsByTagName("tr");
 console.log(trs);
 //2、循环遍历所有tr,找到每个tr的最后一个td
 var all_total=0;
 for(var i=0;i<trs.length;i++){
 var tr=trs[i];
 //3、累加 每个 td 的值 计算总计
 //3.1 获取 tr 中的 最后一个td
 var lastTd=tr.lastElementChild;
 var lastTdValue=parseInt(lastTd.textContent);
 all_total += lastTdValue;
 }
 //4、赋值
 document.getElementById("all_total").textContent=all_total;
 }
 //加载时调用 calAllTotal() 计算现有的总计
 calAllTotal();
 </script>
 </body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JS高级拖动技术 setCapture,releaseCapture
Jul 31 Javascript
jQuery中获取checkbox选中项等操作及注意事项
Nov 24 Javascript
jQuery简单实现禁用右键菜单
Mar 10 Javascript
Javascript定义类(class)的三种方法详解
Mar 13 Javascript
JS+CSS实现的经典tab选项卡效果代码
Sep 16 Javascript
JS使用onerror捕获异常示例
Aug 03 Javascript
Google Maps基础及实例解析
Aug 06 Javascript
vue 本地环境跨域请求proxyTable的方法
Sep 19 Javascript
使用webpack4编译并压缩ES6代码的方法示例
Apr 24 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
Sep 18 Javascript
js实现旋转的星空效果
Nov 01 Javascript
JS遍历树层级关系实现原理解析
Aug 31 Javascript
js+canvas实现动态吃豆人效果
Mar 22 #Javascript
JavaScript实现星星等级评价功能
Mar 22 #Javascript
discuz表情的JS提取方法分析
Mar 22 #Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 #Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
Mar 22 #Javascript
Vue计算属性的学习笔记
Mar 22 #Javascript
Angular2实现自定义双向绑定属性
Mar 22 #Javascript
You might like
BBS(php &amp; mysql)完整版(六)
2006/10/09 PHP
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
JavaScript 的方法重载效果
2009/08/07 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
Python中的字典遍历备忘
2015/01/17 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
详解px单位html5响应式方案
2018/03/08 HTML / CSS
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
关于VPN
2012/06/10 面试题
大二学期个人自我评价
2014/01/13 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
测试工程师职业规划书
2014/02/06 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
社区务虚会发言材料
2014/10/20 职场文书
升职感谢信
2015/01/22 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
Java集成swagger文档组件
2021/06/28 Java/Android
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python