@ilvals

Почему не работает поиск по классу?

Изучаю JS. Не могу понять, почему в данном случае не работает поиск по классу?

<div id="parent">
	<div class="child1">text</div>
	<div class="child2">text</div>
	<div class="child3">text</div>
	<div class="child4">text</div>
</div>


let parent = document.getElementById('parent');
document.querySelector('.child1').textContent = "Измененная строка 1";  // работает
document.getElementsByClassName('child2').textContent = 'Измененная строка 2'; // не работает!
parent.querySelector('.child3').textContent = "Измененная строка 3"; // работает
parent.getElementsByClassName('child2').textContent = 'Измененная строка 4'; // не работает!
  • Вопрос задан
  • 92 просмотра
Решения вопроса 2
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
Что возвращает метод getElementsByClassName()?

console.log(document.getElementsByClassName('child2')) // HTMLCollection

Какому элемент Вы собрались изменять текст (textContent), если там целая html коллекция?

Вначале, необходимо обойти коллекцию, одним из способов ниже:
// old
Array.from(document.getElementsByClassName('child2')).forEach((el) => {
    el.textContent = 'Измененная строка 2';
});

// new
document.querySelectorAll('.child2').forEach((el) => {
  el.textContent = 'Измененная строка 2';
});
Ответ написан
Комментировать
NikFaraday
@NikFaraday
Student full-stack Developer
Обратите внимание, что есть методы который .getElemtByX(), а есть .getElemtsByX(). Логично предположить, что .getElements() будет возвращать вам массив элементов, по этому эта строка у вас и не работает:

document.getElementsByClassName('child2').textContent = 'Измененная строка 2'; // не работает!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы