我要做的是为口袋妖怪制作一个EV轨道,你不需要知道它是什么。基本上我想添加,例如,3进入攻击输入框,2进入防御和点击提交,然后3应该出现在受到攻击的网格中,2则出现在防御下。然后如果我在攻击输入框中输入1,它应该在网格中的显示上加1。
但是现在,它不是像数字那样添加数字,而是将它们视为字符串,只将它们添加到攻击显示中。
这是我的代码 http://pastebin.com/xy8232nG
很抱歉,如果我的问题与我的问题格式有关,请告诉我,我会修复它
所以我添加了parseint的东西,它工作正常,直到我更改数字或添加2攻击和2到HP或类似的东西,它给了我" NaN"而不是数字
编辑:所以只有攻击和特殊攻击显示有效,如果我将值输入任何其他属性,特殊攻击和攻击值会变为" NaN"
答案 0 :(得分:1)
首先,您在代码中意外地将defD写为defF。
但更重要的是,你正在混合字符串和数字。在Javascript中,innerHTML返回一个字符串。一个字符串可以是任何一段文字,例如"我是一个果冻甜甜圈"。它返回一个字符串,因为innerHTML能够携带多个数字 - 它也可以包含文本。所以innerHTML返回一个字符串,只是为了安全。
因此,您尝试在字符串(文本片段)中添加数字,而无法在句子中添加数字。因此,Javascript决定将数字视为另一段文本而不是数字,并简单地在第一个数字的末尾添加第二个数字而不是数学方程式。
现在很多人都在说"使用parseInt,使用parseInt!"通常,这会奏效。这是因为parseInt是一个接受字符串并将其转换为数字的函数。但是,当你开始时,你的一些文本框是空的,所以parseInt不知道该怎么做。所以你得到NaN(或者,"不是数字"确切地说),因为该框是空白的。
通常,我避免使用parseInt,因为它是一个函数,一般来说,使用普通数学比使用JS中的函数更快更好。解决问题的一个简单方法是将字符串乘以1。现在,我知道你在想什么。 "但是如果在文本中添加数字不起作用,为什么会增加?"简单。你不能繁殖文字。因此,Javascript被迫将其视为两个数字,而不是两个字符串。
atk += document.getElementById('atk').value*1;
spa += document.getElementById('spa').value*1;
def += document.getElementById('def').value*1;
spd += document.getElementById('spd').value*1;
hp += document.getElementById('hp').value*1;
spe += document.getElementById('spe').value*1;
document.getElementById("atkD").innerHTML = atk;
document.getElementById("spaD").innerHTML = spa;
document.getElementById("defD").innerHTML = def;
document.getElementById("spdD").innerHTML = spd;
document.getElementById("hpD").innerHTML = hp;
document.getElementById("speD").innerHTML = spe;
额外的好处是,这不会像parseInt一样返回NaN。在你的代码中试一试,看看。
(注意:您可能希望使用for循环来遍历这些并缩短代码。这不是必需的,但在代码中看起来会更好。)
答案 1 :(得分:0)
使用parseInt
函数使值成为整数。例如:
.....
atk += parseInt(document.getElementById('atk').value);
.....