Якщо ми просто збираємо основні способи виявлення видимості, дозвольте мені не забувати:
opacity > 0.01; // probably more like .1 to actually be visible, but YMMV
А щодо отримання атрибутів:
element.getAttribute(attributename);
Отже, у вашому прикладі:
document.getElementById('snDealsPanel').getAttribute('visibility');
Але що? Тут не працює. Придивіться ближче, і ви побачите, що видимість оновлюється не як атрибут елемента, а за допомогою style
властивості. Це одна з багатьох проблем із спробами робити те, що ти робиш. Серед іншого: ви не можете гарантувати, що насправді є що бачити в елементі, лише тому, що його видимість, відображення та непрозорість мають правильні значення. У ньому все ще може бракувати вмісту, або він може бракувати висоти та ширини. Інший об’єкт може затьмарити його. Для більш детальної інформації, швидкий пошук Google виявляє це , і навіть включає бібліотеку, щоб спробувати вирішити проблему. (YMMV)
Ознайомтеся з наступними, які є можливими дублікатами цього питання, з відмінними відповідями, включаючи деяке розуміння могутнього Джона Резіга. Однак ваш конкретний випадок використання трохи відрізняється від стандартного, тому я утримаюсь від позначення:
(РЕДАКТУЙТЕ: ОП РОЗУМУЄ СКАРПУВАННЯ СТОРІН, НЕ СТВОРЮЄТЬСЯ ЇХ, ТОЛЬКО НІЖ НЕ ЗАСТОСУВАТИ) Кращий варіант? Прив’яжіть видимість елементів до властивостей моделі та завжди зробіть видимість залежною від цієї моделі, як і Angular з ng-show. Це можна зробити за допомогою будь-якого потрібного вам інструмента: кутовий, звичайний JS, будь-який. Ще краще, ви можете змінити реалізацію DOM з часом, але ви завжди зможете читати стан із моделі, а не DOM. Читання вашої правди з ДОМ погано. І повільно. Набагато краще перевірити модель та довіряти своїй реалізації, щоб переконатися, що стан DOM відображає модель. (І використовуйте автоматичне тестування для підтвердження цього припущення.)
document.getElementById('snDealsPanel').style.visibility