Не работает кнопка прокрутки вверх
Кто может подсказать, в чем проблема. Не работает скрипт плавной прокрутки вверх сайта при клике на кнопку.
export default function scrollToTop() {
const body = document.getElementsByTagName('body')[0];
const topArrow = document.querySelector('.top-arrow');
let scrolled;
let timer;
body.addEventListener('scroll', function() {
getWindowScrollTop(this);
});
function scrollToTop(){
if (scrolled > 0) {
window.scrollTo(0, scrolled);
scrolled = scrolled - 50;
timer = setTimeout(scrollToTop, 200);
}
else {
clearTimeout(timer);
window.scrollTo(0, 0);
}
}
function getWindowScrollTop(el) {
let cont_top = el.scrollTop ? el.scrollTop : document.body.scrollTop;
if(cont_top >= 300) {
topArrow.classList.add('top-arrow--show');
topArrow.onclick = () => {
scrolled = window.pageYOffset;
scrollToTop();
}
} else {
topArrow.classList.remove('top-arrow--show');
}
}
}
|
DVV,
[html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
|
DVV,
строка 29 должна быть в строке 6. почему на вашей странице не работает window.scrollTo может кто-то ещё подскажет. |
DVV,
<!DOCTYPE html>
<html lang="ru">
<head>
<title>T-Task</title>
<style type="text/css">
p {
height: 2000px;
}
.top-arrow {
position: fixed;
display: none;
top: 10px;
right: 10px;
}
.top-arrow.top-arrow--show {
display: block;
}
</style>
</head>
<body>
<p></p>
<button class="btn top-arrow">вверх</button>
<script>
function scrollToTop() {
const body = document.getElementsByTagName('body')[0];
const topArrow = document.querySelector('.top-arrow');
let scrolled;
let timer;
topArrow.onclick = () => {
scrolled = window.pageYOffset;
scrollToTop();
}
window.addEventListener('scroll', function() {
getWindowScrollTop(this);
});
function scrollToTop() {
clearTimeout(timer);
if (scrolled > 0) {
scrolled = scrolled - 15;
timer = setTimeout(scrollToTop, 10);
}
window.scrollTo(0, scrolled);
}
function getWindowScrollTop(el) {
topArrow.classList.toggle('top-arrow--show', el.pageYOffset >= 300)
}
};
scrollToTop()
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 22:55. |