【问题标题】:How do I print the letters already guessed in the hangman game with javascript?如何使用javascript打印刽子手游戏中已经猜到的字母?
【发布时间】:2017-06-10 23:16:56
【问题描述】:

我知道编程以及 javascript,并且正在为我的第一个 js 项目开发刽子手游戏。我似乎无法弄清楚如何在 UI 中向用户显示他们已经猜到的字母。我想出了 onkeyup 函数来显示最近选择的字母,但不是全部。有什么建议么?

 var alphabet = 
 ['a','b','c','d','e','f','g','h','g','h','i','j','k','l','m','n','o','p','q','r','s',
't','u','v','w','x','y','z'];
document.onkeyup = function(event) {
     var key_press = String.fromCharCode(event.keyCode);
     console.log(key_press);
     document.getElementById('guessed-letters').innerHTML = key_press;
};

【问题讨论】:

  • 当一个字母被选中时,它应该被添加到另一个数组中,这个数组只是一个使用过的键的列表。那么这个数组就可以更容易的显示出来了。

标签: javascript


【解决方案1】:

拿走这里的东西

var alphabet = ['a','b','c','d','e','f','g','h','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];

document.onkeyup = function(event) {

  var key_press = String.fromCharCode(event.keyCode);
  console.log(key_press);
  document.getElementById('guessed-letters').innerHTML = key_press;
};

然后这样做:

var alphabet = ['a','b','c','d','e','f','g','h','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
var usedChars = [];

document.onkeyup = function(event) {

  var key_press = String.fromCharCode(event.keyCode);
  console.log(key_press);
  usedChars.push(key_press)
  document.getElementById('guessed-letters').innerHTML = usedChars.toString();
};

【讨论】:

  • 在这种情况下我更喜欢textContent 而不是innerHTML
  • @PeterMader 很好。如果你不能告诉我主要是 C# dev :)
【解决方案2】:

改变这一行:

document.getElementById('guessed-letters').innerHTML = key_press;

到这里:

document.getElementById('guessed-letters').innerHTML += key_press;

应该达到你想要的。您将追加到现有的 HTML 而不是替换它。

【讨论】:

    【解决方案3】:

    var alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
    var outputElement = document.getElementById('guessed-letters');
    var guessedLetters = []; // stores the letters the user guessed
    
    document.addEventListener('keyup', function (event) {
      var key = event.key.toLowerCase();
      if (alphabet.indexOf(key) !== -1) {
        // the key is a letter in the alphabet
        if (guessedLetters.indexOf(key) === -1) {
          // the key has not been guessed
          guessedLetters.push(key);
          var string = guessedLetters.join(''); // join the letters together to one single string
          outputElement.textContent = string;
        }
      }
    });
    <span id="guessed-letters"></span>

    或者使用 jQuery:

    var alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
    var outputElement = $('#guessed-letters');
    var guessedLetters = []; // stores the letters the user guessed
    
    $(document).on('keyup', function (event) {
      var key = event.key.toLowerCase();
      if (alphabet.indexOf(key) !== -1) {
        // the key is a letter in the alphabet
        if (guessedLetters.indexOf(key) === -1) {
          // the key has not been guessed
          guessedLetters.push(key);
          var string = guessedLetters.join(''); // join the letters together to one single string
          outputElement.text(string);
        }
      }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <span id="guessed-letters"></span>

    【讨论】:

    • 哇,谢谢大家!它工作完美。一个问题,如果我要将 document.getElementById 更改为 jquery……它看起来会像……$('#guessed-letters').innerHTML 吗?还是我还需要将“文档”放在某个地方?
    • 使用 jQuery,您可以使用 .text(...).html(...) 设置元素的内容。
    猜你喜欢
    • 2021-07-31
    • 1970-01-01
    • 2020-10-15
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2017-03-26
    相关资源
    最近更新 更多