Javascript / jQuery给出了添加的奇怪结果

时间:2015-02-05 14:19:17

标签: javascript jquery addition

我刚开始使用javascript和jquery,现在我遇到了这样的问题:

var myCharacter = ('#myCharacter').css('top'); // gives 140px
var numberOnly = myCharacter.replace('px',''); // gives 140
var total = numberOnly + 20; // gives 14020 not 160

我只是不明白为什么会这样。

7 个答案:

答案 0 :(得分:5)

您需要parseInt()

var total = parseInt(numberOnly) + 20;

因为numberOnly是一个字符串,而不是一个数字,所以它在一个字符串中添加一个数字,导致14020为一个字符串

答案 1 :(得分:1)

在'140px'中替换'px'时,最终会得到一个字符串类型的变量。 (javascript有类型,但它们是动态的)

当你调用'140'+ 20时,类型不会自动转换,因为+是对字符串有意义的操作:连接。

您应该显式转换为数字,例如使用parseInt('140'),然后添加应该按预期工作。

答案 2 :(得分:1)

由于numberOnly + 20中的一个操作数是一个字符串,+运算符会进行字符串连接,而不是添加。

使用parseInt方法将字符串解析为数字,然后您也不必删除px部分,因为解析在遇到非数字字符时结束。

var myCharacter = parseInt(('#myCharacter').css('top'), 10);
var total = myCharacter + 20;

答案 3 :(得分:0)

这是因为numberOnlyString你可以通过以下方式投射到int

var total = +numberOnly + 20

答案 4 :(得分:0)

var myCharacter = ('#myCharacter').css('top'); // gives 140px
var numberOnly = myCharacter.replace('px',''); // gives 140
var total = parseInt(numberOnly) + 20; 

答案 5 :(得分:0)

您正在尝试添加字符串,因此首先将其转换为整数,使用parseInt()执行此操作:

var total = parseInt(numberOnly) + 20;//160

答案 6 :(得分:-1)

numberOnly仍为string类型,即它是多个字符。因此,您目前将字符串' 140' 20,隐式转换为字符串。

要解决此问题,请使用numberOnly[parseInt][1]转换为整数。