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

JavaScript通过prompt输入值为DateTime对象添加秒数时运行异常如何解决?

问题诱因

prompt() 函数的返回值为字符串类型,并非数值类型。执行 newtime.getSeconds() + duration 逻辑时,JS 会触发隐式类型转换:将 getSeconds() 返回的数值转为字符串,和 duration 的字符串值做拼接操作,而非执行数值加法。
例如你输入60时,假设当前获取的秒数是30,实际执行的是 30 + "60",得到拼接结果 "3060",传入 setSeconds 时会被自动转为数值3060,对应51分钟,和你预期的加60秒结果完全不符。你除以10后看似正常属于巧合:拼接后的多位数除以10刚好得到了接近预期的数值,不属于正确解法。

修复方案

只需将 prompt 返回的字符串显式转为数值即可,常用写法有三种:

  • 用 Number() 构造函数转换:
let duration = Number(prompt("Enter your trip duration in seconds: "));
  • 用一元加号运算符转换(写法更简洁):
let duration = +prompt("Enter your trip duration in seconds: ");
  • 如果要限定仅接收整数秒,可使用 parseInt():
let duration = parseInt(prompt("Enter your trip duration in seconds: "), 10);

转换完成后再执行加法操作,就会按照数值运算逻辑执行,结果符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:15:03