2012-08-01 78 views
4

我測試了以下div的可見性:如何檢查visibility屬性用JavaScript

<div id="div1">div</div> 

與風格分別

#div1 { 
    visibility:visible; //or hidden 
} 

定義如果樣式是行內定義爲<div id="div1" style="visibility:visible">div</div>有它很容易檢查element.style.visibility屬性中的可見性。但問題在於風格是單獨定義的(如上所示 - #div1,.div1或div)。

那麼在哪裏可以檢查僅使用純JavaScript的可見性屬性? jQuery每次都會返回正確的樣式(我不知道如何跟蹤它),那麼他們是如何做到的?這裏是一個fiddle我不成功的嘗試,除了jQuery的工作沒有測試:

alert($(el).css('visibility')); // jQuery works well - returns correct property 
alert(el.style.visibility); // not works - always empty string 
alert(el.offsetWidth > 0 || el.offsetHeight > 0 ? 'yes':'no'); // also not working - always true - http://stackoverflow.com/questions/1343237/how-to-check-elements-visibility-via-javascript 
alert(el.getComputedStyle); // undefined - http://stackoverflow.com/questions/4795473/check-visibility-of-an-object-with-javascript 
alert(el.getAttribute('visibility')); // not works - of course null 

上如何成功任何想法?測試最新的Firefox 15.

回答

6

getComputedStyle是一種全局方法。

window.getComputedStyle(el, null).getPropertyValue('visibility'); 
+0

我有如下使用它一個Android項目用'webview'顯示一個HTML + Javascript,這給了我一個錯誤:''Uncaught TypeError:無法調用null''的方法'getPropertyValue'。我猜它不明白「窗口」是什麼? – 2016-02-17 23:09:51

+0

但'el.style.visibility'起作用。 – 2016-02-17 23:25:31

3

您使用getComputedStyle錯誤:

getComputedStyle(el).visibility 
//"visible" 

演示:http://jsfiddle.net/hMFry/1/

在Internet Explorer中,你可以使用:

el.currentStyle.visibility; 
1
getComputedStyle(el).getPropertyValue('visibility');