Ustaw licznik odpowiedzialny za to, w którym miejscu się znajdujesz. Gdy jesteś na samym dole, licznik zapewne jest ustawiony np. na 0 - oznacza, to że gdy naciśniesz na coś, to wtedy jesteś przenoszony na samą górę. Po ustawieniu licznika na odpowiednią wartość, powinieneś być przeniesiony z dołu do góry zgodnie z wartościami w liczniku.
Np. poglądowo mogłoby to wyglądać tak: 0 - góra, 1 - środek, 2 - dół.
Jeśli jesteś na samym dole (2), to licznik widzi, że jesteś na tej sekcji. Jeśli naciśniesz na sekcję numer 0, to wtedy powienien przenieść Cię do góry. Teraz jest tak chyba, że gdy zjedziesz na sam dół (2), to automatyczenia zmienia się wartość licznika na 0 i później jak klikasz, to przenosi Cię do sekcji (0) zamiast np. do sekcji (1).
Licznik - mam na myśli wartość pozycji scroll'a w uproszczeniu.
<body style="background: darkolivegreen; margin: 0; padding: 0;">
<div style="position: fixed; right: 0;">
<button id="to_section">to_section: </button>
<input type="text" id="section_x"/>
</div>
<div id="section1">s1</div>
<div id="section2" style="margin-top: 1000px;">s2</div>
<div id="section3" style="margin-top: 2450px;">s3</div>
document.getElementById('to_section').addEventListener('click', function() {
if(document.getElementById(document.getElementById('section_x').value) != undefined) {
let target_position = document.getElementById(document.getElementById('section_x').value).getBoundingClientRect().top;
let start_position = window.pageYOffset;
let distance = target_position - start_position;
window.scrollTo({
top: distance,
behavior: 'smooth'
});
}
}, false);
</body>