You need to enable JavaScript to run this app. 开发2048复刻项目时,棋盘生成函数未在.grid容器内添加div元素如何解决
优惠活动
大模型
产品
解决方案
定价
更多

开发2048复刻项目时,棋盘生成函数未在.grid容器内添加div元素如何解决

2048棋盘生成失败修复方案

核心错误:事件名拼写错误

你当前绑定的事件为DOMContentLoader,属于拼写错误,浏览器原生的DOM解析完成事件是DOMContentLoaded(末尾无r)。事件名不匹配会导致整个回调函数永远不会被触发,所有棋盘生成逻辑完全没有运行。

潜在隐患:未声明的全局变量

循环内创建的square变量没有使用let/const声明,会自动挂载为全局变量,后续开发中如果出现同名变量会引发不可预期的逻辑错乱。

修正后完整JS代码

document.addEventListener('DOMContentLoaded',() => {
    const table = document.querySelector(".grid");
    const scoreboard = document.getElementById("score");
    const resultDisplay = document.getElementById("result");
    const width = 4;

    function gameBoard(){
        let squares = [];
        for(let i=0; i < width*width; i++){
            // 新增let声明避免全局污染
            let square = document.createElement("div");
            square.innerHTML = 0;
            table.appendChild(square);    
            squares.push(square);
        }
        // 返回方块数组,方便后续逻辑调用
        return squares;
    }
    // 如需后续操作方块数组,可保存调用结果:const allSquares = gameBoard();
    gameBoard();
});

补充说明

你当前将script标签放在head中是可行的,因为修正后的DOMContentLoaded事件会等待DOM完全解析完成后再执行回调,无需额外将script移到body末尾。

验证要点

  • 打开浏览器开发者工具控制台,确认无事件相关报错
  • 修正后刷新页面,.grid容器内会生成16个默认内容为0的div元素

内容的提问来源于stack exchange,提问作者Nico Fabeiro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 07:15:03