Ви можете це зробити так:
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!");
document.getElementsByClassName
спрацювало б добре.