公式无法在JavaScript中正确计算

时间:2016-12-20 14:20:38

标签: javascript jquery math

我遇到了JavaScript中的公式问题。

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

在我看来,这是一个相当简单的数学,但控制台输出120- [相对于animPercentage不变,例如。 126.49681528662421]。

我已经仔细检查了所有变量,并且它们是正确的,如果我在其中一个固定数字的位置替换$(this).attr('data-start')变量之一,那么计算运行得很好。有人可以解释为什么会这样,以及我如何可以解决它?

1 个答案:

答案 0 :(得分:2)

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

所以基本上改变所有attr()调用data()调用和"数字" (存储在属性中)将成为数字:

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

作为额外的好处,使用data代替attr也是更短的代码:)