在Javascript中坚持使用If语句

时间:2014-04-16 17:59:57

标签: javascript if-statement

我对编程很新,所以如果事情很容易解决,我会事先道歉。

为了提高我的技能,我一直在设计基于JS的小型网站,然后在我完成之前的网站之后转移到另一个更复杂的网站。

我目前正在开设一个网站,帮助您计划某个视频游戏中的角色(Dark Souls II,万一有人想知道)。该网站有一个下拉菜单,您可以从八个起始课程中选择一个。选择一个后,网站会更新以显示特定班级的统计数据。

除了显示每个班级的起始统计数据之外,还有一个部分允许您增加或减少统计数据,以便提前计划您的角色。这是我遇到问题的地方。

我使用的增加功能工作正常,但我在减少统计数据时遇到问题。理想情况下,我希望它减少一个统计但不超过该统计的起点。它工作正常,直到我尝试将低于10的START数据减少到10以下。

例如,Warrior类以7 Vigor开头。我可以将它增加到9,然后将其减少到7.但是,当我将其增加到10然后尝试减少按钮时,没有任何作用。但是,对于具有大于10的起始Vigor的类,我可以增加和减少而没有任何问题。我正在使用的代码如下:

function decreaseVigor() {
  for (i = 0; i < classStats.length; i++) {
    if (chosenClass == classStats[i][0]) {
      if (vigor.innerHTML > startingVigor.innerHTML) {
        soulLevel.innerHTML = classStats[i][1] -= 1;
        vigor.innerHTML = classStats[i][2] -= 1;
      }
    }
  }
}

我知道问题出在第二个If语句中,但我不知道它为什么不起作用。 Warrior类的startVigor是7,那么为什么一旦我将它增加到10或更高,它是否会让我减少Vigor?

如果它有帮助,这里是所有类的统计数据:

classStats = [

["warrior", 12, 7, 6, 6, 5, 15, 11, 5, 5, 5],
["knight", 13, 12, 6, 7, 4, 11, 8, 9, 3, 6],
["swordsman", 12, 4, 8, 4, 6, 9, 16, 6, 7, 5],
["bandit", 11, 9, 7, 11, 2, 9, 14, 3, 1, 8],
["cleric", 14, 10, 3, 8, 10, 11, 5, 4, 4, 12],
["sorcerer", 11, 5, 6, 5, 12, 3, 7, 8, 14, 4],
["explorer", 10, 7, 6, 9, 7, 6, 6, 12, 5, 5],
["deprived", 1, 6, 6, 6, 6, 6, 6, 6, 6, 6]

];

他们按顺序排列:SoulLevel(或总等级),活力,耐力,活力,调整,力量,敏捷,适应性,智力,信仰。

如果我选择Knight类,我将能够自由增加或减少,因为它的startingVigor是12.我想知道为什么当我将数字增加到10到10或更高时它不起作用。

感谢您提供任何帮助!

2 个答案:

答案 0 :(得分:2)

您正在比较字符串,而不是数字

vigor.innerHTML > startingVigor.innerHTML

您可以在控制台中看到它:

> "7" > "8"
false
> "7" > "10"
true
> 7 > 8
false
> 7 > 10
false

使用parseInt / parseFloat

parseInt(vigor.innerHTML,10) > parseInt(startingVigor.innerHTML,10)

答案 1 :(得分:0)

我想这就像字符串一样进行验证。尝试使用parseInt()或parseFloat()。

喜欢这样的东西:

parseInt(vigor.innerHTML, 10); /* or maybe */ parseFloat(vigor.innerHTML, 10)

当您加载value.innerHTML时,您会得到一个字符串,您需要将其转换为数字。