JavaScript中If Else语句失效,输入超出0-80范围时不弹出alert提示
问题根因
- 核心错误为
if判断的逻辑运算符使用错误:原代码使用||(或运算符),regHours > 0 || regHours < 80的条件对所有数值都成立,例如输入90满足>0、输入-10满足<80,因此永远会执行计算分支,不会触发异常提醒。 - 其次input元素读取的
value为字符串类型,直接做数值比较存在隐式类型转换的潜在风险,建议显式转换为数字类型。 - 原判断逻辑未包含0、80两个边界值,且
toFixed调用顺序错误,会导致计算结果未保留两位小数写入输入框。 - 逻辑顺序可优化:优先做非法值校验,校验不通过直接阻断后续流程,代码可读性更高。
修正后的JS代码
'use strict'; function calculate() { // 显式转换为数字类型,避免字符串比较异常 const regHours = Number(document.getElementById('regHours').value); const hourlyRate = Number(document.getElementById('hourlyRate').value); let regPay; // 优先校验非法区间,不满足直接弹提醒返回 if (regHours < 0 || regHours > 80) { alert("Enter valid number"); return false; } // 合法区间执行计算 regPay = regHours * hourlyRate; // 先格式化再赋值给输入框 document.getElementById('regPay').value = regPay.toFixed(2); return false; } function init() { document.getElementById('theForm').onsubmit = calculate; } window.onload = init;
内容的提问来源于stack exchange,提问作者Teddy
相关产品推荐
相关产品推荐

