Как заставить двигаться объект в javascript?

Как сделать так чтобы данный круг, с каждой итерацией цикла передвигался на 1 px ?
`let ball = document.querySelector(".ball");
let b = true;
while (b == true) {
    ball.style.left = ball.style.left + 1;
};
`
Вот так вот не работает.

введите сюда описание изображения


Ответы (2 шт):

Автор решения: Хацкер
let ball = document.querySelector(".ball");
let b = true;
ball.style.position = 'absolute';

while (b == true) {
  var left = ball.style.left;
  left = left.replace(/[^0-9]/g, '');
  left = Number(left) + Number(1) + 'px'; // || '%'
  ball.style.left = left;
};
→ Ссылка
Автор решения: Алексей Шиманский

Тут несколько проблем:

  1. В бесконечном цикле весь UI зависнет и не будет видно эффекта. Для начала можно воспользоваться setInterval. В дальнейшем перейти например на requestAnimationFrame

  2. Изначально ball.style.left равен пустоте. Никакого значения нет. Пустая строка. Поэтому прибавление числа ничего не даст.

  3. ball.style.left оперирует пикселями. Поэтому просто прибавление числа ничего не даст. Нужно ещё дописывать единицы измерения для перемещения, например пиксели

let ball = document.querySelector(".ball");

setInterval(() => {
  ball.style.left = parseInt(ball.style.left || 0) + 1 + 'px';
}, 100);
.ball {
  width: 20px;
  height: 20px;
  border: 1px solid black;
  position: relative;
}
<div class="ball"></div>

→ Ссылка