JS insertBefore различных элементов внутри цикла: некоторые выполняются в следующем вызове цикла - PullRequest
0 голосов
/ 30 мая 2018

У меня есть список холстов, и я хочу переместить некоторые из них по смещению, используя цикл insertBefore.

Вот мой цикл selectedMarkers - это индексы холстов, которые я хочу переместить:

            for (let i = 0, l = this.selectedMarkers.length; i < l; i++) {
                this.markerMoving(this.selectedMarkers[i], this.selectedMarkers[i] + moveOffset);
            }

Функция markerMoving содержит это (markerRenderingElements - список полотен:

    [...]
    workspace.insertBefore(markerRenderingElements[oldMarkerNumber], markerRenderingElements[newMarkerNumber + 1]);
    [...]

Консоль браузера показывает мне, что insertBefore вызывается правильно для всех элементов, но на самом деле, вот чтопроисходит ... Допустим, я хотел переместить 3 элемента: e1 e2 e3

1-й вызов цикла: только e3 перемещается, e1 и e2 остаются неизменными.

2-й вызов цикла: e3 иe2 двигаться, e1 остается статичным.

3-й вызов цикла и другие вызовы: все движутся.

Кажется, что пока все элементы не переместились независимо, они не будут двигаться вместе, и яне понимают этого поведения: почему другие insertBefore не учитываются? Проблема в том, что из-за этого поведения элементы не перемещаются туда, где они должны быть.

...