Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Array.some() is not a Function

I have a problem with the method array.some() in JavaScript. I have an html-code:

<div class="list">
 <div class="item"></div>
 <div class="item"></div>
 <div class="item selected"></div>
</div>

And I'm trying to find one element of array which contains class-name "selected".

const items = document.querySelectorAll('.item');

items.some(item => {
 if (item.classList.contains('selected')) { console.log(true); }
 else { console.log(false); }
});

But all what I get is this error: "Uncaught TypeError: items.some is not a function" Can someone tell me, why the method Array.some() doesn't work for div array? Thank you

like image 261
Vlad_9996 Avatar asked Oct 13 '25 09:10

Vlad_9996


2 Answers

This happens because .some() is an array method but items here is not an array but a collection of nodes, better known as NodeList. So, we first need it to convert it into an array like:

const items = [...document.querySelectorAll('.item')];

For more info:

  • document.querySelectorAll()

DEMO:

const items = [...document.querySelectorAll('.item')];

items.some(item => {
  if (item.classList.contains('selected')) {
    console.log(true, item);
  } else {
    console.log(false, item);
  }
});
<div class="list">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item selected"></div>
</div>
like image 52
palaѕн Avatar answered Oct 15 '25 00:10

palaѕн


document.querySelectorAll returns NodeList witch don't implement some method

Use Array.from to convert NodeList to Array

You can find other methods to convert NodeList to Array

const items = Array.from(document.querySelectorAll('.item'));

items.some(item => {
 if (item.classList.contains('selected')) { console.log(true); }
 else { console.log(false); }
});
like image 30
ponury-kostek Avatar answered Oct 15 '25 00:10

ponury-kostek