如果用户键入字母,这就是我想要在代码中发生的事情:该字母不能重复。

就我而言,我使用的是键码和if-else语句。有没有一种方法可以使每个字母只按一次键?



<!DOCTYPE html>
<html>

<head>
  <style>
    #Ans_container {
      margin-left: 37%;
      margin-bottom: 350px;
      width: 400px;
      height: 80px;
      background-color: yellow;
      font-size: 50px;
    }
  </style>
</head>

<body onload="del();">
  <div id="Ans_container"></div>
  <script>
    function typing(x) {

      if (x.keyCode == 65) {
        document.getElementById("Ans_container").innerHTML += "A";
      }
      if (x.keyCode == 66) {
        document.getElementById("Ans_container").innerHTML += "B";
      }
      if (x.keyCode == 67) {
        document.getElementById("Ans_container").innerHTML += "C";
      }
      if (x.keyCode == 68) {
        document.getElementById("Ans_container").innerHTML += "D";
      }
      if (x.keyCode == 69) {
        document.getElementById("Ans_container").innerHTML += "E";
      }
      if (x.keyCode == 70) {
        document.getElementById("Ans_container").innerHTML += "F";
      }
      if (x.keyCode == 71) {
        document.getElementById("Ans_container").innerHTML += "G";
      }
      if (x.keyCode == 72) {
        document.getElementById("Ans_container").innerHTML += "H";
      }
      if (x.keyCode == 73) {
        document.getElementById("Ans_container").innerHTML += "I";
      }
      if (x.keyCode == 74) {
        document.getElementById("Ans_container").innerHTML += "J";
      }
      if (x.keyCode == 75) {
        document.getElementById("Ans_container").innerHTML += "K";
      }
      if (x.keyCode == 76) {
        document.getElementById("Ans_container").innerHTML += "L";
      }
      if (x.keyCode == 77) {
        document.getElementById("Ans_container").innerHTML += "M";
      }
      if (x.keyCode == 78) {
        document.getElementById("Ans_container").innerHTML += "N";
      }
      if (x.keyCode == 79) {
        document.getElementById("Ans_container").innerHTML += "O";
      }
      if (x.keyCode == 80) {
        document.getElementById("Ans_container").innerHTML += "P";
      }
      if (x.keyCode == 81) {
        document.getElementById("Ans_container").innerHTML += "Q";
      }
      if (x.keyCode == 82) {
        document.getElementById("Ans_container").innerHTML += "R";
      }
      if (x.keyCode == 83) {
        document.getElementById("Ans_container").innerHTML += "S";
      }
      if (x.keyCode == 84) {
        document.getElementById("Ans_container").innerHTML += "T";
      }
      if (x.keyCode == 85) {
        document.getElementById("Ans_container").innerHTML += "U";
      }
      if (x.keyCode == 86) {
        document.getElementById("Ans_container").innerHTML += "V";
      }
      if (x.keyCode == 87) {
        document.getElementById("Ans_container").innerHTML += "W";
      }
      if (x.keyCode == 88) {
        document.getElementById("Ans_container").innerHTML += "X";
      }
      if (x.keyCode == 89) {
        document.getElementById("Ans_container").innerHTML += "Y";
      }
      if (x.keyCode == 90) {
        document.getElementById("Ans_container").innerHTML += "Z";
      }
    }
    document.onkeydown = typing;
  </script>

</body>

</html>

最佳答案

您可以保留已经“看到”的字符列表。当一个新角色到达时,检查它是否已经在列表中。如果没有,请忽略它。

您还可以通过使用String.fromCharCode()而不是26个if语句来节省大量键入内容。



var seen = {};

function typing(x) {
  if ((x.keyCode >= 65) && (x.keyCode <= 90)) {
    var st = String.fromCharCode(x.keyCode);

    if (!seen[st]) {
      document.getElementById('Ans_container').innerHTML += st;
      seen[st] = true;
    }
  }
}

document.onkeydown = typing;

#Ans_container {
  margin-left: 37%;
  margin-bottom: 350px;
  width: 400px;
  height: 80px;
  background-color: yellow;
  font-size: 50px;
}

<div id="Ans_container"></div>

09-25 17:05
查看更多