2012-03-07 11 views
0

画像のHTML要素の幅と高さを取得したいと思います。私はブラウザや計算されたスタイルによって適用されたデフォルトのスタイルは望んでいません。ここ幅/高さを<img>とし、jsを指定します。計算されたスタイルがありません

は、いくつかの例は、次のとおり

<img src="" alt="" width="200px" height="100px" /> 

結果:W = 200、H = 200

<img src="" alt="" height="100px" style="width: 150px;"/> 

結果:W = 150、H = 200

<div style="width: 200px; height: 50px;> 
    <img src="" alt="" style="width: 150px;"/> 
</div> 

結果: w = 150 h = Null

だから、私はwiを取得したいdth/heightがインラインCSSまたは古いタグで設定されている場合外部は必要ありません。幅が特に設定されていない場合、nullを取得したい。

どうすればいいですか?私は試しました:

$(this).height; 
$(this).css('height'); 

動作しませんでした。私が考えることができるのは、スタイル文字列を取得することだけです。

$(this).find('style'); 

これに正規表現を適用します。幅と高さタグのために、それを使用することが可能なはずである:私も「」= 1をスタイルを持っていない、それは役に立たない場合

$(this).attr('width'); 

はそれ以来、それをテストしていません。

おかげ

答えて

3

あなたは.height().width()を試してみましたか?

+0

はい、私はそれが間違って書きました。 Sry。 .widthは単にコードを出力し、幅はありません;)しかし、ありがとう – xotix

0

ないように注意してくださいが、これを試してみてください。

$(this).height();

0

は(.heightのように見える)と.width()完全には機能しません。

http://jsfiddle.net/Tszjs/12/

例があればすることを示していますインライン・スタイリングが幅または高さのいずれかに存在する場合、古いheight = "x"およびwidth = "y"属性は無視されます。

あなたのコードでは、古い属性が存在するかどうかをチェックし、インラインスタイルのオーバーライドと組み合わせているかどうかを確認することをお勧めします。たとえば:

<img id="test2" src="" alt="" height="100px" style="width: 150px;" /> 
<script> 
var test2= $("#test2"); 
var oldHeight=test2.attr("height"); 
var oldWidth=test2.attr("width"); 
var myHeight,myWidth; 

if(oldHeight!=undefined) { myHeight=oldHeight; } else { myHeight=test2.height();} 
if(oldWidth!=undefined) { myWidth=oldWidth; } else { myWidth=test2.width();} 

document.write("CORRECT ---- Height: " + myHeight + "px - Width: " + myWidth + "px<br />"); 
</script> 

+0

それは本当に変です。また、あなたの例は正しく動作していないようです。結果2の高さ。私はまた、それぞれのブラウザがこれを別々に扱うと思います。おそらく属性を許可するつもりです。ありがとう – xotix

関連する問題