You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:54:03