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

如何将函数中修改的值重置为初始值?示例代码问题解析

解决种族属性加成重置问题

你的问题核心在于每次选择种族时,没有先将属性值恢复到初始状态,而是直接在已修改的值上继续叠加,导致切换种族时加成累积了。咱们可以通过保存初始属性值的方式来解决这个问题。

问题分析

当前代码里,每次选择Dragonborn或Dwarf时,都是直接对页面上的strScore、chaScore、conScore的值做加法操作,但没有记录这些属性的原始初始值(比如你提到的10)。所以当你先选Dragonborn把力量加到12,再选Dwarf时,会在12的基础上继续加体质,而不是回到初始的10再计算。

解决方案:保存初始值,每次切换先重置

我们可以在页面加载时就保存好所有属性的初始值,每次触发种族选择事件时,先把属性值重置为初始值,再应用当前选中种族的加成。

修改后的代码示例:

// 页面加载时保存初始属性值
const initialStats = {
  str: parseInt(document.getElementById("strScore").value),
  con: parseInt(document.getElementById("conScore").value),
  cha: parseInt(document.getElementById("chaScore").value)
};

function pRace(playerRace) {
    var race = playerRace.value;
    
    // 第一步:先把所有属性重置为初始值
    document.getElementById("strScore").value = initialStats.str;
    document.getElementById("conScore").value = initialStats.con;
    document.getElementById("chaScore").value = initialStats.cha;
    
    // 第二步:应用当前种族的加成
    if (race == 'Dragonborn') {
        document.getElementById("strScore").value = initialStats.str + 2;
        document.getElementById("chaScore").value = initialStats.cha + 1;
    } else if (race == 'Dwarf') {
        document.getElementById("conScore").value = initialStats.con + 2;
    }
}

关键说明

  • initialStats对象会在页面加载时记录所有属性的初始值,确保每次切换种族时都能回到最开始的状态。
  • 每次调用pRace函数时,先执行重置操作,再根据选中的种族添加对应的属性加成,这样就不会出现叠加问题了。
  • 如果后续还有更多种族需要添加,只需要在else if里继续扩展逻辑即可,重置步骤无需改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:17:55