我的函数正确地使用了var vLevel的第一个实例,但在最后再次包含vLevel时返回了一个错误的大值。如果我用数字50替换第二个vLevel,函数将返回正确的值。输入值被强制设置为50,目前仅用于测试目的。
这是我的输入部分:
<th id='00'>Lv.<input id='iLevel' type='number' min='2' max='100' value= '50'></th>
相关变量定义:
var vLevel = document.getElementById('iLevel').value;
和功能:
function fHitPoints(baseStat, iv, ev, vLevel){
return Math.floor((((baseStat*2 + iv + Math.floor(ev/4))*vLevel)/100) + vLevel + 10);
}
所有其他变量都可以正常工作。如果有帮助,该功能是以下循环的一部分:
var i = 0
var j = 0
while (j<17){
while (i<4){
if (i == 0) {
table.rows[i+1].cells[j+1].innerHTML =
fHitPoints(baseStat[j][i], iv[j][i], ev[j][i], vLevel);
i++;
} else {
table.rows[i+1].cells[j+1].innerHTML =
fStat(baseStat[j][i], iv[j][i], ev[j][i], vLevel, nature[j][i]);
i++;
}
}
i = 0
j++
}
fStat函数:
function fStat(baseStat, iv, ev, vLevel, nature){
return Math.floor((Math.floor(((baseStat*2 +
iv + Math.floor(ev/4))*vLevel)/100) + 5)*nature);
想明白了。fHitPoints给出的值124没有"+vLevel+10"部分。它实际上是拿下124+50+10,然后返回1245010。我对编码非常陌生,所以我对数据类型还不太了解。
出于某种原因,fStat计算正确,但我想我可以从这里解决它。
在相关变量定义中:
var vLevel = document.getElementById('iLevel');
以及在函数的调用使用中:
Number(vLevel.value)