2010-09-23 16 views
11
<html> 
    <style type="text/css"> 
     a { 
      display: none; 
     } 
    </style> 
    <body> 
     <p id="p"> a paragraph </p> 
     <a href="http://www.google.com" id="a">google</a> 
    </body> 
    <script type="text/javascript"> 
     var a = (document.getElementById('a')).style; 
     alert(a.display); 
     var p = (document.getElementById('p')).style; 
     alert(p.display); 
     p.display = 'none'; 
     alert(p.display); 
    </script> 
</html> 

Ben none ve block olması gerektiğini düşündüm bir boş dize, daha birinci ve ikinci alert ekran şey diğer. Ancak, yoğun olarak display ayarından sonra, üçüncü alert son olarak none uyarır.Bir DOM öğesinin görüntüleme özelliği nasıl alınır?

Ama neden? display özelliğini nasıl doğru bir şekilde alabilirim?

Teşekkürler.

cevap

21

.style.* özellikler değil uygulandı tarzı, styleöznitelik doğrudan harita. Bunun için getComputedStyle.

.className'u değiştirmeye ve sunumu tamamen mantıktan ayırmaya ciddi önem veririm.

+0

stili bir özellik olarak adlandırılmamalıdır. Bu bir nesnedir. Her DOM öğesi düğümünün bir stil özelliği vardır. Bu özellik bir nesnedir. ... HTML stili niteliği, HTML öğesini temsil eden DOM düğümünün stil özelliğine özellikler eklemek için kullanılır. HTML kodu ayrıştırıldıktan sonra artık HTML özelliklerine sahip değiliz, ancak nesne özellikleri. –

+2

@ Šime Vidas: Bence David'in cevabını tekrar okursanız, bu ayrımı doğru bir şekilde çizdiğini anlayacaksınız. –

+0

@David Dorward: Yardımlarınız için teşekkürler. Öyleyse, CSS stilinin gerçek zamanlı değişimini yansıtamayacağı için 'style' özniteliğinin kullanımı nedir? – Jichao

6

Öğenin görüntüleme özelliğinin hesaplanan değerine ihtiyacınız var. Bunu aşağıdaki gibi alabilirsiniz. çoğu tarayıcı IE yakın eşdeğer elementin currentStyle özelliği ise window.getComputedStyle() desteklemediğini unutmayın: jQuery kullanabiliyorsa

var el = document.getElementById('a'); 
var styleObj; 

if (typeof window.getComputedStyle != "undefined") { 
    styleObj = window.getComputedStyle(el, null); 
} else if (el.currentStyle != "undefined") { 
    styleObj = el.currentStyle; 
} 

if (styleObj) { 
    alert(styleObj.display); 
} 
0

şey görüntülenmiyorsa olmadığını kontrol etmek için .is

denilen bir yöntem vardır, $('someSelector').is(':visible') ...

Görüntüleme özniteliği Yok olarak ayarlanmışsa, bu yanlış olur.

2

Hesaplanmış stil almak için bir JavaScript kitaplığı kullanmanızı öneririz. dahili olarak stil nesnesi ve getComputedStyle yöntemi hem kullanır ve Örneğin, jQuery kullanarak

$("#a").css("display"); 

css() metodu

bir çapraz tarayıcı çözüm ... css() metodu ile hesaplanan stilini alabilirsiniz currentStyle nesnesi.

İlgili konular