2009-07-23 18 views
7

私のページでは、JavaScriptを使用してCSSスタイルを変更しています。継承された値を取得しようとすると、空白になります。次のことを考えてみましょう:Javascriptで継承したCSS値

.Sliding 
    { 
     display: none; 
     overflow: hidden; 
    } 

    .Sliding #FilterBox 
    { 
     height: 185px; 
     background-color: Fuchsia; 
    } 

とHTML:

<div class="Sliding" id="FilterBox"> 
     <h3>Test Form</h3> 
     This is a test/<br /> 
     12345 
</div> 

私は要素を見ればその空白を 'をのdocument.getElementById(objnameには)を.style.display'? javascript経由で表示値を読み取るにはどうすればよいですか?

+0

ありがとうございました。 getComputedStyleを使用すると、私の問題を解決できました。私はgetElementById()を取ります。スタイルは個々のスタイル設定に使用され、クラスやIDで設定されたものではありません。 – cschear

答えて

8

、計算されたスタイルを見てする必要があります。

プロパティは、インラインスタイルにアクセスして設定する手段です(つまり、スタイル属性のように)。

ただし、あなたの例は継承とは関係ありません。興味のある要素に直接適用されるルールセットだけです。継承は、要素が親要素と同じスタイルを持ち、inheritキーワードを使用する場合です。

span { 
    color: inherit; 
} 

getComputedStyleは最終的に計算された値を返します。したがって、継承された値も取得されます。

+2

getComputedStyle()はすべての一般的なブラウザで動作しません(名前を付けずに) –

+2

'getComputedStyle'を安全に使用できるようになりました。http://caniuse.com/#feat=getcomputedstyle – Ivan

2

あなたの二CSSルール:

.Sliding #FilterBox 
{ 
    height: 185px; 
    background-color: Fuchsia; 
} 

は、「スライディング」クラスを使って何の子孫であるID「FilterBox」とは何もマッチしますので、このルールはあなたのdivには適用されません。

と計算のスタイルを取得するために、あなたはファビアンの回答を参照するか、またはこのようなものたくさん容易になりますjQueryを使用して検討することができます:「jQueryの、$(「#FilterBox」)を使用して

CSSを(。 display ")は、" display "の現在の値を返します。

+0

-1フェアコメント - しかしこれは回答。 – Quentin

+0

確かに、計算されたスタイルに向かって百万回指し示すことができますが、CSSが間違っていると時間が無駄です。 –

+0

2番目のルールは表示プロパティに触れないので、それがあれば影響はありませんその要素に適用するように書かれています。 – Quentin

0
if (!window.getComputedStyle) 
{ 
    window.getComputedStyle = function(el, pseudo) 
    { 
     this.el = el; 
     this.getPropertyValue = function(prop) { 

     var re = /(\-([a-z]){1})/g; 
     if (prop == 'float') 
      prop = 'styleFloat'; 
     if (re.test(prop)) 
     { 
      prop = prop.replace(re, function() { 

      return arguments[2].toUpperCase(); 
      }); 
     } 

     return el.currentStyle[prop] ? el.currentStyle[prop] : null; 
     } 

     return this; 
    } 
} 

function GetCompStyle() 
{ 
    var compStyle = window.getComputedStyle(document.getElementById('FilterBox'), ""); 
    alert(compStyle.getPropertyValue("display")); 
}