2012-02-09 52 views
-1

JSのこのスニペットの問題は誰にでも分かりますか?私はコンテナのmargin-topの値をm変数に代入しようとしています。CSS要素の値を取得する

function test() 
{ 
    var e = document.getElementById('container'); 
    var m = e.style.getPropertyValue("marginTop"); 
    alert (m);   
} 

編集:あなたの変数のスコープを持つように注意して、また

function getStyle(elment, style) { 
    var x = document.getElementById(element); 

    if (x.currentStyle) { 
     var y = x.currentStyle[style]; 
    } else if (window.getComputedStyle) { 
     var y = document.defaultView.getComputedStyle(x, null).getPropertyValue(style); 
    } 

    return y; 
} 

function test() { 
    var m = getStyle('container', 'margin-top'); 
    alert(m); 
} 

:アラートがこれを試してみてくださいメートル

+0

は、明示的に定義された値はありますか? – Christophe

+0

この警告( 'hi')はどのように質問に関連していますか? – gdoron

+0

申し訳ありませんが、私はそれを意味しました:アラート(m); – james

答えて

0

の値を表示するように意図されました。 mtest()の外には定義されません。

+0

ありがとうございますが、警告メッセージは空白になります – james

+0

これは私が恐れていたものです。 'marginTop'は' margin-top'が明示的に設定されている場合にのみ定義されます。この新しいバージョンをお試しください。 – Blender

+0

私はあなたの前提を確認できません。これは計算されたスタイルに関連している可能性が高いです。 'style'プロパティはインラインスタイルにのみアクセスします。 – PointedEars

0

あなたはこの単純な関数を使用して試すことができます:

function test() 
{ 
    var e = document.getElementById('container'); 
    var m = getStyle(e, "marginTop"); 
    alert ('hi ' + m);  
} 

function getStyle(el,styleProp) 
{ 
    if (el.currentStyle) 
     var y = el.currentStyle[styleProp]; 
    else if (window.getComputedStyle) 
     var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp); 
    else 
     var y = el.style[styleProp]; 
    return y; 
} 
+0

それは*あまりにも簡単です。 'getPropertyValue()'はハイフネーションされたプロパティ名のみをサポートしています。また、Safari WebKitをサポートするために 'document.defaultView.getComputedStyle'(さらに洗練された機能テスト)が必要です。 – PointedEars

関連する問題