2

私はこれが単純に聞こえることを知っています、しかしこれが私が得たものがうまくいかないことです。

<style type="text/css">#graphelement{width:800px;height:300px;}</style>
<div id="graphlabel2">Right Axis Label</div>
<div id="graphelement"></div>

<script type="text/javascript">
var graphwidth = document.getElementById('graphelement').style.width;
document.getElementById('graphlabel2').style.width = graphwidth;
</script>

私の問題は、「graphwidth」が常に空になることです。要素の幅(element.width)を取得するだけで、graphwidthに「undefined」が表示されます。上記のすべてのコードは、最初のスタイルタグも含め、bodyタグ内にあります。

これはより大きなスクリプトの一部ですが、要素から幅を取得して別の要素に設定できれば、残りの部分を把握できます。私の全体的な目標:幅がインラインスタイルで設定されている要素があります。ページがハンドヘルドで表示されている場合(つまり、画面の幅がgraphwidthよりも小さい場合)、要素と関連する要素の幅をscreen.widthに設定します。element.style.widthの取得と設定に問題があるようです。

4

4 に答える 4

4

style.widthjavascript を介して割り当てない限り、要素の空です。代わりに、あなたが望むのはcomputedStyle. ここにいくつかのドキュメントがあります。

window.getComputedStyle(document.getElementById('graphelement').width).

古いバージョンの IE ではcurrentStyle. (IE9+ のみが getComputedStyle をサポートしているようです) document.getElementById('graphelement').currentStyle.width

両方をサポートする方法をデモするjsFiddleを次に示します。

于 2012-05-17T20:36:29.320 に答える
3

window.getComputedStyle()を使用する必要があると思います

var gLabel = document.getElementById("graphelement");
var style = window.getComputedStyle(gLabel , null);

document.getElementById('graphlabel2').style.width = style.getPropertyValue("height");
于 2012-05-17T20:37:00.960 に答える
0

.style プロパティは、要素に直接配置されたスタイルを取得するためのものです。スタイルシートからスタイルを計算しません。

これを参照してください: なぜjavascript this.style[property]が空の文字列を返すのですか?

于 2012-05-17T20:42:10.447 に答える
0

を使用するdocument.getElementByIdと、css 値を取得できず、設定するだけです。

これがあなたが探しているものだと思います。

于 2012-05-17T20:35:23.937 に答える