14
<div id="par">
    <span id="a1"></span>
    <span id="a2"></span>    
<div id="par2">     
    <span id="a3"></span>
    <span id="a4"></span>
</div>    
</div>

<script>


var ele = document.querySelectorAll('#par span');    

for( var p of ele ){
    console.log(p);
}


</script>

When i run this code I see error

Uncaught TypeError: ele[Symbol.iterator] is not a function

How to fix this problem ?

Pranav C Balan
  • 113,687
  • 23
  • 165
  • 188
zloctb
  • 10,592
  • 8
  • 70
  • 89

1 Answers1

25

Convert NodeList to Array for make it in iterable form, use Array.from() to convert it.

<div id="par">
  <span id="a1"></span>
  <span id="a2"></span>
  <div id="par2">
    <span id="a3"></span>
    <span id="a4"></span>
  </div>
</div>


<script>
  var ele = document.querySelectorAll('#par span');

  for (var p of Array.from(ele)) {
    console.log(p);
  }
</script>

Refer the following question for more info : Are HTMLCollection and NodeList iterables?

Community
  • 1
  • 1
Pranav C Balan
  • 113,687
  • 23
  • 165
  • 188