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

isNaN判断异常:输入数字仍触发alert弹窗问题求助

问题原因与修复方案

你的问题出在直接把DOM元素传给了isNaN(),而不是读取输入框的实际输入值。

increaseValue是通过document.getElementById获取到的<input>元素对象,当你把这个对象传给isNaN()时,JS会尝试把它转换为数字,而DOM元素转数字的结果永远是NaN,所以不管输入框里填了什么,if(isNaN(increaseValue))的条件永远成立,弹窗就会一直触发。

修复代码

把判断逻辑改成读取输入框的value属性,并且建议先把字符串转成数字再做校验:

const increaseValue = document.getElementById('positive');
const enter = document.getElementById('enter-value');

function useInput(){
    enter.addEventListener('click', function(){
        // 获取输入框的值并转为数字
        const inputValue = Number(increaseValue.value);
        // 判断是否为有效数字,同时处理空输入的情况
        if(isNaN(inputValue) || increaseValue.value.trim() === ''){
            alert("Your input was not a number! Try again.");
        }
    })
}
useInput();

额外说明

因为你的输入框是type="number",浏览器本身会限制用户输入非数字内容,但如果用户手动清空输入框或者输入了符合格式但无意义的内容(比如只输入了负号),上面的代码可以覆盖这些场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:40:07