Vous pouvez le faire comme ça :
var list = document.getElementById("foo").getElementsByClassName("bar");
if (list && list.length > 0) {
list[0].innerHTML = "Goodbye world!";
}
ou, si vous voulez le faire avec moins de vérification d'erreurs et plus de brièveté, vous pouvez le faire en une seule ligne comme ceci :
document.getElementById("foo").getElementsByClassName("bar")[0].innerHTML = "Goodbye world!";
En explication :
- Vous obtenez l'élément avec
id="foo"
.
- Vous trouvez ensuite les objets contenus dans cet objet qui ont
class="bar"
.
- Cela renvoie une liste de nœuds de type tableau, et vous faites référence au premier élément de cette liste de nœuds.
- Vous pouvez alors définir le
innerHTML
de cet élément pour modifier son contenu.
Avertissements : certains navigateurs plus anciens ne prennent pas en charge getElementsByClassName
(par exemple, les anciennes versions d'IE). Cette fonction peut être mise en place en cas d'absence.
C'est là que je vous recommande d'utiliser une bibliothèque qui prend en charge les sélecteurs CSS3 de manière intégrée, plutôt que de vous soucier vous-même de la compatibilité avec les navigateurs (laissez quelqu'un d'autre faire tout le travail). Si vous voulez juste une bibliothèque pour faire cela, alors Sizzle fonctionnera très bien. Dans Sizzle, cela se fait de la manière suivante :
Sizzle("#foo .bar")[0].innerHTML = "Goodbye world!";
jQuery a la bibliothèque Sizzle intégrée et dans jQuery, ce serait :
$("#foo .bar").html("Goodbye world!");