Javascript 尝试将字母推入数组以显示在页面上 var secretWord=[]; var下划线word=[]; var=0; var GuessRemining=10; var alreadyguesed=[]; var wordLetter=true; //将HTML元素分配给变量 var cityText=document.getElementById(“城市文本”); var winsNum=document.getElementById(“wins num”); var guessnum=document.getElementById(“guesses num”) var lettersGuessed=document.getElementById(“猜测的字母”) //城市阵列 var city=[“巴黎”、“惠灵顿”、“河内”、“珀斯”、“马赛”、“伦敦”、“渥太华”、“苏黎世”、“波士顿”、“东京”、“底特律”]; //控制台.日志(城市); //从团队数组中随机选取单词,并将结果推送到空数组中。 函数picklanomcity(){ var randomCity=city[Math.floor(Math.random()*city.length)]; secretWord=randomCity.split(“”); 回归城市; } var cityPicked=pickRandomCity(); //获取secretWord的长度并将其作为下划线推送到am空数组 对于(变量i=0;i

Javascript 尝试将字母推入数组以显示在页面上 var secretWord=[]; var下划线word=[]; var=0; var GuessRemining=10; var alreadyguesed=[]; var wordLetter=true; //将HTML元素分配给变量 var cityText=document.getElementById(“城市文本”); var winsNum=document.getElementById(“wins num”); var guessnum=document.getElementById(“guesses num”) var lettersGuessed=document.getElementById(“猜测的字母”) //城市阵列 var city=[“巴黎”、“惠灵顿”、“河内”、“珀斯”、“马赛”、“伦敦”、“渥太华”、“苏黎世”、“波士顿”、“东京”、“底特律”]; //控制台.日志(城市); //从团队数组中随机选取单词,并将结果推送到空数组中。 函数picklanomcity(){ var randomCity=city[Math.floor(Math.random()*city.length)]; secretWord=randomCity.split(“”); 回归城市; } var cityPicked=pickRandomCity(); //获取secretWord的长度并将其作为下划线推送到am空数组 对于(变量i=0;i,javascript,Javascript,有人知道如何将userGuess推送到一个空数组,然后显示吗?如您所见,我成功地将userGuess推送到了alreadyGuessed数组,但它在页面上一次只显示一个字符 最终目标是让alreadyguesed数组显示如下-字母alreadyguesed:a g r h e tTryalreadyguesed.push(userGuess)在事件侦听器的elseif语句中 编辑: 根据@foxinatardis的建议,您在循环中修改和检查wordLetter的方式需要更改: var secre

有人知道如何将userGuess推送到一个空数组,然后显示吗?如您所见,我成功地将userGuess推送到了alreadyGuessed数组,但它在页面上一次只显示一个字符


最终目标是让alreadyguesed数组显示如下-字母alreadyguesed:a g r h e t

Try
alreadyguesed.push(userGuess)在事件侦听器的elseif语句中

编辑: 根据@foxinatardis的建议,您在循环中修改和检查
wordLetter
的方式需要更改:

var secretWord = [];
var underScoreWord = [];
var wins = 0;
var guessesRemaining = 10;
var alreadyGuessed = [];
var wordLetter = true;

//Assign HTML elements to variables
var cityText = document.getElementById("city-text");
var winsNum = document.getElementById("wins-num");
var guessesNum = document.getElementById("guesses-num")
var lettersGuessed = document.getElementById("letters-guessed")


//Array of cities
var city = ["Paris", "Wellington", "Hanoi", "Perth", "Marseille", "London", "Ottawa", "Zurich", "Boston", "Tokyo", "Detroit"];

//console.log(city);

//Pick random word from the team array and push the result to an empty array. 
function pickRandomCity() {
    var randomCity = city[Math.floor(Math.random() * city.length)];
    secretWord = randomCity.split('');
    return randomCity;
}

var cityPicked = pickRandomCity();




//Get length of secretWord and push as underscores to am empty array
for (var i = 0; i < cityPicked.length; i++) {
    underScoreWord.push("_");

}

console.log('secretWord : ' + secretWord);
// console.log('underScoreWord : ' + underScoreWord);
// console.log('------------------');
// console.log('cityPicked : ' + cityPicked);



//Check for letters
//Listen for key press and check to see if its a match
document.onkeyup = function letterCheck(event) {
    var userGuess = event.key;

    for (var j = 0; j < secretWord.length; j++) {
        if (userGuess.toUpperCase() === secretWord[j].toUpperCase()) {
            wordLetter = true;
            underScoreWord[j] = userGuess;
            guessesRemaining--;
        }

        else if (!wordLetter) {
            alreadyGuessed.push();

            // guessesRemaining--;
        }
    }


    console.log("Already guessed: " + alreadyGuessed);

    lettersGuessed.textContent = ("Letters already guessed: " + alreadyGuessed);


    // Write to page
    cityText.textContent = underScoreWord.join(" ");
    winsNum.textContent = ("Wins: " + wins);
    guessesNum.textContent = ("Guesses Remaining: " + guessesRemaining);





    console.log(underScoreWord);




}

通过此更改,您实际上不再需要
wordLetter
变量,除非您在其他地方使用它来做其他事情。

看起来
wordLetter
是一个初始化为true的全局变量。而且看起来它从来没有设置为false,所以您对
alreadyGuessed.push(userGuess)的调用,将永远无法访问code>!wordLetter
始终为false。

您可以存储使用对象按下的键,并在每次按键事件开始时检查用户是否按下了该键。
我还将for循环切换为map

    if (userGuess.toUpperCase() === secretWord[j].toUpperCase()) {
        wordLetter = true;
        underScoreWord[j] = userGuess;
        guessesRemaining--;
    } else {
        wordLetter = false;
        alreadyGuessed.push(userGuess);

        // guessesRemaining--;
    }

你能提供HTML吗?当然,我现在就添加它。在@foxinatardis的建议之后,在我的答案中添加了更多内容
 var guessedLetters = {};
 document.onkeyup = function letterCheck(event) {
    var userGuess = event.key;
    if (!guessedLetters[userGuess.toUpperCase()]) { // check if user pressed this key
        alreadyGuessed.push(userGuess.toUpperCase());
        guessedLetters[userGuess.toUpperCase()] = true;
        guessesRemaining--;
    } else { // this key has been pressed before, dont do anything
        return;
    }
    secretWord.map((n, i) => {
        if (userGuess.toUpperCase() === n.toUpperCase()) {
            underScoreWord[i] = n;
        }
    })
    console.log("Already guessed: " + alreadyGuessed);
    lettersGuessed.textContent = ("Letters already guessed: " + alreadyGuessed);
    // Write to page
    cityText.textContent = underScoreWord.join(" ");
    winsNum.textContent = ("Wins: " + wins);
    guessesNum.textContent = ("Guesses Remaining: " + guessesRemaining);
    console.log(underScoreWord);
}