新闻中心

jQuery计算总金额显示为0的解决方案

2025-10-26
浏览次数:
返回列表

jquery计算总金额显示为0的解决方案

本文旨在解决在使用 jQuery 计算动态添加的元素总金额时,页面初始加载时总金额显示为 0 的问题。通过修改事件绑定方式,并在适当的时机调用计算总金额的函数,确保总金额能够正确地随着用户选择而更新。同时,避免在HTML中直接使用事件监听器,采用`.addEventListener`实现更佳的代码可维护性。

在使用 jQuery 开发 Web 应用时,经常需要动态计算页面元素的值,并显示总金额。一个常见的问题是,当页面加载时,由于某些元素是动态生成的,jQuery 可能无法立即获取到这些元素,导致计算出的总金额为 0。本文将详细介绍如何解决这个问题,并提供一个可行的解决方案。

问题分析

问题的根源在于 jQuery 的 $(document).ready() 函数只在页面加载完成后执行一次。如果在 ready 函数执行时,动态添加的元素尚未生成,那么 jQuery 就无法获取到这些元素,导致总金额计算错误。

解决方案

为了解决这个问题,我们需要在每次动态添加元素后,都重新计算总金额。具体步骤如下:

Mureka Mureka

Mureka是昆仑万维最新推出的一款AI音乐创作工具,输入歌词即可生成完整专属歌曲。

Mureka 1091 查看详情 Mureka
  1. 移除 HTML 中的 onChange 事件监听器:避免在 HTML 中直接绑定事件监听器,这不利于代码的维护和管理。
  2. 使用 addEventListener 绑定事件:在 $(document).ready() 函数中使用 addEventListener 来监听 select 元素的 change 事件。
  3. 创建 computeTotal() 函数:该函数负责计算总金额,并将其显示在页面上。
  4. 在事件处理函数中调用 computeTotal():在 selectedAfternoon() 和 selectedCommute() 函数中,每次动态添加元素后,都调用 computeTotal() 函数。
  5. 在 $(document).ready() 函数中调用 computeTotal():确保页面加载时,即使没有选择任何选项,也能正确显示初始总金额(通常为 0)。

代码示例

以下是修改后的代码:

function selectedAfternoon(element) {
  var text = element.options[element.selectedIndex].value;
  document.getElementById("output-selected-option-afternoon").innerHTML = "<div>" + text.split("|").join("</div><div>") + "</div>";
  document.getElementById("output-selected-option-afternoon").querySelector("div:last-child").classList.add("priceSelectedOption")
  computeTotal()
}

function selectedCommute(element) {
  var text = element.options[element.selectedIndex].value;
  document.getElementById("output-selected-option-commute").innerHTML = "<div>" + text.split("|").join("</div><div>") + "</div>";
  document.getElementById("output-selected-option-commute").querySelector("div:last-child").classList.add("priceSelectedOption")
  computeTotal()
}

function computeTotal() {
 var total = 0;
  $('.priceSelectedOption').each(function() {
    total += parseFloat($(this).text().replace(/,/g, ''))
  })
  $('.totalPrice').text(total)
}

