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

点击JS生成的「再来一局」按钮后旧内容未清除的问题求助

问题解决:重置游戏时清除key-container原有内容

问题:点击JavaScript生成的「Play again!」按钮执行resetGame()函数时,#key-container内的原有提示文本和按钮未被清除,新生成的键盘会叠加在原有内容下方,需要重置时完整清除旧内容再生成新键盘。

解决方案

在resetGame()函数的开头,添加一行代码清空#key-container的内容,这样后续调用createKeys()时就会在空容器中生成新键盘,避免叠加。

修改后的JavaScript代码

var animals = ["dog","cat"]
let answer = "";
let guessed = [];
let animalStatus = null;
let wrongGuess = 0;

function randomAnimal() {
    answer = animals[Math.floor(Math.random() * animals.length)];
}

function createKeys() {
const keyboard = document.querySelector("#key-container");
const keys = [
    "q", "w", "e", "r", "t", "y", "u", "i", "o", "p",
    "a", "s", "d", "f", "g", "h", "j", "k", "l",
    "z", "x", "c", "v", "b", "n", "m"
];

keys.forEach(key => {
    const buttonElement = document.createElement("button");
    const insertLineBreak = ["p", "l"].indexOf(key) !== -1;
    buttonElement.textContent = key;
    buttonElement.setAttribute("id", key);
    buttonElement.addEventListener('click', () => handleClick(key));
    keyboard.appendChild(buttonElement);

    if (insertLineBreak) {
        keyboard.appendChild(document.createElement("br"));
    }
});
}

function guessedAnimal() {
    animalStatus = answer.split("").map(letter => (guessed.indexOf(letter) >= 0 ? letter : " _ ")).join("");
    document.getElementById("word-input").innerHTML = animalStatus;
}

function gameWon() {
    if (animalStatus === answer) {
        let oldScore = parseInt(document.getElementById("win").innerText);
        document.getElementById("win").innerText = ++oldScore;
        document.getElementById("key-container").innerHTML = `Well done! That was correct!<br> <button id="reset" 
        onclick="resetGame()">Play again!</button>`;
    }
}

function gameLost() {
    if (wrongGuess === 6) {
        let oldScore = parseInt(document.getElementById("loss").innerText);
        document.getElementById("loss").innerText = ++oldScore;
        document.getElementById("key-container").innerHTML = `Unfortunately you ran out of possible guesses.<br>
        Correct answer was: ${answer}!<br><button id="reset" onclick="resetGame()">Play again!</button>`;
    }
}

function resetGame() {
    // 新增:清空key-container内的所有内容
    document.getElementById("key-container").innerHTML = "";
    guessed = [];
    wrongGuess = 0;
    document.getElementById("pic").src = `assets/images/hangmanGamePic0.png`;
    randomAnimal();
    guessedAnimal();
    createKeys();
}

说明

  • 在resetGame()函数开头添加document.getElementById("key-container").innerHTML = "";,会直接清除容器内的所有现有元素(包括提示文本和Play again按钮),确保后续生成的新键盘是从头渲染,不会和旧内容叠加。

内容的提问来源于stack exchange,提问作者Darko Zlatarek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:30:27