给小计添加5%百分比的JavaScript脚本无输出故障求助
解决给小计添加5%金额的JavaScript脚本问题
你的代码无法运行的核心问题是:EXTENSION5对应的返回对象没有value属性,直接访问.value会触发错误,导致脚本中断,因此没有任何输出。
修复后的代码
// (模拟数据获取函数) function getField(key) { return ({ EXTENSION1: {value:'110.0'}, EXTENSION2: {value:'95.0'}, EXTENSION3: {value:'85.0'}, EXTENSION4: {value:'65.0'}, EXTENSION5: {}, 'GE%': {value: '5'}, })[key] || {} // 确保即使key不存在也返回空对象,避免报错 } // 获取每个字段值,不存在则用空字符串 var extension1 = getField("EXTENSION1").value || ''; var extension2 = getField("EXTENSION2").value || ''; var extension3 = getField("EXTENSION3").value || ''; var extension4 = getField("EXTENSION4").value || ''; var extension5 = getField("EXTENSION5").value || ''; // 转换为数字,NaN则转为0,再求和 var sum = (parseFloat(extension1) || 0) + (parseFloat(extension2) || 0) + (parseFloat(extension3) || 0) + (parseFloat(extension4) || 0) + (parseFloat(extension5) || 0); var percentage = parseFloat(getField("GE%").value) || 0; var result = sum * (percentage / 100); console.log(result); // 现在会输出正确结果:17.75
关键修改说明
- 给
getField添加了|| {},确保即使传入不存在的key,也返回空对象,避免后续访问.value报错 - 每个字段值获取时用
|| '',如果没有value属性则用空字符串,避免parseFloat时出现异常 - 转换数字时用
(parseFloat(xxx) || 0),把无法转换的NaN转为0,保证求和计算正常进行 - 去掉了不必要的
this,因为getField是全局函数,直接调用即可
相关截图:
内容的提问来源于stack exchange,提问作者Jenn
相关产品推荐
相关产品推荐

