2014-10-08 8 views
6

Ho una classe e se esiste, voglio usare la variabile come un'istruzione true/false if.Se esiste una classe, fare qualcosa con Javascript

HTML

<div id="snake" class="snake--mobile"> 

JS

var isMobileVersion = document.getElementsByClassName('snake--mobile'); 
if (isMobileVersion !== null) 
    alert('xx'); 

Tuttavia, non funziona. Qualche idea? Nessuna risposta jQuery, per favore.

+0

possibile duplicato di [Come verificare se un elemento esiste in un altro elemento?] (Http://stackoverflow.com/questions/7174122/how-to-check-if-an -element-exist-into-another-element) – davidcondrey

+0

@dcc Volevo una soluzione non jQuery – Alex

+0

http://stackoverflow.com/questions/5783280/check-if-div-with-certain-class-name-exists – davidcondrey

risposta

16

getElementsByClassName restituisce un NodeList che è un oggetto tipo . È possibile controllare la sua length per determinare se esistono elementi con classe definita:

var isMobileVersion = document.getElementsByClassName('snake--mobile'); 
if (isMobileVersion.length > 0) { 
    // elements with class "snake--mobile" exist 
} 
+0

Grazie, funziona! – Alex

3

getElementsByClassName restituisce un NodeList. Non sarà mai null. Potrebbe avere un .length di 0.

2

L'ho provato. è completamente funzionante. potresti fare qualsiasi altro errore. getElementsByClassName restituisce vuoto se nessun elemento viene trovato con un nome classe specificato o una lista di ritorno di elementi che hanno dato classe. così puoi accedervi usando l'indice.

var isMobileVersion = document.getElementsByClassName('snake--mobile'); 
 
if (isMobileVersion.length > 0) { 
 
    isMobileVersion[0].style.color="red"; 
 
    alert('class exist'); 
 
}
<div id="snake" class="snake--mobile">Class Exist div </div>

+0

** Hai sbagliato. ** 'getElementsByClassName' non restituisce mai' null'. Nell'esempio si controlla che il risultato non sia 'null', che sarà sempre' true', poiché l'oggetto 'NodeList' non è falsy. Prova a verificare "classe * non * esiste" e vedrai. – VisioN

+0

ho controllato il mio esempio. restituirà l'oggetto vuoto se la classe non viene trovata. thanx @VisioN per correggere il mio errore –

+0

Tuttavia, il tuo aggiornamento non ha risolto il problema, poiché 'if (x)' controllerà ancora il valore 'true'. L'unico modo per valutare se gli elementi esistono è confrontare la proprietà 'length' con' 0', come descritto nelle altre risposte. – VisioN

Problemi correlati