更简洁的非区分大小写的测验验证

More concise non-case-sensitive quiz verification

本文关键字:大小写 验证 简洁 非区      更新时间:2023-09-26

这个问题有点晦涩和具体,所以我认为我在任何地方都找不到它,所以......

我在"测验"中有 3 个输入,只是想知道是否有更好的方法来执行以下操作:

我正在使用If... Else...语句来检查答案,并希望使其区分大小写

这是我的尝试(精简版)...(请放轻松,我不是特别先进,我知道有更好的方法可以实现这一目标,但我想以这种方式做到这一点......

<input id="answers1">
<input id="answers2">
<input id="answers3">

还有Javascript...

var ans1 = document.getElementById("answers1").value;
var ans2 = document.getElementById("answers2").value;
var ans3 = document.getElementById("answers3").value;
var ans1 = ans1.toLowerCase();
var ans2 = ans2.toLowerCase();
var ans3 = ans3.toLowerCase();
if (ans1 == "hola") {
   alert('Correct');
} else {
   alert('Incorrect');
  }
if (ans2 == "llamas") {
   alert('Correct');
} else {
   alert('Incorrect');
  }
if (ans3 == "me") {
   alert('Correct');
} else {
   alert('Incorrect');
  }}

所以基本上,我只是想知道是否有更简洁或更好的方法来做到这一点?

谢谢,任何帮助都值得赞赏:)

当然,您可以使用一个函数来减少重复的代码:

function checkAnswer(id, correctResponse) {
  var answer = document.getElementById(id).value.toLowerCase();
  if(answer === correctResponse) {
    alert("Correct");
  } else {
    alert("Incorrect");
  }
}
checkAnswer("answers1", "hola");
checkAnswer("answers2", "llamas");
checkAnswer("answers3", "me");

您还可以创建一个对象,将元素与答案相关联:

var correctAnswers = {
  "answers1": "hola",
  "answers2": "llamas",
  "answers3": "me"
};
for(var id in correctAnswers) {
  var answer = document.getElementById(id).value.toLowerCase();
  if(answer === correctAnswers[id]) {
    alert("Correct");
  } else {
    alert("Incorrect");
  }
}

使用 Array s 怎么样?

var ids = [
    "answers1",
    "answers2",
    "answers3"
];
var answers = [
    "hola",
    "llamas",
    "me",
];
for(var i = 0; i < ids.length; ++i) {
    var elem = document.getElementById(ids[i]);
    var user = elem.value;
    var answer = answers[i];
    if (answer == user.toLowerCase()) {
         alert('Correct');
    } else {
         alert('Incorrect');
    }
}