0

0

如何在多次调用函数时持久化保存选择值并动态累加总价

心靈之曲

心靈之曲

发布时间:2026-01-29 20:51:01

|

427人浏览过

|

来源于php中文网

原创

如何在多次调用函数时持久化保存选择值并动态累加总价

本文介绍一种无需全局变量或递归的健壮方案,通过每次调用时重新遍历所有 `

在 Web 表单中,当多个

推荐方案:函数无状态 + 全量重算
不依赖函数内变量的“记忆”,而是每次触发时主动扫描所有相关下拉框,解析其当前选中值,并实时汇总。这种方式更可靠、可维护性强,且天然支持动态增删选项(只需确保 name 属性一致)。

以下是优化后的纯 JavaScript 实现:

// 提前获取所有目标 select 元素(使用 name="type_trim" 精准匹配)
const trimSelects = [...document.querySelectorAll('select[name="type_trim"]')];

function getPaymentAmount() {
  let total = 0;

  trimSelects.forEach(select => {
    if (select.value) { // 跳过未选择项(空 value)
      const [priceStr] = select.value.split(':'); // 安全解构,取冒号前数字部分
      const price = parseFloat(priceStr);
      if (!isNaN(price)) {
        total += price;
      }
    }
  });

  // 更新显示总金额的输入框(确保 DOM 中存在 id="paid" 的 )
  const paidInput = document.querySelector('#paid');
  if (paidInput) {
    paidInput.value = total;
  }
}

? 关键改进点说明:

MagickPen
MagickPen

在线AI英语写作助手,像魔术师一样在几秒钟内写出任何东西。

下载
  • 移除 this 参数传递:HTML 中 onChange="getPaymentAmount();" 不再传入 this,函数统一从预存的 trimSelects 列表读取全部状态;
  • 修复 name 属性一致性:原 HTML 中 name="type_trim[]" 含方括号,易被 CSS 选择器误判;改为 name="type_trim" 后,querySelectorAll('select[name="type_trim"]') 可精准匹配;
  • 增强容错性:使用 parseFloat() 替代 parseInt(),支持小数价格;添加 isNaN() 校验,避免非法值导致 NaN 污染总和;
  • DOM 查询健壮化:显式检查 #paid 元素是否存在,防止脚本因 DOM 缺失而中断。

? 注意事项:

  • 若页面中存在其他 name="type_trim" 的非
  • 如需实时响应(如用户键盘操作),可补充监听 input 或 change 事件委托,而非仅依赖 onChange;
  • 若未来需扩展为“按马匹分项显示金额”,建议将解析逻辑封装为独立函数(如 parsePrice(select)),便于复用与测试。

该方案摒弃了脆弱的状态维持方式,以声明式、幂等的重算逻辑保障数据一致性——这是现代前端表单聚合场景中的最佳实践。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
全局变量怎么定义
全局变量怎么定义

本专题整合了全局变量相关内容,阅读专题下面的文章了解更多详细内容。

78

2025.09.18

python 全局变量
python 全局变量

本专题整合了python中全局变量定义相关教程,阅读专题下面的文章了解更多详细内容。

96

2025.09.18

DOM是什么意思
DOM是什么意思

dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

3342

2024.08.14

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.11.24

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

热门下载

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

精品课程

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

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

CSS教程
CSS教程

共754课时 | 24.9万人学习

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

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