scrollIntoView s'exécute trop tôt après la boucle forEach
P粉504920992
P粉504920992 2023-09-17 00:27:54
0
1
572

J'ai les deux fonctions suivantes...

function sizeSearch(size) { const container = document.querySelector('ul.size-ranks'); const rankElems = container.querySelectorAll('li'); rankElems.forEach(e => { e.style.display = 'none'; e.classList.remove('active'); }); const sizeID = size.replace(/\D/g,'') + '-rank'; const sizeElem = document.getElementById(sizeID); if (sizeElem) { sizeElem.classList.add('active'); sizeElem.style.display = ''; } else { container.insertAdjacentHTML('beforeend', ''); } } function clearSizeSearch() { document.querySelectorAll('li.empty-search').forEach(e => e.remove()); document.querySelectorAll('ul.size-ranks li').forEach(e => e.style.display = ''); document.querySelector('ul.size-ranks li.active').scrollIntoView(); }
L'élément

sizeSearch()函数正常工作。当调用clearSizeSearch()函数时,所有的

  • 元素按预期重新显示出来,你可以很短暂地看到预期的.activedéfile, puis il revient immédiatement au-dessus de l'élément conteneur (ou peut-être est restitué de cette façon une fois que le DOM a fini de s'installer ?).

    Si je l'exécute manuellement dans la consoledocument.querySelector('ul.size-ranks li.active').scrollIntoView();,然后运行clearSizeSearch(),那么它就正常工作。这一点,再加上当运行clearSizeSearch()时我可以短暂地看到它滚动到视图中,似乎表明它可能在前面的命令执行完成之前运行,但据我所知,forEach()La valeur par défaut n'est pas asynchrone, aucune commande après celle-ci ne doit être exécutée avant la fin.

  • P粉504920992
    P粉504920992

    répondre à tous (1)
    P粉633733146

    C'est ma solution.

    function clearSizeSearch() { document.querySelectorAll('li.empty-search').forEach(e => e.remove()); document.querySelectorAll('ul.size-ranks li').forEach(e => e.style.display = ''); setTimeout(() => { document.querySelector('ul.size-ranks li.active').scrollIntoView(); }, 0); }
      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!