JavaScript中的公式计算不正确

JavaScript中的公式计算不正确,javascript,jquery,math,Javascript,Jquery,Math,我在JavaScript中遇到一个公式问题 var animMoveX = $(this).attr('data-start') + (animPercentage / 100) * ($(this).attr('data-finish') - $(this).attr('data-start')); 在我看来,这是一个相当简单的数学问题,但控制台输出120-[变量与百分比无关,例如126.49681528662421] 我仔细检查了所有变量,它们都是正确的,如果我用一个固定的数字替换其中一个

我在JavaScript中遇到一个公式问题

var animMoveX = $(this).attr('data-start') + (animPercentage / 100) * ($(this).attr('data-finish') - $(this).attr('data-start'));
在我看来,这是一个相当简单的数学问题,但控制台输出120-[变量与百分比无关,例如126.49681528662421]


我仔细检查了所有变量,它们都是正确的,如果我用一个固定的数字替换其中一个位置的$(this).attr('data-start')变量,那么计算就可以正常运行了。有人能解释一下为什么会出现这种情况,以及我可能如何解决它吗?

我的评论是:优先级意味着它将计算右侧的一个数字,并从数据开始将其添加到字符串中(即使用字符串连接)。这也需要转换成一个数字@Pointy的建议可以做到这一点,因为
data
可以将字符串转换为适当的数据类型(如果可以的话)

因此,基本上将所有attr()调用更改为data()调用,“数字”(存储在属性中)将变为数字:

var animMoveX = $(this).data('start') + (animPercentage / 100) * ($(this).data('finish') - $(this).data('start'));

另外,使用
data
而不是
attr
的代码也更短:)

您可以使用
$(this.data(“start”)
而不是
$(this.attr(“data start”)
优先级意味着它将计算右侧的一个数字,并从数据开始将其添加到字符串中(即使用字符串串联)。这也需要转换成一个数字@Pointy的建议可以做到这一点,因为
data
可以将字符串转换为适当的数据类型(如果可以的话)。多亏了你们!做一把小提琴。看起来您需要将字符串转换为整数。您还可以使用
*1
将字符串转换为整数,例如
。-($(this).attr(“数据开始”)*1)