JavaScript中使用isNaN实现循环提示输入数字的代码失效问题
错误原因
- 循环内未更新
userSalary变量:你在循环内调用prompt获取的新输入值仅做了parseFloat处理,没有重新赋值给userSalary,while的判断条件始终基于第一次输入的结果,逻辑不生效。 - 调用了不存在的
reset()方法:userSalary是prompt返回的字符串类型值,字符串没有内置reset方法,执行这行代码会直接抛出JS运行时错误,终止代码执行,这就是你输入两次就自动跳出循环的原因。
可正常运行的修正代码
var userSalary = prompt("Hi, type a number!"); // 循环判断输入是否为非数字,直到用户输入合法数字为止 while(isNaN(parseFloat(userSalary))){ userSalary = prompt(userSalary + " is not number..."); } alert("Thank you!");
如果需要严格校验用户输入必须是纯数字(排除123abc这类可以提取出数字的混合字符串),可以调整循环判断条件为:
while(!/^\d+(\.\d+)?$/.test(userSalary))
内容的提问来源于stack exchange,提问作者user11838329
相关产品推荐
相关产品推荐

