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

Wordle克隆游戏Local Storage报错:Uncaught TypeError排查求助

Wordle克隆游戏LocalStorage状态保存报错问题

我为自己的网站开发了一款主题化Wordle克隆游戏,想通过Local Storage保存用户游戏状态,大部分功能已经实现,但现在碰到Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')错误,找不到问题根源。这个错误导致在活跃游戏里刷新页面时,键盘无法渲染,游戏tile会扩展到关键词应有的宽度。我确认了getElementById和HTML里ID为game-keyboard的div是匹配的,但错误提示说找不到对应元素。

相关JS代码

加载LocalStorage的代码

const storedKeyboardContainer = window.localStorage.getItem("keyboardContainer");
if (storedKeyboardContainer) {
  document.getElementById("game-keyboard").innerHTML = storedKeyboardContainer;
  addKeyboardClicks();
}

保存游戏状态的函数

function preserveGameState() {
  window.localStorage.setItem("guessedWords", JSON.stringify(guessedWords));
  const keyboardContainer = document.getElementById("game-keyboard");
  window.localStorage.setItem("keyboardContainer", keyboardContainer.innerHTML);
  const boardContainer = document.getElementById("game-container");
  window.localStorage.setItem("boardContainer", boardContainer.innerHTML);
}

错误信息

Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')
  at loadLocalStorage (borodle.js:3:158)
  at HTMLDocument.<anonymous> (borodle.js:1:1547)

键盘对应的HTML元素

<div id="game-keyboard">
  <div class="keyboard-row">
    <button class="keyboard-button" data-key="q">q</button>
    <button class="keyboard-button" data-key="w">w</button>
    <button class="keyboard-button" data-key="e">e</button>
    <button class="keyboard-button" data-key="r">r</button>
    <button class="keyboard-button" data-key="t">t</button>
    <button class="keyboard-button" data-key="y">y</button>
    <button class="keyboard-button" data-key="u">u</button>
    <button class="keyboard-button" data-key="i">i</button>
    <button class="keyboard-button" data-key="o">o</button>
    <button class="keyboard-button" data-key="p">p</button>
  </div>
  <div class="keyboard-row">
    <div class="borodle-half"></div>
    <button class="keyboard-button" data-key="a">a</button>
    <button class="keyboard-button" data-key="s">s</button>
    <button class="keyboard-button" data-key="d">d</button>
    <button class="keyboard-button" data-key="f">f</button>
    <button class="keyboard-button" data-key="g">g</button>
    <button class="keyboard-button" data-key="h">h</button>
    <button class="keyboard-button" data-key="j">j</button>
    <button class="keyboard-button" data-key="k">k</button>
    <button class="keyboard-button" data-key="l">l</button>
    <div class="borodle-half"></div>
  </div>
  <div class="keyboard-row">
    <button class="keyboard-button" data-key="enter" class="wide-button">Enter</button>
    <button class="keyboard-button" data-key="z">z</button>
    <button class="keyboard-button" data-key="x">x</button>
    <button class="keyboard-button" data-key="c">c</button>
    <button class="keyboard-button" data-key="v">v</button>
    <button class="keyboard-button" data-key="b">b</button>
    <button class="keyboard-button" data-key="n">n</button>
    <button class="keyboard-button" data-key="m">m</button>
    <button class="keyboard-button" data-key="del" class="wide-button">DEL</button>
  </div>
</div>

我先通过教程搭建了初始游戏,再参考第二部分教程整合Local Storage保存游戏状态。请问是JS代码存在根本性错误,还是元素执行顺序的问题?

内容的提问来源于stack exchange,提问作者Pete Hayman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:20:42