1

画面上で何かを移動する単純なループをテストしてきましたが、jQueryを介してCSSプロパティを設定すると、奇妙な動作(ほぼ確実にフロートエラーに関連する)が見られます。

基本的に私はこのようなことを繰り返し行います

var val = parseInt($(myobject).css("left));
val -= 7;
$(myobject).css("left",val+"px");

その後、「left」プロパティの値をテストすると、次のような結果が表示されます。

1042
1035
1028
1020 <<<< !!!!
1013
1006
...

さらに掘り下げて、起こっているように見えるのは私がこれをするということです

$(myobject).css("left","1021px")
alert($(myobject).css("left"))

アラートが表示するのは「1020.99876152371253716253px」です

私が考えることができるのは、jQueryが内部で「1021px」を削除し、数値の非丸め/固定/天井/床バージョンを割り当てているということだけです!?

これを問題としてどこに提起するか、または何かが足りないかどうかわからない!?!?

psが更新され、最新のパブリックChrome/W7-64でこれが表示されていると表示されます

ppsコード全体(Webフォントと1つの外部関数を除く)をJSFiddleにコピーしましたが、(フルスクリーンでも)誤動作しません-しかし、スタンドアロンで実行すると、コードは誤動作し続けます(すべての点で同一のコードであるにもかかわらず!!)私はこれによってこれまで以上に神秘的です...

さらに多くのpsは、これはChromeでのみ発生し、IE(9)とFirefox(14)ではAOKで動作します-明らかに私は癖に遭遇しました、そしてそれは非常に具体的です(jsFiddleでは再現できないため!!)

4

2 に答える 2

0

単に値を解析せず、変数を使用して値を保持し、スタイルのみを設定します。

例:

$(document).load(function(){
  var x = 2000;
  var timer = window.setInterval(function(){
    if (x > 10) {
      x -= 7;
      $('.myobject').css("left", x + "px");
    } else {
      window.clearInterval(timer);
    }
  }, 100);
});
于 2012-07-31T08:18:49.313 に答える
0

jQueryは、指定した値( "1021px")を割り当てています。float値を生成しているのはブラウザです。しばらく前に、IEの1つのバージョンで同様の問題が発生しました。

あなたはこのようにこれに対処することができます:

var val = Math.round( parseFloat( $( myobject ).css( 'left' ) ) );
于 2012-07-31T01:22:43.557 に答える