Ваша проблема в том, что вы используете document.querySelector()
.
Когда вы используете document.querySelector('.dm')
, он вернет только первый элемент, соответствующий этому селектору, вам нужно использовать document.querySelectorAll('.dm')
чтобы получить все соответствующие элементы.
Но с несколькими элементами вам понадобится цикл, чтобы сделать это, потому что querySelectorAll()
вернет nodeList
, чтоколлекция (array
).
Вот как должен быть ваш код:
var elements = document.querySelectorAll('.dm');
Array.from(elements).forEach(function(el, ind){
let dk = parseInt(elements[ind].innerText)
for (var i = 0; i <= dk; i++) {
(function(i) {
setTimeout(function() {
elements[ind].innerText = i;
}, i * 100);
})(i);
}
});
Демо:
var elements = document.querySelectorAll('.dm');
Array.from(elements).forEach(function(el, ind){
let dk = parseInt(elements[ind].innerText)
for (var i = 0; i <= dk; i++) {
(function(i) {
setTimeout(function() {
elements[ind].innerText = i;
}, i * 100);
})(i);
}
});
.counter { display: flex; }
.dm {
background: tomato;
padding: 15px;
font-size: 5em;
font-weight: 700;
width: 100px;
height: auto;
text-align: center;
margin: 0 2px;
}
<div class="counter">
<div class="dm">40</div>
<div class="dm">30</div>
</div>