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

JS点击游戏按钮点击数值不更新且控制台报game未定义错误求助

问题修正方案

你遇到的game is not defined报错本质是JS代码内存在多处语法、拼写错误,导致整个script脚本块解析失败,game变量没有被成功声明。以下是所有问题及对应修正方法:

1. 对象属性分隔符缺失

display对象的updateScore方法结束后没有加逗号分隔下一个方法updateShop,属于JS语法错误,直接导致整个脚本解析失败。
修正方案:在updateScore方法的闭合大括号后添加逗号。

2. 多处拼写错误

所有错误拼写及对应正确写法如下:

  • game.getScorePerSecond方法中bulding.name → building.name
  • building对象的购买方法名purchse → purchase
  • 页面加载事件windown.onload → window.onload
  • 页面加载事件中调用的disaply.updateShop → display.updateShop

3. updateShop方法字符串拼接语法错误

你拼接HTML字符串时存在引号嵌套错误、字符串断行未处理、变量拼接语法错误的问题,导致该方法解析失败。
修正后的updateShop方法参考:

updateShop: function() {
  document.getElementById("shopContainer").innerHTML = "";
  for (let i = 0; i < building.name.length; i++) {
    document.getElementById('shopContainer').innerHTML += `<table class="shopButton unselectable" onclick="building.purchase(${i})"><tr><td id="image"><img src="${building.image[i]}"></td><td id="nameAndCost"><p>${building.name[i]}</p><p><span>${building.cost[i]}</span> films</p></td><td id="amount"><span>${building.count[i]}</span></td></tr></table>`;
  }
}

这里使用ES6模板字符串简化拼接,避免引号混淆问题。

4. 不存在的属性引用

display.updateScore方法中直接调用了game.scorePerSecond,但代码中只定义了game.getScorePerSecond()方法,没有声明对应的属性。
修正方案:将game.scorePerSecond替换为game.getScorePerSecond()。

5. 其他待修正问题

  • HTML中scoreContainer节点内有多余的</p>闭合标签,直接删除即可
  • HTML节点上绑定的buyCursor、buyCamera、resetGame等方法均未定义,你可以删除原有写死的商店HTML(因为updateShop会动态生成商店节点),或者自行补充对应方法实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:15:04