Javascript如何将值重置为原始值

Javascript如何将值重置为原始值,javascript,html,Javascript,Html,如何将函数中设置的值重置为原始值 例如,我得到的值是10 在一个函数中,我选择了一些将值(+2)更改为12的值,但当我选择其他一些将值(+5)更改为15的值时,结果是它将5添加到12的顶部,而不是首先将原始值设置回10。 与示例代码相同,当我选择Dwarf时,它应该重置Dragonborn对值所做的更改 功能练习(playerRace){ var race=playerRace.value; 如果(种族=='Dragonborn'){ document.getElementById(“strSc

如何将函数中设置的值重置为原始值

例如,我得到的值是10 在一个函数中,我选择了一些将值(+2)更改为12的值,但当我选择其他一些将值(+5)更改为15的值时,结果是它将5添加到12的顶部,而不是首先将原始值设置回10。 与示例代码相同,当我选择Dwarf时,它应该重置Dragonborn对值所做的更改

功能练习(playerRace){
var race=playerRace.value;
如果(种族=='Dragonborn'){
document.getElementById(“strScore”)。值=
parseInt(document.getElementById(“strScore”).value)+2;
document.getElementById(“chaScore”).value=parseInt(document.getElementById(“chaScore”).value)+1;
}else if(种族=='Dwarf'){
document.getElementById(“conScore”).value=parseInt(document.getElementById(“conScore”).value)+2;
}
}

您可以使用默认值设置例如array或obj,并在需要时获取这些值
constdefaultattributes={str:10,con:10,dex:10,int:10,wis:10,cha:10}
您可以在每个输入上使用
dataset
属性来存储以前的值。通过这种方式,您可以使用以前的值和当前值来外推增量

下面的示例每次发生更改时都会对表单进行大量修改。您可以改为使用视图/模型,并验证对象上的值

const statForm=document.forms['stats'];
constdefaultstats={str:10,con:10,dex:10,int:10,wis:10,cha:10};
常量字符={
统计:{…defaultStats},
分配:0,
游泳池:7
};
常量main=()=>{
打开('.reset all',单击',打开ResetAll);
打开('.reset',单击',打开重置);
on('.stat input',change',ONSTATCHENGE);
重置格式(statForm);
};
constdisplaystats=()=>{
console.log(Object.entries(字符)
.map(([k,v])=>`${k}${JSON.stringify(v)}`)
.join('\n');
};
常量adjustMaxRange=()=>{
剩余常量=character.pool-character.allocated;
for(让stat进入defaultStats){
const newMax=parseInt(statForm[stat].value,10)+剩余值;
statForm[stat].setAttribute('max',newMax);
}
displayStats();
};
常量重置形式=(形式)=>{
for(让stat进入defaultStats){
const defaultValue=defaultStats[stat];
表单[stat].value=character.stats[stat]=defaultValue;
表单[stat].dataset.prevValue=defaultValue;
表单[stat].setAttribute('min',defaultValue);
}
character.allocated=0;
adjustMaxRange();
};
const onStatChange=(e)=>{
常量输入=e.目标;
const prevValue=parseInt(input.dataset.prevValue);
const currValue=parseInt(input.value,10);
常数增量=当前值>当前值?1:-1;
input.dataset.prevValue=currValue;
character.stats[input.name]=currValue;
字符分配+=增量;
adjustMaxRange();
};
const onReset=e=>{
const input=e.target.parentElement.querySelector('input');
const stat=input.name;
const currValue=parseInt(input.value,10);
const defaultValue=defaultStats[stat];
常量增量=当前值-默认值;
statForm[stat].value=character.stats[stat]=defaultValue;
input.dataset.prevValue=默认值;
字符分配-=增量;
adjustMaxRange();
};
const onResetAll=e=>resetForm(statForm);
const on=(选择器、事件名称、处理程序)=>
document.querySelectorAll(selector.forEach)(e=>
e、 addEventListener(eventName,handler));
main()
.stats{
显示器:flex;
弯曲方向:立柱;
宽度:25%;
}
统计局{
显示器:flex;
弯曲方向:行;
对齐项目:居中;
边缘底部:0.25em;
}
.stats、.stats.stat*,.stats按钮{字体大小:较小;}
.stat标签{flex:1}
.stat输入{width:4em;}
.stat按钮{宽度:4em;左边距:0.33em;}
/*堆栈片段*/
.作为控制台包装{
位置:绝对!重要;
排名:0;
右:0;
左:未设置!重要;
底部:未设置!重要;
最大高度:99vh!重要;
宽度:72%;
保证金:0;
边界顶部:无!重要;
}
.作为控制台。作为控制台行代码,
.作为控制台。作为控制台行:之后{
字体大小:较小;
}

力量
重置
宪法
重置
灵巧
重置
智力
重置
智慧
重置
魅力
重置
全部重置

我想您应该将原始值存储在某个地方…您可以将这些值存储为元素数据集属性的一部分-请参阅问题的需要改进您可以在任何临时隐藏元素中保留值。