É possível verificar se um elemento é CSS display == blockou noneJavaScript?
Respostas:
Como sdleihssirhc diz abaixo, se o elemento displayestiver sendo herdado ou especificado por uma regra CSS, você precisará obter seu estilo computado :
return getComputedStyle(element, null).display;
Os elementos têm uma stylepropriedade que dirá o que você deseja, se o estilo foi declarado inline ou com JavaScript:
console.log(document.getElementById('someIDThatExists').style.display);
lhe dará um valor de string.
currentStyle? nunca ouvi falar, também verifiquei document.body.currentStylee não recebi nada (não fiquei surpreso)
Se o estilo foi declarado inline ou com JavaScript, você pode apenas obter o styleobjeto:
return element.style.display === 'block';
Caso contrário, você terá que obter o estilo calculado e há inconsistências do navegador. O IE usa um currentStyleobjeto simples , mas todos os outros usam um método:
return element.currentStyle ? element.currentStyle.display :
getComputedStyle(element, null).display;
O nullera necessário no Firefox versão 3 e inferior.
===e !==Operadores".
===vez de ==aqui, mas também não há vantagem. Os dois operandos são strings, portanto, os dois operadores executam exatamente as mesmas etapas.
Para jQuery, você quer dizer assim?
$('#object').css('display');
Você pode verificar assim:
if($('#object').css('display') === 'block')
{
//do something
}
else
{
//something else
}
Essa resposta não é exatamente o que você deseja, mas pode ser útil em alguns casos. Se você souber que o elemento tem algumas dimensões quando exibido, você também pode usar isto:
var hasDisplayNone = (element.offsetHeight === 0 && element.offsetWidth === 0);
EDIT: Por que isso pode ser melhor do que a verificação direta da displaypropriedade CSS ? Porque você não precisa verificar todos os elementos pais. Se algum elemento pai tiver display: none, seus filhos também estarão ocultos, mas ainda estarão element.style.display !== 'none'.
Para descobrir se ele está visível com JavaScript simples, verifique se a propriedade display é 'none' (não marque 'block', também pode estar em branco ou 'inline' e ainda estar visível):
var isVisible = (elt.style.display != "none");
Se você estiver usando jQuery, você pode usar isto:
var isVisible = $elt.is(":visible");
Com javascript puro você pode verificar a style.displaypropriedade. Com jQuery você pode usar$('#id').css('display')
Você pode verificar com, por exemplo, jQuery:
$("#elementID").css('display');
Ele retornará uma string com informações sobre a propriedade de exibição deste elemento.