阻止 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();
}
});
我怎样才能防止 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();
}
});