Görünürlüğü tespit etmenin temel yollarını topluyorsak, unutmama izin ver:
opacity > 0.01; // probably more like .1 to actually be visible, but YMMV
Ve özniteliklerin nasıl elde edileceği konusunda:
element.getAttribute(attributename);
Yani, örneğinizde:
document.getElementById('snDealsPanel').getAttribute('visibility');
Ama ne? Burada işe yaramıyor. Daha yakından bakın ve görünürlük öğenin bir özelliği olarak değil, style
özelliği kullanarak güncellendiğini göreceksiniz . Bu, yaptığınız şeyi yapmaya çalışmakla ilgili birçok problemden biridir. Diğerleri arasında: Görünürlüğünün, görüntüsünün ve opaklığının hepsinin doğru değerlere sahip olması nedeniyle, bir öğede gerçekten görülecek bir şey olduğunu garanti edemezsiniz. Hala içerikten yoksun olabilir veya yükseklik ve genişlikten yoksun olabilir. Başka bir nesne onu gizleyebilir. Daha fazla ayrıntı için, hızlı bir Google arama ortaya bu ve hatta problem çözme denemek için bir kütüphane içerir. (YMMV)
Bu sorunun olası kopyaları olan aşağıdakilere göz atın, güçlü John Resig'in bazı fikirleri de dahil olmak üzere mükemmel cevaplarla. Ancak, özel kullanım durumunuz standart olandan biraz farklıdır, bu yüzden işaretlemekten kaçınacağım:
(DÜZENLEME: OP YAZDIRMA SAYFALARINI YARATMADIĞINI DEMEKTEDİR, AŞAĞIDAKİ GEÇERLİ DEĞİLDİR) Daha iyi bir seçenek? Elemanların görünürlüğünü model özelliklerine bağlayın ve her zaman görünürlük, Angular'ın ng-show ile yaptığı gibi bu modele bağlı olmasını sağlayın. Bunu istediğiniz herhangi bir aracı kullanarak yapabilirsiniz: Açısal, düz JS, her neyse. Daha da iyisi, DOM uygulamasını zaman içinde değiştirebilirsiniz, ancak DOM yerine durumu her zaman modelden okuyabilirsiniz. DOM'dan gerçeğinizi okumak Kötü. Ve yavaş. Modeli kontrol etmek ve DOM durumunun modeli yansıttığından emin olmak için uygulamanıza güvenmek çok daha iyidir. (Ve bu varsayımı onaylamak için otomatik test kullanın.)
document.getElementById('snDealsPanel').style.visibility