Você pode fazer assim:
var list = document.getElementById("foo").getElementsByClassName("bar");
if (list && list.length > 0) {
list[0].innerHTML = "Goodbye world!";
}
ou, se você quiser fazer isso com menos verificação de erro e mais brevidade, isso pode ser feito em uma linha como esta:
document.getElementById("foo").getElementsByClassName("bar")[0].innerHTML = "Goodbye world!";
Na explicação:
- Você pega o elemento
id="foo"
.
- Você encontra os objetos que estão contidos nesse objeto
class="bar"
.
- Isso retorna um nodeList do tipo matriz, para que você faça referência ao primeiro item nesse nodeList
- Em seguida, você pode definir o
innerHTML
item para alterar seu conteúdo.
Advertências: alguns navegadores mais antigos não suportam getElementsByClassName
(por exemplo, versões mais antigas do IE). Essa função pode ser ajustada no lugar, se estiver faltando.
É aqui que eu recomendo o uso de uma biblioteca que tenha suporte ao seletor CSS3 embutido, em vez de se preocupar com a compatibilidade do navegador (deixe outra pessoa fazer todo o trabalho). Se você quiser apenas uma biblioteca para fazer isso, o Sizzle funcionará muito bem. No Sizzle, isso seria feito assim:
Sizzle("#foo .bar")[0].innerHTML = "Goodbye world!";
O jQuery possui a biblioteca Sizzle integrada e no jQuery, seria:
$("#foo .bar").html("Goodbye world!");
document.getElementsByClassName
funcionaria bem.