2010-05-12 55 views
0

看來,JavaScript的只能如果我想準備內聯CSS檢查元素顯示:隱藏與得到它:的Javascript CSS visability

el.style.display 

但如何檢查顯示:無放在外部CSS裏面文件?

回答

2

您需要使用getComputedStyle(與標準兼容的瀏覽器)或currentStyle(IE)訪問元素的計算樣式。谷歌這些條款的例子或使用一個框架,如jQuery,它提供了包裝。

+0

我確認getComputedStyle和currentStyle是一個完美的工作解決方案。只需檢測IE的條件和多數民衆贊成它。 謝謝! – devjs11 2010-05-12 10:27:15

0

if(el.style.display=='none')將工作,無論CSS定義在哪裏。

+1

其實它不是。 'element.style'包含* only *在style屬性中設置的任何東西。 – RoToRa 2010-05-12 09:09:03

+0

爲真,僅適用於內聯。 – devjs11 2010-05-12 10:27:32

1

這可能是倒退的方式,在這種情況下沒有幫助,但無論如何:

如果你想看看什麼在加載CSS文件,你可以得到加載的樣式與var sheets = document.styleSheets;,並進入第一一個與sheets[0];
然後,從它那裏得到的規則:

var rules = sheets[0].cssRules ? sheets[0].cssRules : sheets[0].rules; 

然後依次通過規則來檢查出來:

var rule, selector; 
for (var idx=0, len=rules.length; idx<len; ++idx) { 
    rule = rules[idx]; 
    selector = rule.selectorText; 
    if (!selector) {continue;} 
    console.log(selector+' => '+ rule.style.cssText); 
} 

這或多或少直接來自David Flanagan的偉大着作「Javascript,權威指南(第5版)」

+0

非常感謝你的一個有用的例子! – devjs11 2010-05-12 10:27:57