如果使用一个“ if”,我不希望使用其他“ if”。

时间:2018-11-24 15:20:33

标签: javascript html if-statement

如果我输入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")
}

2 个答案:

答案 0 :(得分:1)

好吧,首先,您的测试太多了。如果用户年龄在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);
}

答案 1 :(得分:0)

function validateAge() {

  var age = prompt("please enter your age")
  // var letters = /^[A-Za-z]+$/;
  // if input will be any other symbol besydes letters&digits no alerts in that case
  // \D "not digit" would be better regexp
  var notDigit = /^\D+$/;
  // you can use 'greater or equal >=' & 'less or equal <='
  if (age >= 18) {
    alert("welcome to our website")
  }
  if (age < 18) {
    alert("you aren't allowed to visit this website")
    window.close()
  } // you know regular expressions but not the functhions to work with? 
  if (age && age.match(notDigit)) {
    alert("please enter a valid number")
    validateAge()
  }
}

validateAge()