javascript - 如何让我的 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);
解决方案
弄清楚了。fHitPoints 给出的值是 124,没有 '+ vLevel + 10' 部分。它实际上是取 124 + 50 + 10 并返回 1245010。我对编码非常陌生,所以我对数据类型还不太了解。
出于某种原因,fStat 正确地进行了数学运算,但我想我可以从这里解决它。
推荐阅读
- flutter - 如何在颤振中将函数作为参数传递
- spring - Spring 的缓存抽象可以将动态时间应用于方法的结果吗?
- c# - NLog 显示 'lambda_method' 而不是记录器名称
- android - 使用 ExoPlayer 在 Android 中获取 CONSCRYPT
- erlang - 在一个时间间隔后调用一个函数,每次都使用更新的参数
- sql - 如何将具有相同列的两个表转换为一个添加计数并按第三个表分组
- python - 使用子进程打开 Acrobat 时,Tkinter 失去焦点
- android - 未找到 AndroidX GMS
- c# - 如何从 C# 将值发送到 cshtml 模板
- php - 发送“POST”信息后需要读取特定的响应头进行登录