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 相关文章推荐
在线游戏大家来找茬II
Sep 30 Javascript
js弹出窗口之弹出层的小例子
Jun 17 Javascript
javascript 原型链维护和继承详解
Nov 26 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
Jan 22 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
Aug 09 Javascript
js判断一个字符串是以某个字符串开头的简单实例
Dec 27 Javascript
JavaScript登录记住密码操作(超简单代码)
Mar 22 Javascript
使用JavaScript实现alert的实例代码
Jul 06 Javascript
在博客园博文中添加自定义右键菜单的方法详解
Feb 05 Javascript
详解node和ES6的模块导出与导入
Feb 19 Javascript
vue在线动态切换主题色方案
Mar 26 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
vue权限路由实现的方法示例总结
2018/07/29 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
python实现倒计时的示例
2014/02/14 Python
怎样使用Python脚本日志功能
2016/08/14 Python
用Python设计一个经典小游戏
2017/05/15 Python
Python用for循环实现九九乘法表
2018/05/31 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
暇步士官网:Hush Puppies
2016/09/22 全球购物
澳大利亚正品化妆品之家:Cosmetic Capital
2017/07/03 全球购物
高中毕业自我鉴定范文
2013/10/02 职场文书
自考毕业自我鉴定范文
2013/10/27 职场文书
五十岁生日宴会答谢词
2014/01/15 职场文书
音乐教学案例
2014/01/30 职场文书
调解员先进事迹材料
2014/02/07 职场文书
移交协议书
2014/08/19 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python