javascript 如何检查提示值是否为NaN并传递信息?

ubbxdtey  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(136)

我刚刚开始学习如何在JS中编码,我想做一个程序,迎接用户后,他填写所需的信息年龄和姓名。
我添加了一个循环,检查在提示符中输入的数据是否是数字,但它似乎无限地继续下去,就像值总是错误的,循环一遍又一遍地循环自己,即使值是正确的(当然是在我第一次输入错误的值之后)。
最棒的是,当我显示typeof值时,它同时显示了正确和错误。

alert("Hi this site is only accsesable by pepole above an age of 18")
let usersAge = prompt("How old are you?");
usersAge = Number(usersAge);

while (Number.isNaN(usersAge)) {
  let usersAge = prompt("type in the correct value?");
}

if (usersAge >= 18) {
  let userName = prompt("cool,what is ur name")
  toString(usersAge)
  console.log("wassup" + " " + userName + " " + "with age of" + " " + usersAge)
} else {
  console.log("sorry ur age is to low for us to display this website")
};

console.log(typeof usersAge)
console.log(usersAge)

控制台输出:
对不起,您年龄太小,无法显示此网站
“数字”
钠氮

but5z9lq

but5z9lq1#

第一个问题是因为您在while块中重新定义了usersAge,这会影响循环的结果,请删除那里的let关键字。
另一个问题是,在某些情况下,你比较的是字符串和整数。在比较之前,把所有的值都转换成相同的类型。
解决了这些问题后,您的代码就可以工作了:

alert("Hi this site is only accsesable by pepole above an age of 18")
let usersAge = parseInt(prompt("How old are you?"), 10);

while (Number.isNaN(usersAge)) {
  usersAge = parseInt(prompt("type in the correct value?"), 10);
}

if (usersAge >= 18) {
  let userName = prompt("cool,what is ur name")
  toString(usersAge)
  console.log("wassup" + " " + userName + " " + "with age of" + " " + usersAge)
} else {
  console.log("sorry ur age is to low for us to display this website")
};

console.log(typeof usersAge)
console.log(usersAge)

***然而***把一个prompt()放在一个潜在的无限循环中是一个*非常糟糕的设计选择。这种选择会激怒你的用户,并把你的网站列入黑名单。

一个更好的方法是验证输入,如果无效,那么你应该给予用户选择退出循环并离开你的网站。现在你强迫用户在离开之前输入一个年龄。

bgibtngc

bgibtngc2#

嗨,我的朋友,为了解决你的问题,你不需要使用let,因为你只使用了一次。我会给予你正确的语法来解决你的问题:

alert("Hi this site is only accsesable by pepole above an age of 18");
  let usersAge=prompt("How old are you?");
  usersAge = Number(usersAge);
  
  while(Number.isNaN(usersAge) || usersAge === null || usersAge === '') {
    usersAge= prompt("Enter your age")
  }
{
  if( usersAge  >= 18){
    let userName = prompt("cool,what is ur name");
    toString(usersAge)
    console.log("wassup" + " " + userName + " " + "with age of" + " " + usersAge)
    
  }

  if( usersAge  < 18){
    console.log("sorry ur age is to low for us to display this website");
    
  } else{
    usersAge = prompt("type in the correct value?")
  }
}

希望你的问题解决了。

相关问题