2013-02-14 32 views
0

所以这里是我整理在一起的一个傻瓜实验,基本上试图用一个修饰符生成一个D风格的攻击轮。我想添加数字,但JavaScript不断添加数字作为字符串。我不知道如何来完成基本的数学.....下面是我的代码 -如何在结果中将一个随机数字添加到存储变量中作为数字,而不是将2个字符串添加在一起?

 function battle() 
    { 
     var CS = document.battleForm.playerCS.value; 
     var D20 = Math.ceil(Math.round(Math.random() * 20)) 
     var attackRoll = CS + D20 

     if (isNaN(CS)) 
     { 
      alert ("please provide your Combat Score!") 
      return 
     } 
     if (CS != '') 
     { 
      document.battleForm.enemyCS.value = attackRoll 
     } 
    } 
+0

'CS'是一个字符串;使用'parseFloat'或者一元加号 – 2013-02-14 20:47:28

回答

2

为了确保两个数字加在一起,尝试:

var num3 = +num1 + (+num2); 

可能优于使用parseIntparseFloat的原因有两个:

  • +将转换成任何号码(这意味着,你不需要一个不同的方法为整数和浮点数)
  • +将失败,如果任何一个val你不可兑换。 parseIntparseFloat忽略变量中的任何结尾文本。例如,parseInt("10px", 10)结果为10,而(+"10px")结果为NaN

这取决于你想要使用什么。

1
var CS = parseInt(document.battleForm.playerCS.value, 10); // or parseFloat if you expect float number 

任何形式的文本的值是一个字符串,所以你需要将其转换为数字。

相关问题