阻止 jQuery 在 $.Animate() 中使用科学记数法?

Preventing jQuery from using Scientific Notation in $.Animate()?

我怎样才能防止 jQuery 使用科学记数法 - 1.2e+07 而不是jQuery.animate() 函数?

使用: $('body').css({ backgroundPositionX: 12000000 + 'px' });


转换为: background-position-x: 1.2e+07px;

想要的结果: background-position-x: 12000000px;

一旦人数达到 100 万 (1,000,000),就会开始发生这种情况:

这反过来又导致我的应用程序行为异常。我想要纯粹、简单的整数——none 这个科学废话!我环顾四周,但找不到与 jQuery 库相关的任何内容。只有纯 JS 函数。

注意 1:不仅是动画,还有 $.css()。我假设其他 jQuery 函数也类似。

注意 2:我不认为是浏览器做的,因为如果我手动输入值,它就可以正常工作,直到您达到通常的最大 32 位整数


为什么会出现这个问题:

12000321 转换为:1.20003e+07

当我将 1.20003e+07 转换回整数时,我得到:12000300

当你使用科学记数法时,步长是 100s 而不是 1s 并且不够具体。


感谢您考虑我的问题

哇...花了我很长时间,但我终于想出了办法。

经过大量测试后,我注意到直接将字符串传递给 $.attr() 并没有将数字转换为科学记数法。

我创建了自定义动画并手动将样式属性设置为字符串。

似乎正在运行并且以个位数上涨而不是 100s!!

$({
    x: this.x,
    y: this.y
}).animate({
    x: x,
    y: y
}, {
    easing: this.motion_type,
    duration: this.duration,
    step: function(now, fx) {

        var current_styles = $('.area').attr('style'),
            current_styles = string = current_styles.split(" ");

        var x = parseFloat(current_styles[1].replace('px', '').replace(';', ''));
        var y = parseFloat(current_styles[2].replace('px', '').replace(';', ''));

        if ('x' === fx.prop) {
            x = now;
        } else if ('y' === fx.prop) {
            y = now;
        }

        $('.area').attr({ style: 'background-position: ' + x + 'px ' + y + 'px;' });

    },
    complete: function() {
        t.stopNow();
    }
});