-1

Не выводит текст в алерте с проверенного блока

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 Answers2

0

Переменная 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>
De.Minov
  • 24,026
0

filter применяется к массиву. Возвращает он тоже массив. А innerHTML должен применяться у конкретного элемента, а не у массива. В целом, для решения проблемы - надо в цикле пробежаться по массиву и взять у элементов то, что нужно