Si può fare in questo modo:
var list = document.getElementById("foo").getElementsByClassName("bar");
if (list && list.length > 0) {
list[0].innerHTML = "Goodbye world!";
}
o, se si vuole farlo con con meno controllo degli errori e più brevità, può essere fatto in una sola riga come questa:
document.getElementById("foo").getElementsByClassName("bar")[0].innerHTML = "Goodbye world!";
In spiegazione:
- si ottiene l'elemento con
id="foo"
.
- Quindi si trovano gli oggetti contenuti all'interno dell'oggetto che hanno
class="bar"
.
- che restituisce un array nodeList come, in modo si fa riferimento il primo elemento che nodeList
- È quindi possibile impostare la
innerHTML
di tale elemento per modificarne il contenuto.
Avvertenze: alcuni browser meno recenti non supportano getElementsByClassName
(ad esempio versioni precedenti di IE). Quella funzione può essere rimessa a posto se mancante.
Questo è dove mi consiglia di utilizzare una libreria che ha il supporto integrato selettore CSS3 piuttosto che preoccuparsi di compatibilità del browser te (lasciare che qualcun altro fare tutto il lavoro). Se vuoi solo una libreria per farlo, allora Sizzle funzionerà alla grande. In Sizzle, questo sarebbe essere fatto in questo modo:
Sizzle("#foo .bar")[0].innerHTML = "Goodbye world!";
jQuery ha biblioteca Sizzle incorporato e in jQuery, questo sarebbe:
$("#foo .bar").html("Goodbye world!");
In questo caso non è necessario ottenere il genitore tramite ID. 'document.getElementsByClassName' funzionerebbe correttamente. – rvighne
@rvighne i requisiti esatti dell'OP erano che "desiderava essere più specifico". La persona che ha posto la domanda stava chiedendo come avrebbe potuto essere più specifico nella sua traversata dell'albero DOM. L'uso di getElementByClassName non era un punto di confusione, ma posso vedere come qualcuno potrebbe facilmente pensare che stavo indicando entrambi come necessario. Non sono. Se vuoi scegliere come target solo gli elementi di una determinata classe che si trovano sotto un particolare nodo di un determinato ID anziché elementi della stessa classe in un nodo diverso, questo è ciò che useresti. –
@JosephMarikle Vedo. Credo di aver letto la domanda troppo velocemente. – rvighne