var how_many = document.getElementsByClassName("content");
console.log(how_many);
При таком коде выводится объект:
HTMLCollection []
0: div.content
1: div.content
2: div.content
3: div.content
length: 4
proto: HTMLCollection
Если же мы код меняем на следующий:
var how_many = document.getElementsByClassName("content").length;
console.log(how_many);
То в консоли появляется 0.
Даже если подытожим:
var how_many = document.getElementsByClassName("content");
console.log(how_many);
console.log(how_many.length);
То выводится как и тот объект, так и ноль.
Почему?
Вот тут все понятно и правильно:
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<script>
var how_many = document.getElementsByClassName("content");
console.log(how_many.length);
console.log(how_many);
</script>
А вот то, что у Вас:
<div id="out1"></div>
<div id="out2"></div>
<script>
var how_many = document.getElementsByClassName("content");
document.getElementById("out1").innerText = how_many.length;
setTimeout(function() {
document.getElementById("out2").innerText = how_many.length;
}, 100);
</script>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
<div class="content"></div>
Что тоже, в общем-то, понятно и правильно.
https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection
An HTMLCollection in the HTML DOM is live; it is automatically updated when the underlying document is changed.
... коллекция aвтоматически обновляется, отражая изменения в документе.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей