要素のCSS display == block
またはnone
JavaScriptを使用しているかどうかを確認することはできますか?
回答:
sdleihssirhcが以下に述べるように、要素display
がCSSルールによって継承または指定されている場合は、計算されたスタイルを取得する必要があります。
return getComputedStyle(element, null).display;
要素にはstyle
、スタイルがインラインまたはJavaScriptで宣言されている場合に、必要な情報を提供するプロパティがあります。
console.log(document.getElementById('someIDThatExists').style.display);
文字列値を提供します。
currentStyle
?聞いたことがない、またチェックdocument.body.currentStyle
して何も得られなかった(驚かなかった)
スタイルがインラインまたはJavaScriptで宣言されている場合は、style
オブジェクトを取得するだけです。
return element.style.display === 'block';
それ以外の場合は、計算されたスタイルを取得する必要があり、ブラウザーに不整合があります。IEは単純なcurrentStyle
オブジェクトを使用しますが、他のすべての人はメソッドを使用します。
return element.currentStyle ? element.currentStyle.display :
getComputedStyle(element, null).display;
これnull
は、Firefoxバージョン3以下で必要でした。
===
はなく使用しても問題ありません==
が、同様に利点もありません。両方のオペランドは文字列であることが保証されているため、両方の演算子はまったく同じステップを実行します。
jQueryの場合、このような意味ですか?
$('#object').css('display');
次のように確認できます。
if($('#object').css('display') === 'block')
{
//do something
}
else
{
//something else
}
この答えはあなたが望むものではありませんが、場合によっては役立つかもしれません。要素が表示されたときにいくつかの寸法があることがわかっている場合は、これも使用できます。
var hasDisplayNone = (element.offsetHeight === 0 && element.offsetWidth === 0);
編集:これはCSS display
プロパティの直接チェックよりも優れているのはなぜですか?すべての親要素をチェックする必要がないためです。親要素にがある場合display: none
、その子も非表示になりますが、まだありelement.style.display !== 'none'
ます。
あなたはそれを例えばjQueryでチェックすることができます:
$("#elementID").css('display');
この要素の表示プロパティに関する情報を含む文字列を返します。