You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript Hangman游戏问题:正确字母无法替换问号

解决Hangman游戏正确字母无法替换问号的问题

核心问题分析

你的代码存在三个关键缺失点:

  1. 未初始化存储正确猜字母的correctGuesses数组
  2. 猜中正确字母时,未将字母加入correctGuesses数组
  3. 猜中后未调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:15:41