它将字符串放在一起而不是添加它们Javascript

时间:2011-08-10 14:36:32

标签: javascript

var x = e.pageX;
var myX = $(this).html();
var difference = myX - x;
var ex = myX + difference;

一切都工作到最后一排。它没有添加,它将变量放在一个字符串中。如果myX为10且差值为20,那么当我希望它为30时,它将为1020。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:4)

您可以使用以下内容强制变量为整数:

var ex = parseInt(myX, 10) + parseInt(difference, 10);

这是因为你的变量被认为是字符串,并且在字符串连接上使用+运算符然后连接而不是添加它们的数值。

答案 1 :(得分:3)

尝试在Javascript中向字符串添加数字时,这是一个常见问题。我认为在动态语言的设计中忽略了使用相同的运算符进行加法和字符串连接。

我通常使用这个技巧来解决它:

var ex = myx - 0 + difference

因为从字符串中减去某些内容会将其转换为数字。

正如Felix在下面的评论中指出的那样,您可以使用一元+运算符将字符串转换为数字,如下所示:

var ex = +myx + difference

答案 2 :(得分:1)

这是因为myX是一个字符串,它将数字连接成一个新字符串。

您需要将myX更改为number

使用parseInt执行此操作。

parseInt(myX, 10)

答案 3 :(得分:0)

减号会强制将变量解析为int,但加号只是作为连接函数,甚至将int强制转换为字符串。