Вот мой код:
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
document.getElementById("myBtn").style.display = "block";
} else {
document.getElementById("myBtn").style.display = "none";
}
}
// When the user clicks on the button, scroll to the top of the document
function topFunction() {
document.body.scrollTop = 0; // For Safari
document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
}
В следующий раз воспользуйтесь поиском. По этому поводу есть много вопросов (и они на самом деле содержат вопрос, а не только оператор и блок кода), например, этот с более чем 30 ответами, многие из них также объясняют, как добиться плавной прокрутки: stackoverflow.com/questions/1144805/…
@david meza есть ли альтернатива, использующая только чистый javascript?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это потому, что вы просто устанавливаете scrollTop на 0. Если вам нужен переход / анимация, вы должны определить его самостоятельно или использовать одну из многих библиотек, которые помогут вам в этом, например jQuery. Например, stackoverflow.com/questions/5580350/…