Odd ParseFloat问题Javascript

时间:2013-05-14 20:55:57

标签: javascript jquery ipad parsefloat

我有一个奇怪的问题,我只在iPad上遇到过。似乎所有其他浏览器都可以处理这个问题,但我的条件与此类似:

if( parseFloat( $('#element1').css('opacity'),10).toFixed(2)!=userSetting1 ||
    parseFloat( $('#element2').css('opacity'),10).toFixed(2)!=userSetting2
  ){ return; };

... rest of function

所以,基本上我有一些从用户操作动画的元素。为了防止用户连续触发函数的其余部分,我正在测试该元素是否已完成其不透明度的动画。 usersetting1和2是用户将element1和2分别设置为动画的不透明度。

所以,基本上,如果不透明度未达到用户设置的不透明度,它将退出该功能。除了iPad之外,其他地方都很棒,而且它基于parseFloat的问题。

如果用户将0.15,0.25等设置为不透明度设置,则parseFloat(,10).toFixed(2)将起作用并允许条件正确测试。

但是,如果用户为不透明度设置1或0,则会将所有内容都拧紧。显然iPad并不认为1.0 = 1。

如果有什么方法吗?

2 个答案:

答案 0 :(得分:0)

好的,刚想出来了。 iPad似乎将我的元素(例如,如果userSetting1为0.15)动画为0.1503850384038439248。所以,我必须在用户设置和.css拉动上运行.toFixed(2)。

答案 1 :(得分:0)

 var iOS = parseFloat(('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1])
    .replace('undefined', '3_2').replace('_', '.').replace('_', ''));
 if( iOS ( $('#element1').css('opacity'),10).toFixed(2)!=userSetting1 ||
iOS ( $('#element2').css('opacity'),10).toFixed(2)!=userSetting2){ return; };