Apakah mungkin untuk memeriksa apakah suatu elemen CSS display == blockatau nonemenggunakan JavaScript?
Jawaban:
Seperti yang dikatakan sdleihssirhc di bawah ini, jika elemen displaydiwariskan atau ditentukan oleh aturan CSS, Anda harus mendapatkan gaya yang dihitung :
return window.getComputedStyle(element, null).display;
Elemen memiliki styleproperti yang akan memberi tahu Anda apa yang Anda inginkan, jika gaya dideklarasikan sebaris atau dengan JavaScript:
console.log(document.getElementById('someIDThatExists').style.display);
akan memberi Anda nilai string.
currentStyle? tidak pernah mendengarnya, juga memeriksa document.body.currentStyledan tidak mendapat apa-apa (tidak terkejut)
Jika gaya dideklarasikan sebaris atau dengan JavaScript, Anda bisa langsung melihat styleobjeknya:
return element.style.display === 'block';
Jika tidak, Anda harus mendapatkan gaya yang dihitung, dan ada inkonsistensi browser. IE menggunakan currentStyleobjek sederhana , tetapi semua orang menggunakan metode:
return element.currentStyle ? element.currentStyle.display :
getComputedStyle(element, null).display;
The nulldiperlukan di Firefox versi 3 dan di bawah.
===dan !==Operator".
===daripada di ==sini, tapi juga tidak ada keuntungannya. Kedua operan dijamin sebagai string, jadi kedua operator melakukan langkah yang persis sama.
Untuk jQuery, maksud Anda seperti ini?
$('#object').css('display');
Anda dapat memeriksanya seperti ini:
if($('#object').css('display') === 'block')
{
//do something
}
else
{
//something else
}
Jawaban ini tidak persis seperti yang Anda inginkan, tetapi mungkin berguna dalam beberapa kasus. Jika Anda mengetahui bahwa elemen memiliki beberapa dimensi saat ditampilkan, Anda juga dapat menggunakan ini:
var hasDisplayNone = (element.offsetHeight === 0 && element.offsetWidth === 0);
EDIT: Mengapa ini mungkin lebih baik daripada pemeriksaan langsung displayproperti CSS ? Karena Anda tidak perlu mencentang semua elemen induk. Jika beberapa elemen induk memiliki display: none, turunannya juga disembunyikan tetapi masih memiliki element.style.display !== 'none'.
Untuk mengetahui apakah itu terlihat dengan JavaScript biasa, periksa apakah properti tampilan adalah 'tidak ada' (jangan centang 'blok', bisa juga kosong atau 'sebaris' dan masih terlihat):
var isVisible = (elt.style.display != "none");
Jika Anda menggunakan jQuery, Anda dapat menggunakan ini sebagai gantinya:
var isVisible = $elt.is(":visible");
Dengan javascript murni Anda dapat memeriksa style.displayproperti. Dengan jQuery Anda bisa menggunakan$('#id').css('display')
Anda dapat memeriksanya dengan misalnya jQuery:
$("#elementID").css('display');
Ini akan mengembalikan string dengan informasi tentang properti tampilan elemen ini.