2011-12-16 11 views
12

Desidero sapere se esiste un modo per la funzione getElementByClassName("classname").innerHTML o qualcosa equivalente a getElementById("ClassName").innerHTML.Come ottenere l'elemento in base al nome della classe

+0

Questo dovrebbe aiutarti. http://javascript.about.com/library/bldom08.htm Ma suggerimento rapido -> Usa Jquery per quello. Sarà molto più facile. – Fredy31

+1

possibile duplicato di [Come ottenere elementi per classe in JavaScript?] (Http://stackoverflow.com/questions/3808808/how-to-get-element-by-class-in-javascript) - Presumo che tu abbia a che fare con JavaScript. –

risposta

25

Nel nome della funzione manca uno s. getElementsByTagName restituisce un insieme di elementi, di elementi, che è necessario iterare:

var elements = document.getElementsByClassName("classname"); 

for (var i = 0; i < elements.length; i++) { 
    elements[i].innerHTML = 'foo'; 
} 

IE8 e di seguito non supportano getElementsByClassName, quindi dovrete trovare un polyfill o utilizzare querySelectorAll (IE8).

+3

Nota che 'getElementsByClassName' non è disponibile in IE8 e sotto. –

0

È possibile farlo usando jQuery

$('.className').html(); 

http://api.jquery.com/html/

+0

Ehi, questa risposta mi ha aiutato a rispondere all'utilizzo dell'elemento classe in js. Potrebbe non essere stato rilevante per la domanda di cui sopra, ma mi ha aiutato a capire il problema di scorrimento orizzontale che stavo avendo. – DoodleKana

-2

Se tou utilizzare jQuery si può ottenere, come si farebbe in un selettore CSS così:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script> 

poi ...

$('.classname').each(function() { 
    // get html 
    $(this).html(); 
    // set html 
    $(this).html('something'); 
}); 

Nota che hai anche un modo conveniente per gestire innerHTML.

+0

Questo fornirà solo html per il primo elemento con questa classe. In realtà ce ne potrebbero essere molti quindi probabilmente dovresti usare qualcosa come 'each()' o simile per elaborarli tutti. – ivantod

+0

Ancora non buono anche dopo la modifica ... controlla la risposta di Blender per il modo corretto di farlo. – ivantod

+0

Dovrebbe funzionare ora ... In effetti non aggiunge molte informazioni della risposta di Blender, ma grazie. –

0

vi consiglio di utilizzare jQuery, dove è possibile utilizzare i CSS direttamente selettori (come .yourclass) per trovare tutti gli elementi di una data classe:

$('.yourclass').doWhatYouWant(); 

Se si preferisce non utilizzare JQuery, è possibile utilizzare plain Javascript:

document.getElementsByClassName('my-fancy-class') 

Ma attenzione con il problema di incompatibilità IE8. Come alternativa (più lento, ma si può costruire selettori CSS più complesse) è possibile utilizzare:

document.querySelector('.cssSelector') 

che restituirà un elemento rispondere al vostro selettore CSS, o

document.querySelectorAll('.cssSelector') 

che restituirà più elementi invece.

Problemi correlati