首页 > 解决方案 > 如果使用一个“如果”,我不希望使用其他“如果”。

问题描述

如果我键入 18,则会显示来自其他 if 的以下答案。

var age = prompt("please enter your age")

var letters = /^[A-Za-z]+$/;

if (age == 18) {
  alert("welcome to our website")
}
if (age > 18) {
  alert("welcome to our website")
}
if (age < 18) {
  alert("you aren't allowed to visit this website")
  window.close()
}
if (age = letters) {
  alert("please enter a valid number")
  prompt("please enter your age")
}

标签: javascripthtmlif-statement

解决方案


好吧,首先你有太多的测试。由于如果用户是 18 岁或大于 18 岁,您想要做同样的事情,您可以将这两者结合起来。

并且由于您只有两个关于年龄的条件和结果,您可以将另一个if测试转换为else分支,以便只输入一个测试分支。

但是,您没有根据您的正则表达式正确测试用户输入。有几种方法可以做到这一点,但简单的.test()方法就可以了。即使这是进行正则表达式测试的方法,你的最后一个=也需要==这样才能进行比较,而不是赋值。

见下文:

var age = prompt("please enter your age");

// First just test to see if they entered letters or not
if(testInput(age)){ 
  // Some letters were entered...
  alert("please enter a valid number");
  age = prompt("please enter your age");
  testInput(age); // test again
}

// When there are only numbers...
if (age >= 18) {
  alert("welcome to our website");
} else {
  alert("you aren't allowed to visit this website");
  window.close();
}

// This function will accept a string
function testInput(age){
  var letters = /^[A-Za-z]+$/;
  // And return true or false based on testing the string
  // against the regular expression.
  return letters.test(age);
}


推荐阅读