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
有人知道如何将userGuess推送到一个空数组,然后显示吗?如您所见,我成功地将userGuess推送到了alreadyGuessed数组,但它在页面上一次只显示一个字符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
最终目标是让alreadyguesed数组显示如下-字母alreadyguesed:a g r h e tTry
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);
}