Чи можна перевірити CSS елемента display == blockчи noneза допомогою JavaScript?
Відповіді:
Як зазначає sdleihssirhc нижче, якщо елемент displayуспадковується або визначається правилом CSS, вам потрібно отримати його обчислюваний стиль :
return window.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);
EDIT: Чому це може бути краще, ніж безпосередня перевірка властивості CSS display? Оскільки вам не потрібно перевіряти всі батьківські елементи. Якщо якийсь батьківський елемент має display: none, його діти також приховані, але все ще є element.style.display !== 'none'.
Щоб дізнатись, чи він видимий у звичайному JavaScript, перевірте, чи властивість display - "none" (не перевіряйте "block", воно також може бути порожнім або "вбудованим" і все одно бути видимим):
var isVisible = (elt.style.display != "none");
Якщо ви використовуєте jQuery, ви можете використовувати це:
var isVisible = $elt.is(":visible");
За допомогою чистого javascript можна перевірити style.displayвластивість. За допомогою jQuery ви можете використовувати$('#id').css('display')
Ви можете перевірити це, наприклад, у jQuery:
$("#elementID").css('display');
Він поверне рядок з інформацією про властивість відображення цього елемента.