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

时分时间求和计算器输出显示NaN的原因排查技术问询

时间相加代码NaN问题修复

问题根源

你犯了一个基础错误:document.getElementById("first")返回的是输入框DOM元素本身,不是用户输入的内容。把DOM元素转成数字必然得到NaN,导致后续所有计算结果都是NaN。

修复后的完整代码

JavaScript

function add() {
  // 获取输入框的value值并转为数字,空输入默认设为0
  let a = Number(document.getElementById("first").value) || 0;
  let b = Number(document.getElementById("third").value) || 0;
  let c = Number(document.getElementById("second").value) || 0;
  let d = Number(document.getElementById("fourth").value) || 0;
  
  let totalMinutes = c + d;
  let extraHours = Math.floor(totalMinutes / 60);
  let remainingMinutes = totalMinutes % 60;
  let totalHours = a + b + extraHours;
  
  // 用alert展示结果,避免document.write覆盖页面
  alert(`总时长:${totalHours}小时 ${remainingMinutes}分钟`);
}

HTML

<h1>Time Calculator</h1>
<h2>This calculator can be used to “add” two time values.</h2>
Enter hours: <input id="first" type="number" min="0"> 
Enter Minutes: <input id="second" type="number" min="0" max="59"> 
Enter hours: <input id="third" type="number" min="0"> 
Enter Minutes: <input id="fourth" type="number" min="0" max="59">
<button onclick="add()">ADD</button>

额外改进建议

  1. 给输入框添加type="number"和范围限制,强制用户输入合法数字,减少异常情况
  2. 替换document.write为弹窗或页面内的元素展示结果,原写法会清空整个页面内容
  3. 可以增加输入校验逻辑,比如提示用户输入有效数字

内容的提问来源于stack exchange,提问作者Zikatro Vizago

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:00:48