首页 > 解决方案 > 如何让我的 Javascript 函数正确使用其输入值?

问题描述

我的函数正确使用了 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);

标签: javascriptuser-input

解决方案


弄清楚了。fHitPoints 给出的值是 124,没有 '+ vLevel + 10' 部分。它实际上是取 124 + 50 + 10 并返回 1245010。我对编码非常陌生,所以我对数据类型还不太了解。

出于某种原因,fStat 正确地进行了数学运算,但我想我可以从这里解决它。


推荐阅读