计算不正确

Calculation is not calculating correctly

我想给另一个值加上或减去一个值。如果 a7347.19 并且 t 是 - 并且 b1354.34,则将 a 数到 5992.85。如果 t 是 +,则加 50,结果将是 8701.53.

b 将始终倒数到 0。

问题在于,如果 t 为负,$('.counter').text() 将 return 7347.19-1354.34,如果 t 为正,则 7347.19+1354.34$('.counter').text()也会在倒计时期间显示NaN

function animate_sum(element, number_, interval_) {
  $({someValue: element.text()}).animate({someValue: number_}, {
    duration: interval_,
    step: function() {
      element.text(Math.floor(this.someValue + 1));
    },
    complete : function() {
      element.text(number_);
    }
  });
}

setTimeout(function() {
  a = $('.counter').text();
  b = $('.counter-difference').text();
  t = $('.counter-difference').attr('data-type');

  animate_sum($('.counter'), (a + t + b), 1000)
  animate_sum($('.counter-difference'), 0, 1000)
}, 1000);

Demo

我该如何解决这个问题?

此操作:a + t + b 具有以下元素:

  • a是一个数字
  • t是一个字符串(其值为-
  • b是一个数字

当你用+组合它们时,Javascript会看到t不是一个数字,而是一个字符串,所以它会做一个字符串concatenation(而不是数学运算)。这就是为什么你得到 7347.19-1354.34

要解决此问题,您需要放置一个 if 语句来检查 t 的值并决定您要执行的操作。像这样:

if (t == '+')
    r = a + b;
else
    r = a - b;