Jeśli tylko zbieramy podstawowe sposoby wykrywania widoczności, nie zapomnę:
opacity > 0.01; // probably more like .1 to actually be visible, but YMMV
A jak uzyskać atrybuty:
element.getAttribute(attributename);
W twoim przykładzie:
document.getElementById('snDealsPanel').getAttribute('visibility');
Ale co? Tu nie działa. Przyjrzyj się bliżej, a zobaczysz, że widoczność jest aktualizowana nie jako atrybut elementu, ale za pomocą style
właściwości. Jest to jeden z wielu problemów z próbami robienia tego, co robisz. Między innymi: nie możesz zagwarantować, że w elemencie jest coś do zobaczenia, tylko dlatego, że jego widoczność, wyświetlanie i krycie mają prawidłowe wartości. Wciąż może brakować treści lub może mieć wysokość i szerokość. Inny obiekt może to zasłonić. Aby uzyskać więcej informacji, szybkie wyszukiwanie Google ujawnia to , a nawet zawiera bibliotekę, aby spróbować rozwiązać problem. (YMMV)
Sprawdź poniższe, które są możliwymi duplikatami tego pytania, z doskonałymi odpowiedziami, w tym wglądem potężnego Johna Resiga. Jednak konkretny przypadek użycia różni się nieco od standardowego, więc powstrzymam się od oznaczania:
(EDYCJA: OP MÓWI, ŻE STRONY ZŁOMU, NIE TWORZYCIE SIĘ, A PONIŻEJ NIE MA ZASTOSOWANIA) Lepsza opcja? Powiąż widoczność elementów z właściwościami modelu i zawsze uzależnij widoczność od tego modelu, podobnie jak Angular z ng-show. Możesz to zrobić za pomocą dowolnego narzędzia: kątowego, zwykłego JS, cokolwiek. Co więcej, możesz zmieniać implementację DOM w miarę upływu czasu, ale zawsze będziesz w stanie odczytać stan z modelu zamiast DOM. Czytanie swojej prawdy z DOM jest złe. I powoli. Znacznie lepiej sprawdzić model i zaufać implementacji, aby upewnić się, że stan DOM odzwierciedla model. (I użyj automatycznych testów, aby potwierdzić to założenie).
document.getElementById('snDealsPanel').style.visibility