我刚开始使用javascript和jquery,现在我遇到了这样的问题:
var myCharacter = ('#myCharacter').css('top'); // gives 140px
var numberOnly = myCharacter.replace('px',''); // gives 140
var total = numberOnly + 20; // gives 14020 not 160
我只是不明白为什么会这样。
答案 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)
这是因为numberOnly
是String
你可以通过以下方式投射到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]
转换为整数。