js中的DOM模拟购物车功能

发布时间 - 2026-01-11 00:18:13    点击率:

效果图:

代码如下:

<!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>

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


# js购物车功能  # js  # 模拟购物车  # js实现购物车的功能  # js购物车实现思路及代码(个人感觉不错)  # Javascript操纵Cookie实现购物车程序  # 简单的前端js+ajax 购物车框架(入门篇)  # js实现简单的购物车有图有代码  # 原生js模拟淘宝购物车项目实战  # JavaScript编写一个简易购物车功能  # 基于Vuejs实现购物车功能  # 利用Angularjs和bootstrap实现购物车功能  # js+cookies实现悬浮购物车的方法  # 小计  # 遍历  # 加载  # td  # body  # border  # width  # solid  # px  # collapse  # thead  # onclick  # button  # span  # btnClick  # tbody  # tr  # id  # class  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 百度浏览器如何管理插件 百度浏览器插件管理方法  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  phpredis提高消息队列的实时性方法(推荐)  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  南京网站制作费用,南京远驱官方网站?  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  linux写shell需要注意的问题(必看)  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  音响网站制作视频教程,隆霸音响官方网站?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  详解Android图表 MPAndroidChart折线图  Java遍历集合的三种方式  大同网页,大同瑞慈医院官网?  EditPlus中的正则表达式实战(5)  Laravel模型事件有哪些_Laravel Model Event生命周期详解  如何快速搭建高效简练网站?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  创业网站制作流程,创业网站可靠吗?  Laravel如何创建自定义Facades?(详细步骤)  如何有效防御Web建站篡改攻击?  简单实现Android验证码  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  LinuxShell函数封装方法_脚本复用设计思路【教程】  详解Huffman编码算法之Java实现  北京专业网站制作设计师招聘,北京白云观官方网站?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  ,网页ppt怎么弄成自己的ppt?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  高防服务器:AI智能防御DDoS攻击与数据安全保障  西安专业网站制作公司有哪些,陕西省建行官方网站?  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  Laravel怎么使用artisan命令缓存配置和视图  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  香港服务器部署网站为何提示未备案?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何快速打造个性化非模板自助建站?  Laravel如何使用Vite进行前端资源打包?(配置示例)  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  如何用免费手机建站系统零基础打造专业网站?  html5的keygen标签为什么废弃_替代方案说明【解答】  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何在建站之星绑定自定义域名?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】