5

私は理解できないように見えるjQueryに問題があります。

もしそうなら、私はconsole.log($(window).width()/2)数値を取得します。

もしそうなら、私は$('.modal_box').outerWidth()数値を取得します。

ただし、やろうとするとconsole.log($(window).width()/2 - $('.modal_box').outerWidth())NaN になります。同じ方程式を実行しても、を置き換える-+機能します。

ウィンドウの幅は、常に.modal_box.

これはなぜですか?とてもイライラします。

4

3 に答える 3

0

それを試してみてください

console.log(parseFloat($(window).width()/2) - parseFloat($('.modal_box').outerWidth()));
于 2012-12-18T15:23:48.940 に答える
0

私はこれをあなたと同じように試しましたが、負の値でもうまく機能します(より大きな数で減算する場合)。これがフィドルで、コードは次のとおりです。

$(document).ready(function(){

    alert($('#someDiv').outerWidth());
    alert($(window).width());
    alert($('#someDiv').outerWidth() - $(window).width());
});

要素の幅のcssプロパティが提供されていない場合、エラーは構文のどこかにあるか、おそらく(ロングショット)にあると思います。

追加情報は次のとおりです。

画面の中央に配置するには、'.modal_box' に 'position: absolute' を指定し、body 要素の直接の兄弟であり、($(window).width()/2) に設定したままにする必要があります。 ($('.modal_box').outerWidth()/2)。

于 2012-12-18T15:39:07.540 に答える
0

数学とそれによって返される値を扱うとき、私は通常、値を明示的に整数に解析して、目的の値のみを取得することを好みます。次のように、コードをできるだけ読みやすくすることも好きです。

var w = parseInt($(window).width()/2);
var mb = parseInt($('.modal_box').outerWidth());

console.log(w - mb);

そうすれば、console.log()両方の値も簡単になり、操作が数値を返さない理由を理解するのも簡単になります。

乾杯!

于 2012-12-18T21:04:05.120 に答える