Bir elemanın CSS'sini display == blockveya noneJavaScript'i kullanıp kullanmadığını kontrol etmek mümkün müdür ?
Yanıtlar:
Sdleihssirhc'nin aşağıda söylediği gibi, eğer öğe displaymiras alınıyorsa veya bir CSS kuralı tarafından belirtiliyorsa, onun hesaplanmış stilini almanız gerekir :
return window.getComputedStyle(element, null).display;
Öğeler style, stil satır içi olarak veya JavaScript ile bildirilmişse, size ne istediğinizi söyleyecek bir özelliğe sahiptir:
console.log(document.getElementById('someIDThatExists').style.display);
size bir dize değeri verecektir.
currentStyle? hiç duymadım, ayrıca kontrol etmedim document.body.currentStyleve hiçbir şey
Stil satır içi olarak veya JavaScript ile bildirilmişse, sadece stylenesneye ulaşabilirsiniz :
return element.style.display === 'block';
Aksi takdirde, hesaplanan stili almanız gerekir ve tarayıcı tutarsızlıkları vardır. IE basit bir currentStylenesne kullanır , ancak diğer herkes bir yöntem kullanır:
return element.currentStyle ? element.currentStyle.display :
getComputedStyle(element, null).display;
nullFirefox sürüm 3 ve aşağıdaki gerekti.
===ve !==Operatörler " adlı bölümde nedenini açıklıyor .
===yerine ==burada, ama aynı derecede hiçbir avantaj ya yoktur. Her iki işlenenin de dize olması garanti edilir, bu nedenle her iki operatör de tam olarak aynı adımları gerçekleştirir.
JQuery için böyle mi demek istiyorsun?
$('#object').css('display');
Bunu şu şekilde kontrol edebilirsiniz:
if($('#object').css('display') === 'block')
{
//do something
}
else
{
//something else
}
Bu cevap tam olarak istediğiniz şey değil, ancak bazı durumlarda faydalı olabilir. Öğenin görüntülendiğinde bazı boyutları olduğunu biliyorsanız, bunu da kullanabilirsiniz:
var hasDisplayNone = (element.offsetHeight === 0 && element.offsetWidth === 0);
DÜZENLEME: Bu neden CSS displayözelliğinin doğrudan kontrolünden daha iyi olabilir ? Çünkü tüm ana öğeleri kontrol etmenize gerek yoktur. Bazı üst öğe varsa display: none, alt öğeleri de gizlenir, ancak yine de gizlidir element.style.display !== 'none'.
Düz JavaScript ile görünür olup olmadığını öğrenmek için, display özelliğinin "yok" olup olmadığını kontrol edin ("blok" seçeneğini işaretlemeyin, boş veya "satır içi" de olabilir ve hala görünür olabilir):
var isVisible = (elt.style.display != "none");
JQuery kullanıyorsanız, bunun yerine bunu kullanabilirsiniz:
var isVisible = $elt.is(":visible");
Saf javascript ile style.displayözelliği kontrol edebilirsiniz . JQuery ile kullanabilirsiniz$('#id').css('display')
Örneğin jQuery ile kontrol edebilirsiniz:
$("#elementID").css('display');
Bu elemanın display özelliği hakkında bilgi içeren dizge döndürecektir.