如何按账户数量区间(<25/25-50/>50)修改jQuery价格计算代码?
按账户数量梯度调整jQuery价格计算逻辑
我来帮你修改这段代码,完全贴合你说的价格梯度规则~首先先明确下规则的区间边界:我默认是包含25和50的(也就是25≤数量≤50时用35的单价),如果你的边界需要调整,改一下判断条件就行。
先把完整的修改后代码放出来,后面再给你拆解关键部分:
$(document).ready(function() { update_amounts(); $('.qty').change(function() { update_amounts(); }); }); function update_amounts() { var totalAccounts = 0; // 总账户数量 var unitPrice = 40; // 默认单价(数量<25时) // 遍历表格行,计算总账户数量 $('#myTable > tbody > tr').each(function() { // 取每行选中的数量值,转成数字 var qty = parseInt($(this).find('option:selected').val(), 10); // 累加总数量(注意判断是否为有效数字,避免NaN) if (!isNaN(qty)) { totalAccounts += qty; } }); // 根据总数量调整单价 if (totalAccounts >= 25 && totalAccounts <= 50) { unitPrice = 35; } else if (totalAccounts > 50) { unitPrice = 30; } // 计算总金额 var totalAmount = totalAccounts * unitPrice; // 这里可以把总金额渲染到页面上,比如你有个id为total的元素 $('#total').text('$' + totalAmount.toFixed(2)); }
关键修改点说明:
- 新增了
totalAccounts变量来统计所有行的账户总数量,避免之前可能只算单行的问题 - 增加了数字有效性判断:用
parseInt把选中的字符串转成数字,再用isNaN排除无效值,防止计算出错 - 按照你的规则写了清晰的条件判断,确定对应单价:
- 总数量<25 → 单价40(默认值,不用额外判断)
- 25≤总数量≤50 → 单价35
- 总数量>50 → 单价30
- 最后计算总金额并格式化到两位小数,方便显示成货币格式
如果你的需求是每行的数量单独按梯度算单价(而不是总数量),那只需要把判断逻辑放到each循环里就行,比如:
function update_amounts() { var totalAmount = 0.0; $('#myTable > tbody > tr').each(function() { var qty = parseInt($(this).find('option:selected').val(), 10); if (isNaN(qty)) return; // 跳过无效行 var unitPrice = 40; if (qty >=25 && qty <=50) { unitPrice =35; } else if (qty>50) { unitPrice=30; } totalAmount += qty * unitPrice; }); $('#total').text('$' + totalAmount.toFixed(2)); }
你可以根据实际业务需求选其中一种写法~
内容的提问来源于stack exchange,提问作者Nishanth
相关产品推荐
相关产品推荐