$(document).ready(function() {
  document
    .getElementById('Onderweg')
    .addEventListener('change', function() { selectedCommute(this) })

  document
    .getElementById('Namiddag')
    .addEventListener('change', function() { selectedAfternoon(this) })

  computeTotal()
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="Namiddag" name="Namiddag" data-name="Namiddag" class="js-basic-single">
  <option></option>
  <option id="13x19namiddag" value="Namiddag|13x19 cm|12,50">13x19 cm, €12.50</option>
  <option id="20x30namiddag" value="Namiddag|20x30 cm|22,50">20x30 cm, €22.50</option>
  <option id="30x45namiddag" value="Namiddag|30x45 cm|32,50">30x45 cm, €32.50</option>
  <option class="disabled" value="disabled" disabled="disabled">Wil je meer stuks of formaten van deze foto? Vermeld dit dan in de winkelwagen.,  </option>
</select>

<select id="Onderweg" name="Onderweg" data-name="Onderweg" class="js-basic-single">
  <option></option>
  <option id="13x19onderweg" value="Onderweg|13x19 cm|12,50">13x19 cm, €12.50</option>
  <option id="20x30onderweg" value="Onderweg|20x30 cm|22,50">20x30 cm, €22.50</option>
  <option id="30x45onderweg" value="Onderweg|30x45 cm|32,50">30x45 cm, €32.50</option>
  <option class="disabled" value="disabled" disabled="disabled">Wil je meer stuks of formaten van deze foto? Vermeld dit dan in de winkelwagen.,  </option>
</select>

<div id="output-selections">
  <div class="selected-option" id="output-selected-option-afternoon"></div>
  <div class="selected-option" id="output-selected-option-commute"></div>
</div>

<h3>Total</h3>
<div class="totalPrice"></div>

CSS 代码保持不变

.js-basic-single {
  width: 100%;
}

#output-selections {
  display: flex;
  flex-direction: column;
  grid-column-gap: 1rem;
  grid-row-gap: 1rem;
}

.selected-option {
  display: flex;
  width: 100%;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
}

.priceSelectedOption::before,
.totalPrice::before {
  content: '€ ';
}

代码解释

  • selectedAfternoon(element) 和 selectedCommute(element) 函数:这两个函数负责根据用户的选择,动态地将选中的选项添加到页面中。
  • computeTotal() 函数:该函数使用 jQuery 的 .each() 方法遍历所有具有 priceSelectedOption 类的元素,并将它们的值累加起来。然后,将总金额显示在具有 totalPrice 类的元素中。
  • $(document).ready() 函数:该函数在页面加载完成后执行,用于绑定事件监听器和初始化总金额。

注意事项

  • 确保在页面中引入 jQuery 库。
  • 确保 CSS 样式正确,以便正确显示总金额。
  • 如果需要处理更复杂的计算逻辑,可以根据实际情况修改 computeTotal() 函数。
  • 避免在 HTML 中直接绑定事件监听器,使用 addEventListener 可以提高代码的可维护性和可读性。

总结

通过以上步骤,可以有效地解决在使用 jQuery 计算动态添加的元素总金额时,页面初始加载时总金额显示为 0 的问题。 关键在于在每次动态添加元素后,都重新计算总金额,并使用 addEventListener 来绑定事件监听器,避免在 HTML 中直接绑定事件监听器。 这种方法可以确保总金额能够正确地随着用户选择而更新,并提高代码的可维护性和可读性。

以上就是jQuery计算总金额显示为0的解决方案的详细内容,更多请关注其它相关文章!


# jquery  # 定海路街道网站推广竞价  # 房产seo获客  # 宁波网站建设培训哪家好  # 也能  # 完成后  # 显示效果  # 正确地  # 解决这个问题  # 单选框  # 表单  # 绑定  # css  # html  # js  # ajax  # ssl  # win  # cdn  # asic  # 总金额  # 加载  # 美容整形seo站群  # 宁国百度网站优化  # 营销视频推广隐迅推推荐  # 天津企业营销推广策划  # 海口出名的问答营销推广  # 营销号推广推博主怎么收费  # 大岭山网站建设哪家专业 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航  HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】  火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧  12306选座怎么选到商务座_12306商务座选择与配置说明  Django通过AJAX异步上传图片并保存至模型的完整指南  Python字典中优雅地迭代剩余元素的方法  “音游” × “怪文书” 题材的节奏冒险游戏 《晕晕电波症候群》确定于2026年4月发售!  微信网页版官方入口教程 微信网页版网页版快速登录步骤  AO3镜像入口大全 AO3网页版内容访问全集  J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析  Excel如何用迷你图显趋势_Excel用迷你图显趋势【趋势小图】  QQ邮箱登录官网首页 腾讯QQ邮箱网页入口  Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程  处理嵌套交互式控件:前端可访问性指南  Web Components中自定义开关组件状态同步的常见陷阱与解决方案  顺丰快递查询系统 官方正版查询入口  Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式  网易大神账号申诉需要多久_网易大神账号申诉流程说明  漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口  NetBeans Ant项目:自动化将资源文件复制到dist目录的教程  Go语言中Map存储的结构体如何调用指针方法:深入解析与实践  iwriter统一登录平台 iwrite账号密码登录页面  J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析  Go语言JSON解析深度指南:动态访问与结构体映射实践  正确连接J*aScript到HTML实现可点击图片与自定义事件处理  谷歌推RCS信息存档功能:公司可监控员工私密信息!  谷歌邮箱注册显示错误Gmail服务器异常与延迟处理  微信聊天记录怎么加密_微信聊天记录加密方法  PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】  解决Tabulator日期时间排序问题的专业指南  Typer应用中动态命令行参数的解析与处理  Mac怎么锁定备忘录_Mac备忘录加密设置教程  PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误  如何有效阻止外部脚本意外修改内联样式的高度属性  Win10如何清理注册表垃圾 Win10注册表维护与优化指南【慎用】  qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程  凉拌黄瓜怎么拌更入味 凉拌黄瓜简单家常做法  J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题  CSS图片焦点样式实现教程:理解与应用tabindex属性  yandex入口引擎手机版 yandex安卓版下载入口  内存检查:在VS Code中调试C++时的内存视图  如何在Promise链中有效终止错误处理后的执行  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  Linux如何构建多环境配置管理_Linux多环境配置方案  俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达  Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量  Win11怎么开启省电模式_Win11电池节电模式自动开启  Golang如何处理RPC请求负载均衡_Golang RPC请求负载均衡策略与实践 

搜索