0

0

如何使用 JavaScript 动态计算表格中“行总计”列的总和

花韻仙語

花韻仙語

发布时间:2026-02-27 18:51:11

|

993人浏览过

|

来源于php中文网

原创

如何使用 JavaScript 动态计算表格中“行总计”列的总和

本文介绍在动态增删表格行的场景下,如何实时、准确地汇总所有“line total”列的数值,并将结果展示在页面指定位置,涵盖事件委托、数值安全转换与防 nan 处理等关键实践。

本文介绍在动态增删表格行的场景下,如何实时、准确地汇总所有“line total”列的数值,并将结果展示在页面指定位置,涵盖事件委托、数值安全转换与防 nan 处理等关键实践。

在构建采购单、报价表或订单管理类 Web 应用时,常需支持用户动态添加/删除明细行,并实时更新汇总值(如“总金额”)。本教程以 LINE TOTAL 列为计算目标,提供一套健壮、可维护的 JavaScript 实现方案。

核心思路:事件委托 + 遍历求和

由于表格行是动态插入的,不能对 .Qty 和 .UnitPrice 使用静态 onchange 绑定(否则新增行的事件不会生效)。正确做法是使用 jQuery 的 事件委托(Event Delegation),监听 document 或父容器上针对动态元素的选择器事件:

$(document).on("change", ".Qty, .UnitPrice", function() {
  const $row = $(this).closest("tr");
  const qty = parseFloat($row.find(".Qty").val()) || 0;
  const unitPrice = parseFloat($row.find(".UnitPrice").val()) || 0;
  const lineTotal = parseFloat((qty * unitPrice).toFixed(2));

  $row.find(".LineTotal").val(lineTotal.toFixed(2));
  calculateTotal(); // 触发全局汇总
});

✅ 优势:

  • 新增行自动继承事件监听;
  • 同一事件处理器统一处理数量与单价变更;
  • 使用 parseFloat(...)|| 0 防止空值/非法输入导致 NaN。

汇总函数:安全遍历与累加

calculateTotal() 函数负责扫描所有 .LineTotal 输入框,提取并累加其数值。推荐使用属性选择器 [id*="LineTotal"](匹配含 LineTotal 的 ID),或更语义化、更稳定的类选择器 ".LineTotal":

立即学习Java免费学习笔记(深入)”;

MagicLight AI
MagicLight AI

AI动画视频创作平台

下载
function calculateTotal() {
  let sum = 0;
  $(".LineTotal").each(function() {
    const value = parseFloat($(this).val());
    if (!isNaN(value)) {
      sum += value;
    }
  });
  $("#total").text(sum.toFixed(2)); // 显示两位小数
}

⚠️ 注意事项:

  • 务必校验 isNaN():用户可能手动清空输入框或输入非数字内容,直接 parseFloat("") 返回 NaN,参与运算会导致整个 sum 变为 NaN;
  • 避免 toFixed() 在累加过程中使用:应在最终显示前格式化,而非中间计算(防止浮点精度误差累积);
  • ID 唯一性:若使用 id="total" 展示结果,请确保该 ID 全局唯一,且 DOM 已就绪(建议放在 后或 $(document).ready() 内执行)。

    完整 HTML 结构补充(关键部分)

    在原表格下方添加汇总显示区域,并确保 #total 存在:

    <div class="table-responsive text-nowrap">
      <table class="table table-striped" id="submissionTable">
        <!-- 表头与 tbody 不变 -->
      </table>
    
      <!-- 新增汇总显示区 -->
      <div class="mt-3">
        <strong>Total Amount:</strong>
        <span id="total" class="ms-2 fw-bold text-primary">0.00</span>
      </div>
    
      <p class="mt-3">
        <button id="add" type="button" class="btn btn-primary">Add Row</button>
      </p>
    </div>

    删除行时自动重算(增强健壮性)

    当前示例未体现删除逻辑,但实际中 removeTr(counter) 删除行后,必须再次调用 calculateTotal(),否则总和不会更新:

    function removeTr(id) {
      $("#tablerow" + id).remove();
      calculateTotal(); // 关键:删除后立即重算
    }

    总结

    • ✅ 使用 $(document).on("change", ".Qty, .UnitPrice", ...) 实现动态事件绑定;
    • ✅ calculateTotal() 中遍历 .LineTotal 并严格校验 isNaN(),保障数值安全;
    • ✅ 汇总结果显示使用 toFixed(2) 仅用于格式化输出,不参与中间计算;
    • ✅ 新增、修改、删除操作后均需触发 calculateTotal(),保持数据一致性;
    • ? 进阶建议:可封装为独立模块,支持多列汇总(如税额、折扣)、货币格式化及千分位分隔。

    通过以上实现,你将获得一个响应迅速、容错性强、易于扩展的动态表格汇总功能。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

156

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

326

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

404

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

514

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

291

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

126

2024.02.23

jquery中什么是高亮显示
jquery中什么是高亮显示

jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

180

2024.02.23

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

50

2026.01.13

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

2

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 5.5万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.2万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号