Почему не работает вывод в алерт с фильтра?
Не выводит текст в алерте с проверенного блока
let elems = Array.from(document.querySelectorAll('.item'));
let c = elems.filter(function(currentValue, index){
return currentValue.classList.contains('red');
});
alert(c.innerHTML);
<div class="item red">1</div>
<div class="item green">2</div>
<div class="item red">3</div>
<div class="item blue">4</div>
<div class="item red">5</div>
Ответы (2 шт):
Автор решения: De.Minov
→ Ссылка
Переменная c возвращает массив. И как уже сказали в комментариях - у массива нет ключа innerHTML.
Но он есть у элементов массива, следовательно проходим циклом по массиву и выводим innerHTML
let elems = Array.from(document.querySelectorAll('.item'));
let c = elems.filter(function(currentValue, index){
return currentValue.classList.contains('red');
});
console.info(c);
[...c].map(e => console.info(e.innerHTML));
<div class="item red">1</div>
<div class="item green">2</div>
<div class="item red">3</div>
<div class="item blue">4</div>
<div class="item red">5</div>
Автор решения: Алексей Шиманский
→ Ссылка
filter применяется к массиву. Возвращает он тоже массив. А innerHTML должен применяться у конкретного элемента, а не у массива. В целом, для решения проблемы - надо в цикле пробежаться по массиву и взять у элементов то, что нужно