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

JS游戏升级功能Failed未定义报错及金币校验逻辑异常求解

问题根因&修复方案

1. 错误根因

  • 分支结构错位:你的else if和最外层的if (!gameData.minorsettlementApplied)配对,仅当已经完成升级时才会判断金币是否足够,未升级且金币不足的场景没有对应处理分支,这是两个异常的共同核心原因
  • 成本校验不一致:你要求的升级门槛是300金币,但minorsettlement.buildcost定义为250,判断条件和实际扣费数值不统一
  • 「Failed is not defined」报错:和分支错位直接相关,由于金币不足时不会走到对应分支,结合var的变量提升特性,如果有全局作用域的代码引用该变量就会抛出未定义错误,调整分支位置后报错会自然消失
  • 你遇到的升级状态异常修改问题,是代码缩进混乱导致大括号配对错误,minorsettlementApplied = true逻辑脱离了金币判断分支导致的

2. 修复后完整代码

var gameData = { // 玩家属性
  stonePerClick: 0, // 升级属性
  stoneUpgradeCost: 25,
  woodPerClick: 0,
  woodUpgradeCost: 15,
  gold: 0, // 资源
  wood: 0,
  stone: 0,
  planks: 0,
  plankcost: 300,
  minorsettlementApplied: false // 升级状态
}

// 统一升级成本为300,和需求对齐
const minorsettlement = { woodgen: 40, buildcost: 300 }
function settlementUpgrade() {
  // 先判断是否已升级
  if (gameData.minorsettlementApplied) {
    document.getElementById("failed").innerHTML = "该升级已购买"
    return
  }
  // 未升级再判断金币是否足够
  if (gameData.gold >= minorsettlement.buildcost) {
    gameData.gold -= minorsettlement.buildcost
    gameData.wood += minorsettlement.woodgen
    gameData.minorsettlementApplied = true
    document.getElementById("woodCount").innerHTML = "Wood: " + gameData.wood
    document.getElementById("accepted").innerHTML = "Purchased Upgrade."
  } else {
    // 金币不足直接提示
    document.getElementById("failed").innerHTML = "Not Enough Gold."
  }
}

function UpgradedSettlementIncome() {
  gameData.wood += minorsettlement.woodgen
  // 注意原代码此处更新的是金币DOM,但修改的是木材数值,可根据需求调整
  document.getElementById("goldIncome").innerHTML = "Gold: " + gameData.gold
  // 如需同步更新木材展示可取消下一行注释
  // document.getElementById("woodCount").innerHTML = "Wood: " + gameData.wood
}

var buildingUpgraded = window.setInterval(function () {
  if (gameData.minorsettlementApplied)
    UpgradedSettlementIncome()
}, 1000)

3. 可选优化点

  • 升级成功/失败的提示可以加定时消失逻辑,避免一直显示在页面上
  • 可以把所有常量数值统一到gameData或者单独的配置对象里,避免后续修改出现成本不一致的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:42:02