如何修复JavaScript函数中的else if代码块失效问题?
问题分析与修复方案
问题根源
payment函数仅绑定了debt输入框的input事件,切换到noneProperty选项后,debtBlock被隐藏,用户不会操作该输入框,导致对应分支逻辑从未触发。physical和judical单选框未绑定事件监听,切换这两个选项时不会触发金额计算。
修复步骤
- 给身份类型单选框添加事件监听
// 在现有事件绑定代码后添加 physical.addEventListener('change', payment) judical.addEventListener('change', payment)
- 切换主选项后立即触发计算
修改toggleData函数,在末尾调用payment:
function toggleData() { ownershipInputs.classList.toggle('hide') debtBlock.classList.toggle('hide') cost.innerHTML = "" debt.value = "" payment() // 新增:切换选项后立即计算金额 }
- 优化数值处理与边界情况
修改payment函数,处理字符串转数字的问题,并补充未选择身份类型的提示:
function payment() { if (property.checked) { const debtAmount = Number(debt.value) || 0 // 把输入值转为数字,空值默认0 const calculated = debtAmount * 0.02 const maxLimit = minSalary * 10 cost.innerHTML = calculated <= maxLimit ? `${calculated.toFixed(2)} грн` : `${maxLimit} грн` } else if (noneProperty.checked) { if (physical.checked) { cost.innerHTML = `${minSalary} грн` } else if (judical.checked) { cost.innerHTML = `${minSalary * 2} грн` } else { cost.innerHTML = "请选择身份类型" } } }
内容的提问来源于stack exchange,提问作者Oliver Sykes
相关产品推荐
相关产品推荐

