我正在开发一个网站,允许您通过输入统计数据和关卡来创建自己的宠物小精灵。
我在没有计算IV的情况下工作(个人价值是影响他们成长的所有口袋妖怪的可变数据)。
这是我工作的初始功能
function hpStat(pokemonLevel) {
"use strict";
var baseHP = document.getElementById("baseHP").value;
var hp = Math.floor(((baseHP * 2) * (pokemonLevel / 100)) + 10 + pokemonLevel);
return hp; }
但是当我尝试添加IV计算时,它给了我可笑的高数字。我尝试调整操作的顺序,但我总是得到一个大量的数字。我可以找到我的错误。 新功能:
function hpStat(pokemonLevel) {
"use strict";
var baseHP = document.getElementById("baseHP").value;
var hpIV = document.getElementById("hpIV").value;
var hp = Math.floor((((hpIV + baseHP) * 2) * (pokemonLevel / 100)) + 10 + pokemonLevel);
return hp; }
" hpIV" element是一个范围为0-31的输入标记。
答案 0 :(得分:0)
将您的值转换为整数。他们以字符串形式运作。
答案 1 :(得分:0)
因此输入元素的.value
属性将该值作为字符串返回。然后,如果你在不知不觉中尝试使用字符串进行数值计算,就会发生奇怪的事情。一个例子:
"1" + 1;
// Returns "11" <- string
1 + 1
// Returns 2 <- number
因此,添加IV和基本HP的代码使用字符串,而不是以数字方式添加,而是将字符串连接起来。然后当你乘以2时,它会自动再次转换回数字,导致你的奇怪结果。要修复它,只需确保您的值是get go:
中的数字// Note that we now wrap these in a Number() call to cast them.
var baseHP = Number(document.getElementById("baseHP").value);
var hpIV = Number(document.getElementById("hpIV").value);
从那里你的代码应按原样工作。