- ベストアンサー
javascriptで高さの取得ができない
cssで#A{height=auto;} としている"A"の高さを取得するため/bodyの手前に alert(document.getElementsByID("A").style.height); といれてみますが、取得できません。 cssで#A{height=1000px;}とすればalertに1000pxが返ってきます。 なぜでしょうか。Aの高さを取得することは不可能なのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
style.heightは、 <div style="height:auto"> という指定の仕方か、JavaScriptで document.getElementById('A').sytle.height="1000px"; と、指定した場合のみ、指定したそのままの値が返ってきます。 (autoで指定すると、"auto"が返ってきます) スタイルシートの指定がなければ、nullではなく ""(空文字列)が返ってきます。 > cssで#A{height=1000px;}とすればalertに1000pxが返ってきます。 height:100pxの書き間違いですよね? どちらにしても、インラインスタイルシートにしなければ、""になるはずなのですが、、、 "1000px"が返ってくる理由はわかりません。 もしよろしければ、OS、ブラウザの種類とバージョン、DOCTYPEを教えて頂けますか? よほど細かなことをしない限り、clientHeight、clientWidthで良いと思います。 var obj=document.getElementsByID("A"); width=obj.clientWidth; height=obj.clientHeight; *以下、細かなこと ピクセル数で返ってきますので、"4em"や"50%"などで指定されていても、ピクセルに変換されます。 ピクセル以外で指定されている場合にピクセル数ではなく、たとえば"auto"という文字列を取得したい場合は、 <div id="A" style="height:auto;">ならstyle.heightで取得出来ますが、 #A{height:auto;}では出来ないと思います。 互換モードのstyle.heightにborderHeightやpaddingを含めるかどうかなどは、 document.compatModeを確認して、加減算してください。 obj.getBoundingClientRect(); document.getBoxObjectFor(obj); というメソッドもあります。 それぞれの使い方は説明すると長くなるので、googleなどで検索して下さい。
その他の回答 (1)
- VCAT
- ベストアンサー率20% (16/79)
エラーは出ませんでしたか? オブジェクトアクセス時点でサポートされていないメソッドの はずですが。
補足
alert(document.getElementById("A").style.height)の間違いでした。 がエラーはでません。このオブジェクトのプロパティを予め指定した場合はその数値、そうでない場合はNULLが返るようです。
お礼
コーディングにたくさんミスがありました。その上、この言語に関するいろんなことがわからなかったため、たいへん失礼しました。 clientHeightすらしりませんでしたし、jsの突っ込み方も変でした。 しかながら今回たいへん参考になりました。でうまくいきました。 ありがとうございました。
補足
すいませんでした。 document.getElementById('A').sytle.height="1000px"; と、指定した場合1000pxが返ってきます。 <div id="A" style="height:1000px;">でstyle.heightで1000pxが返ってきます。 #A{ height:auto; } またはheightの指定なしで""(空文字列)が返ってきます。 実現したかったことは、2段組のサイト(cssでpositionを使ってやっています)で、右側の高さと左側の高さを合わせたいということで、 右側の高さが可変なので、この高さをどうにかして取得できないかということなのです。 予め左側の高さを1000pxくらいにしていますが、サイトの内容が変わる度に左側の高さを変更するのが面倒なのです。 コードを張りたいのですが、ごちゃごちゃで。 環境ははWINXP、IE6、DOCTYPE?すいません。