Вы можете сделать это так:
var list = document.getElementById("foo").getElementsByClassName("bar");
if (list && list.length > 0) {
list[0].innerHTML = "Goodbye world!";
}
или, если вы хотите сделать это с меньшей проверкой ошибок и большей краткостью, это можно сделать в одной строке, например:
document.getElementById("foo").getElementsByClassName("bar")[0].innerHTML = "Goodbye world!";
Объяснение:
- Вы получаете элемент с
id="foo"
. - Затем вы находите объекты, содержащиеся в этом объекте, которые имеют
class="bar"
. - Возвращает массив-подобный nodeList, поэтому вы ссылаетесь на первый элемент в этом nodeList
- Затем вы можете установить
innerHTML
этого элемента, чтобы изменить его содержимое.
Предупреждения: некоторые старые браузеры не поддерживают getElementsByClassName
(например, старые версии IE).Эта функция может быть вставлена на место, если она отсутствует.
Здесь я рекомендую использовать библиотеку со встроенной поддержкой селектора CSS3, а не беспокоиться о совместимости браузера самостоятельно (пусть кто-то другой сделает всю работу).Если вам нужна библиотека, то Sizzle будет отлично работать.В Sizzle это будет сделано следующим образом:
Sizzle("#foo .bar")[0].innerHTML = "Goodbye world!";
jQuery имеет встроенную библиотеку Sizzle, а в jQuery это будет:
$("#foo .bar").html("Goodbye world!");