2016-10-11 3 views
2

ウィンドウのサイズが変更されたときに要素の幅を変更しようとしています。要素の幅を取得しようとしていますが、NaNを返します。これはGET幅のための私のコードであり、それをログに記録する:jQuery documentationから要素がNaNの幅を返します

var widthItemMedia = parseInt($(".my-class .list-block .item-media i").css('width')); 
console.log("Previous: " + lastWindowWidth + " Current: " + windowWidth + " Width " + widthItemMedia); 
+0

NaNは、結果が未定義、Booleanまたはnullの場合にのみ発生します。セレクタが有効であることを確認してください – K3v1n

+0

あなたの 'css'と' html'コードも共有できますか?それはいつもフィドル(ここでは)(https://jsfiddle.net/)を作成することをお勧めします。 – bash0ne

+2

@ K3v1nが間違っています。 widthの値が "auto"の場合、結果は( 'parseInt()'の呼び出しから) 'NaN'になります。 – Pointy

答えて

6

.css(width).width()の差がある、例えば後者の戻り無単位画素値(すなわち、 400)、前者は単位をそのままの値(たとえば400px)で返します。 .width()メソッドは、要素の幅を数学的計算で使用する必要がある場合に推奨されます。

使用.width()あなたは数が作業したいとき:

var widthItemMedia = $(".my-class .list-block .item-media i").width(); 

あなたはどちらかparseInt()は必要ありません。 parseInt()関数は、入力文字列の末尾のに数値以外のものを許容します。したがって、 "20px"は問題ありません。しかし、「自動」のようなものはではなく、である。 .width()メソッドは実際のレイアウト幅を取得します。 .innerWidth().outerWidth()の方法も参照してください。状況に応じて必要な答えが得られることがあります。

+0

コンソールはこれを返します 'Previous:678 Current:1173 ElemWidth undefined' –

+0

@ВасяПупкин問題には何の問題があるかを知るには十分なコードがありません。あなたが投稿した 'console.log()'には "ElemWidth"はまったく含まれていません。 – Pointy

関連する問題