2013-08-24 6 views
30

Ho provato il seguente codice, ma è doesn't work. Qualche idea su dove ho sbagliato?Nascondi elemento per classe in puro Javascript

document.getElementsByClassName('appBanner').style.visibility='hidden';
<div class="appBanner">appbanner</div>

utilizzando jQuery o cambiare il codice HTML non è possibile, come io sto usando [self->webView stringByEvaluatingJavaScriptFromString:@""]; in Objective-C.

+1

getElementsByClassName restituisce una matrice di elementi. Hai bisogno di qualcosa del tipo: document.getElementsByClassName ('appBanner') [0] .style.visibility = 'hidden'; – bitfiddler

risposta

54

document.getElementsByClassName restituisce un HTMLCollection (un oggetto di tipo array) di tutti gli elementi che corrispondono al nome della classe. La proprietà style è definita per Element non per HTMLCollection. Dovresti accedere al primo elemento usando la notazione parentesi (pedice).

document.getElementsByClassName('appBanner')[0].style.visibility = 'hidden'; 

Updated jsFiddle

Per modificare le regole di stile di tutti gli elementi che corrispondono alla classe, utilizzando l'API selettori:

[].forEach.call(document.querySelectorAll('.appBanner'), function (el) { 
    el.style.visibility = 'hidden'; 
}); 

Se for...of è disponibile:

for (let el of document.querySelectorAll('.appBanner')) el.style.visibility = 'hidden'; 
+0

fedeetz/Atanas Korchev forniscono una risposta più diretta 24AUG2013. Preferito. – treeFan

+0

Nota che questo nasconderà solo il primo elemento con il nome di classe 'appBanner' – HoffZ

21
var appBanners = document.getElementsByClassName('appBanner'), i; 

for (var i = 0; i < appBanners.length; i ++) { 
    appBanners[i].style.display = 'none'; 
} 

JSFiddle.

+0

I principianti su JS, ma perché scrivi ', i;' in prima linea? Questo usato per ciclo? (ma dichiariamo 'i' in ciclo dopo) O piccolo errore? O forse è una "best practice"? Puoi commentare, per favore. –

+1

@DenisSavenko sta semplicemente dichiarando una seconda var. – Joshpbarron

+3

@DenisSavenko - È valida la sintassi di 'var' per dichiarare più variabili separate da virgole, ma in questo caso è un errore allora * anche * dichiarare' i' con 'var' nel ciclo' for' - sebbene questo non lo faccia In realtà causano un errore, è solo disordinato. – nnnnnn

1

Array.filter(document.getElementsByClassName('appBanner'), function(elem){ elem.style.visibility = 'hidden'; });

biforcuta @http://jsfiddle.net/QVJXD/

+0

FYI: Array.filter non è una funzione JS. Sembra che questo usi Mootools. –

+0

'Array.Filter 'non funziona con Javascript – user4943236

-5
<script type="text/javascript"> 
     $(document).ready(function(){ 

       $('.appBanner').fadeOut('slow'); 

     }); 
    </script> 

o

<script type="text/javascript"> 
     $(document).ready(function(){ 

       $('.appBanner').hide(); 

     }); 
    </script> 
+0

L'OP non menziona jQuery –

Problemi correlati