JavaScript. Гонки
Всем привет. Пример учебный. Мне нужно доделать этакую эмуляцию гонок. Логику гонок и финиша я уже продумал. Вопрос вот в чем: "Как сделать одновременный старт сразу нескольких машин (по сути дела это блоки DIV). Текущий код прикладываю. Можете, пожалуйста, помощь. На одной у меня получилось.
<body>
<div class="race">
<div class="road">
<div class="track">
<div class="car"><img src="Car1.png" alt="Car 1"></div>
</div>
</div>
<div class="road">
<div class="track">
<div class="car"><img src="Car2.jpg" alt="Car 2"></div>
</div>
</div>
<div class="road">
<div class="track">
<div class="car"><img src="Car3.png" alt="Car 3"></div>
</div>
</div>
<div class="road">
<div class="track">
<div class="car"><img src="Car4.png" alt="Car 4"></div>
</div>
</div>
<div class="road">
<div class="track">
<div class="car"><img src="Car5.png" alt="Car 5"></div>
</div>
</div>
<div class="road">
<div class="track">
<div class="car"><img src="Daria.png" alt="Car 6"></div>
</div>
</div>
</div>
<input type="button" value="test" id="test">
<script src="javascript.js"></script>
</body>
Код на JavaScript
'use strict';
let road = document.querySelector('.track'); //Гоночная трасса
let cars = document.querySelectorAll('.car'); //Массив машин
const distance = road.clientWidth; //Расстояние гоночной трассы
const widthCar = document.querySelectorAll('.car')[0].clientWidth; //Ширина машины (по сути блока DIV). Они все одинаковые
let btnStart= document.getElementById('test'); //кнопка старта
btnStart.addEventListener('click', function(){ //Пример запуска на одной машине. Но мне нужно, чтобы я мог запустить на всех одновременно
let start = Date.now(); //Время старта
let timer = setInterval(function() {
let timePassed = Date.now() - start; //Прошедшее время с начала старта
let randomDistance = Math.floor(Math.random() * (20 - 5) + 5); //Случайное расстояние
cars[0].style.left = (cars[0].offsetLeft + randomDistance) + 'px'; //Типа машина едет.
if ((cars[0].offsetLeft + widthCar) > (distance + (widthCar / 5))) { //Пока не пересечет линию
clearInterval(timer);
}
}, 20);
});
Источник: Stack Overflow на русском