【问题标题】:Increment / decrement numeric jQuery递增/递减数字jQuery
【发布时间】:2013-08-12 21:12:02
【问题描述】:

我从Joss Crowcroft's solution 找到了这段代码,可能与这个问题jquery-animate-decimal-number-increment-decrement 类似,TS 已经在 jsfiddle example 上做了示例

jQuery({someValue: 0}).animate({someValue: 110}, {
duration: 1000,
easing:'swing', // can be anything
step: function() { // called on every step
    // Update the element's text with rounded-up value:
    $('#el').text(Math.ceil(this.someValue) + "%");
}});

但我的问题不同,当我将结尾的 someValue 110 更改为 1000000 或数百万等大数字时。动画数字的结尾将不再与 someValue 的结尾一样精确,有时它可能会以 999876 或低于 1000000 的方式结束。我怎样才能使动画数字与 endValue 完全相同?

【问题讨论】:

  • 有一个动画结束的回调并将其四舍五入。要么确保增量是目标的倍数。
  • 你能告诉我如何进行回调吗?
  • 查看下面发布的关于done() 函数的答案 - 查看documentation 了解更多信息。

标签: jquery


【解决方案1】:

您可以提供一个 done 函数,该函数将在动画结束时调用,就像 Orbling 建议的那样:

$({numberValue: currentNumber}).animate({numberValue: 1000000}, {
    duration: 8000,
    easing: 'linear',
    step: function () { 
        $('#dynamic-number').text(Math.ceil(this.numberValue)); 
    },
    done: function () {
        $('#dynamic-number').text(Math.ceil(this.numberValue));
    }
});

工作小提琴:http://jsfiddle.net/WZC4F/

【讨论】:

  • 它有效!非常感谢你,非常感谢(:但是没有 .done() 函数的大数字怎么会错过结果呢?只是好奇..
  • 当您使用小数字时,它实际上也被“遗漏”了,但是由于您调用 Math.ceil 将小数向上舍入,因此您没有注意到它.看看我删除了对 Math.ceil 的调用的这个小提琴,看看会发生什么:jsfiddle.net/UZQWV
  • 是的,我注意到了。但这是否也意味着当我使用像 1000000 左右这样的大数字时,动画数字的结尾没有达到 99999.xxx 所以它可以被限制为 1000000?无论如何感谢 done() 功能:D
  • 这取决于总步数。如果步数足够大(动画持续时间更长),那么您将更接近“99999.xxx”。然而,在一个简短的动画中,你不会得到太多的步骤,因此你最终可能会得到这样的东西,考虑到在每一步之间你的变量会增加大约 300k: 0; 310568; 690198; 924213(3步)
猜你喜欢
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
相关资源
最近更新 更多