在javascript中运行循环后将var重置为空白

问题描述 投票:0回答:1

救命!我一直在靠墙撞击几个小时,试图找到一种方式,一旦我的“游戏”结束,无论是赢得还是失去我的信件,我们都会重新设置var并且不再显示我的用户猜测。我可以通过设置lettersGuessed =“”来完成第一个循环/循环;但是当输入一个新的userGuess时,我得到一个未被捕获的类型错误,即lettersGuessed不是一个函数。

// array  of letters for the computer to chose from 
var letterBank = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]

var lettersGuessed = []

// variables starting value for tally counter
var wins = 0;
var losses = 0;
var guessesLeft = 6;


var compGuess = letterBank[Math.floor(Math.random() * letterBank.length)];


for (var i = 0; i <= guessesLeft; i++) {

  document.onkeyup = function(event) {
    // var for use of collecting key answers for both user and computer. 

    var userGuess = event.key;
    lettersGuessed.push(userGuess);

    // if statements to get a win or loss 
    if (userGuess === compGuess) {
      guessesLeft = 7;
      alert("You won!")
      compGuess = letterBank[Math.floor(Math.random() * letterBank.length)];
      userGuess = "";
      lettersGuessed = "";
      wins++;
    }

    if (userGuess != compGuess) {
      guessesLeft--;
    }
    
    if (guessesLeft === 0) {
      alert("GAME OVER");
      guessesLeft = 6;
      losses++;
      userGuess = "";

      compGuess = letterBank[Math.floor(Math.random() * letterBank.length)];
    }

    // variables to display a win/loss tally and the computer/user guesses    
    var html =
      "<p> your choice: " + userGuess + "</p>" +
      "<p> losses: " + losses + "</p>" +
      "<p> wins: " + wins + "</p>" +
      "<p> Guesses left: " + guessesLeft + "</p>" +
      "<p> Your Guesses so far:" + lettersGuessed + "</p>";

    // sends info collected from html var to the game div
    document.querySelector("#game").innerHTML = html;
  };

};
<div id="game">Type a letter</div>
javascript arrays
1个回答
2
投票

lettersGuessed是声明时的数组而不是字符串。要重置,您需要使用与第一次初始化相同的代码。所以在你的第一个if语句中,替换

lettersGuessed = ""; 

lettersGuessed = [];
© www.soinside.com 2019 - 2024. All rights reserved.