JavaScript Hangman游戏问题:正确字母无法替换问号
解决Hangman游戏正确字母无法替换问号的问题
核心问题分析
你的代码存在三个关键缺失点:
- 未初始化存储正确猜字母的
correctGuesses数组 - 猜中正确字母时,未将字母加入
correctGuesses数组 - 猜中后未调用
secretWord()更新页面显示
具体修改步骤
1. 初始化全局变量
在代码最开头添加必要的全局变量定义:
let correctGuesses = []; // 存储猜中的正确字母 let wordToFind = ""; let wordParagraph; // 用于显示隐藏单词的元素 let guessesLeft = 6; // 可根据需求调整初始剩余猜测次数 let wrongGuesses = 0;
同时确保wordParagraph被正确创建并添加到页面:
// 在游戏初始化部分添加(比如在letterList函数之前) wordParagraph = document.createElement("p"); wordParagraph.id = "secret-word"; document.getElementById("game-container").appendChild(wordParagraph);
2. 修正guessedLetter函数
修改正确字母分支的逻辑,添加字母到数组并更新显示:
function guessedLetter(inTxt) { if (wordToFind.indexOf(inTxt) === -1) { console.log("Wrong Letter"); guessesLeft--; wrongGuesses++; updateWrongs(); wrongGuess(); } else { // 避免重复添加同一字母 if (!correctGuesses.includes(inTxt)) { correctGuesses.push(inTxt); console.log("Correct Letter"); // 调用secretWord更新页面上的隐藏单词 secretWord(); // 可选:判断是否猜完所有字母,触发胜利逻辑 if (wordToFind.split("").every(letter => correctGuesses.includes(letter))) { alert("恭喜!你猜对了所有字母!"); // 这里可以添加游戏重置的逻辑 } } } }
3. 补充getRandomWord函数实现
你的代码中调用了getRandomWord但未给出实现,添加这个函数:
function getRandomWord(wordArray) { return wordArray[Math.floor(Math.random() * wordArray.length)]; }
为什么之前的方法无效
你之前尝试直接替换问号或修改innerHTML的方式,没有结合correctGuesses数组的状态来动态生成显示内容。而secretWord函数本身的逻辑是正确的——它会根据correctGuesses里的字母,把对应位置的问号替换成正确字母,只要维护好这个数组并重新调用它,就能实现正确的显示更新。
内容的提问来源于stack exchange,提问作者Luddepb
相关产品推荐
相关产品推荐

