Wenn wir nur grundlegende Methoden zum Erkennen der Sichtbarkeit sammeln, darf ich nicht vergessen:
opacity > 0.01; // probably more like .1 to actually be visible, but YMMV
Und wie man Attribute erhält:
element.getAttribute(attributename);
Also, in Ihrem Beispiel:
document.getElementById('snDealsPanel').getAttribute('visibility');
Aber was? Hier funktioniert es nicht. Wenn Sie genauer hinschauen, werden Sie feststellen, dass die Sichtbarkeit nicht als Attribut für das Element aktualisiert wird, sondern mithilfe der style
Eigenschaft. Dies ist eines von vielen Problemen beim Versuch, das zu tun, was Sie tun. Unter anderem: Sie können nicht garantieren, dass in einem Element tatsächlich etwas zu sehen ist, nur weil Sichtbarkeit, Anzeige und Deckkraft die richtigen Werte haben. Möglicherweise fehlt es immer noch an Inhalt oder an Höhe und Breite. Ein anderes Objekt könnte es verdecken. Für weitere Details enthüllt eine schnelle Google - Suche diese und schließt sogar eine Bibliothek , um zu versuchen , das Problem zu lösen. (YMMV)
Schauen Sie sich die folgenden möglichen Duplikate dieser Frage mit hervorragenden Antworten an, einschließlich einiger Erkenntnisse des mächtigen John Resig. Ihr spezifischer Anwendungsfall unterscheidet sich jedoch geringfügig vom Standard, daher verzichte ich auf das Markieren:
(BEARBEITEN: OP SAGT, ER SCHRITKT SEITEN, ERSTELLT SIE NICHT, SO IST UNTEN NICHT ANWENDBAR) Eine bessere Option? Binden Sie die Sichtbarkeit von Elementen an Modelleigenschaften und machen Sie die Sichtbarkeit immer von diesem Modell abhängig, ähnlich wie Angular es mit ng-show tut. Sie können dies mit jedem gewünschten Werkzeug tun: Angular, Plain JS, was auch immer. Besser noch, Sie können die DOM-Implementierung im Laufe der Zeit ändern, aber Sie können immer den Status aus dem Modell anstelle des DOM lesen. Deine Wahrheit aus dem DOM zu lesen ist schlecht. Und langsam. Es ist viel besser, das Modell zu überprüfen und auf Ihre Implementierung zu vertrauen, um sicherzustellen, dass der DOM-Status das Modell widerspiegelt. (Und verwenden Sie automatisierte Tests, um diese Annahme zu bestätigen.)
document.getElementById('snDealsPanel').style.visibility