Ошибка при изменении положения элемента на абсолютное с javascript - PullRequest
0 голосов
/ 17 марта 2020

Я попытался динамически изменить положение дочерних элементов div с stati c на абсолютное. Я думал, что это будет так просто:

function positionToRelative_doesNotWork(e){
    const currentLeft =  e.offsetLeft
    const currentTop = e.offsetTop
    console.log(`(${currentLeft},${currentTop})`)
    e.style.left = currentLeft + 'px'
    e.style.top = currentTop + 'px'
    e.style.position = 'absolute'
}

document.querySelectorAll(selector).forEach((e)=>{
    positionToRelative_doesNotWork(e)
})

Но, когда я выполняю этот код, все дочерние элементы заканчиваются в позиции (0,0). Приведенный выше console.log() печатает только (0,0) для всех элементов.

Я решил это с помощью этого обходного пути:

function positionToRelative_works(e){
  const currentLeft =  e.offsetLeft
  const currentTop = e.offsetTop
  console.log(`(${currentLeft},${currentTop})`)
  e.style.left = currentLeft + 'px'
  e.style.top = currentTop + 'px'
  setTimeout(()=>{
    let elem = e
    elem.style.position = 'absolute'  
  },1)
}

Я протестировал его на Firefox и Chromium для Linux, так что я думаю, что это не ошибка браузера. У вас есть пример здесь

Я не знаю, почему это работает (и почему не работает первая версия) Любые подсказки?

...