Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

114
Visualizações
Save the scroll position in sideBar when refreshing the page

I want to keep the scroll position in the sidebar, but I can't figure out what the error is. What did I do wrong in the JS script?

HTML:

<div class="sidebar">
    <div class="sidebarHeader">
        <h4 class="courseHeader"></h4>
    </div>
    <div class="sidebarMain">
        <ul class="sidebarUl">
            <li class="sidebarLi">
                <a class = "sidebarA" href="1.2.html">1.2</a>
            </li>
            <li class="sidebarLi">
                <a class = "sidebarA" href="2.1.html">2.1</a>
            </li>
        </ul>
    </div>
</div>

JS:

document.querySelectorAll(".sidebarA", function() {
var sidebar = document.querySelector(".sidebar");

sidebar.scroll(0, localStorage.getItem('scrollPosition')|0);


sidebar.scroll(function () {
       localStorage.setItem('scrollPosition', sidebar.scrollTop)
});});
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Element#scroll does not take a function as argument so you are never saving the new position anywhere.

What you want to do instead is to listen for the scroll event:

sidebar.addEventListener('scroll', function() {
  console.log(sidebar.scrollTop);
});
  • Element#scroll docs
  • Element#scroll_event docs

Another thing:

Element#querySelectorAll doesn't take a function as argument either; so

document.querySelectorAll(".sidebarA", function() { /* Stuff */ });

won't run the function you put there as a callback. If the goal is to run the code inside that function after the page has loaded, you can use the load event:

window.addEventListener('load', function() {
  var sidebar // and so on...
});
about 4 years ago · Juan Pablo Isaza Relatório

0

here is some change in your js code, be sure that sidebarUl class must look like

.sidebarUl {
  overflow-y: scroll;
  height: 100vh;
  width: 100px;
}

and parent element has css prop overflow:hidden

const element = document.getElementsByClassName('sidebarUl')[0]
console.log('element', element)
element.addEventListener("scroll", function(e) {
  console.log('e', e.target.scrollTop);
  localStorage.setItem('scrollPosition', e.target.scrollTop)
});

window.onload = function() {
  const element = document.getElementsByClassName('sidebarUl')[0]
  var reloading = sessionStorage.getItem("scrollPosition");
  if (reloading != 0) {
    element.scroll(0, localStorage.getItem('scrollPosition')|0);
  }
}
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda