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 相关文章推荐
JavaScript函数、方法、对象代码
Oct 29 Javascript
javascript面向对象的方式实现的弹出层效果代码
Jan 28 Javascript
判定是否原生方法的JS代码
Nov 12 Javascript
javascript的alert box在java中如何显示多行
May 18 Javascript
AngularJs  E2E Testing 详解
Sep 02 Javascript
JS实现购物车特效
Feb 02 Javascript
bootstrap基本配置_动力节点Java学院整理
Jul 14 Javascript
ztree实现左边动态生成树右边为内容详情功能
Nov 03 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
Nov 20 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
Dec 13 Javascript
微信小程序返回箭头跳转到指定页面实例解析
Oct 08 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
Apr 15 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
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
在PWS上安装PHP4.0正式版
2006/10/09 PHP
第四章 php数学运算
2011/12/30 PHP
PHP引用符&amp;的用法详细解析
2013/08/22 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
jQuery实现Tab菜单滚动切换的方法
2015/09/21 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
详解Python中DOM方法的动态性
2015/04/11 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
python3实现域名查询和whois查询功能
2018/06/21 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
python可视化实现KNN算法
2019/10/16 Python
python中K-means算法基础知识点
2021/01/25 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
清洁工表扬信
2014/01/08 职场文书
活动总结报告怎么写
2014/07/03 职场文书
升学宴学生答谢词
2015/01/05 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP
Docker部署Mysql8的实现步骤
2022/07/07 Servers