Последний div в нижней части сайта блокируется в нижней части страницы и не позволит мне прокручивать резервную копию без обновления. Явный тайм-аут не работает.
Что мне нужно изменить для решения этой проблемы?
Вот мои js:
function autoScrollTo(el){
var sliderPx = document.getElementById('nav').style.top;
var sliderPos = sliderPx;
var targetPos = document.getElementById(el).offsetTop;
if(sliderPos < targetPos){
scrollDown(el);
} else {
scrollUp(el)
}
}
var scrollAmount = 0;
var distance = 38;
var speed = 16;
function scrollDown(el){
var offsetY = window.pageYOffset;
var targetY = document.getElementById(el).offsetTop;
var timeLooper = setTimeout ('scrollDown(\''+el+'\')', speed);
if(offsetY < targetY){
scrollAmount = offsetY+distance;
window.scroll(0, scrollAmount);
} else {
clearTimeout(timeLooper);
}
}
function scrollUp(el){
var currentY = window.pageYOffset;
var targetY = document.getElementById(el).offsetTop;
var looper = setTimeout ('scrollUp(\''+el+'\')', speed);
if(currentY > targetY){
scrollY = currentY-distance;
window.scroll(0, scrollY);
} else {
clearTimeout(looper);
}
}
Вот мой HTML:
<div id="nav">
<ul>
<li><a href="#" onclick="return false;" onmousedown="autoScrollTo('services');">SERVICES</a></li>
<li><a href="#" onclick="return false;" onmousedown="autoScrollTo('feed');">CONTACT</a></li>
</ul>
<div class="clearFix"></div>
</div><!--/nav-->
Честно говоря, вы должны пересмотреть свое решение, работать с JQuery (оживить) и изменить логику прокрутки, однако я изменил некоторые вещи и добавил флаг, который ловит вашу бесконечную прокрутку... просто быстрый обходной путь, но серьезно, начните сначала, или у вас не будет приличного кроссбраузерного прокрутки!
function autoScrollTo(el){
console.log(el);
var scrollPos = document.documentElement.scrollTop;
var targetPos = document.getElementById(el).offsetTop;
console.log(scrollPos + "," + targetPos);
if(scrollPos < targetPos){
scrollDown(el);
} else {
scrollUp(el)
}
}
var scrollAmount = 0;
var distance = 38;
var speed = 16;
var lastPosition;
function scrollDown(el){
var offsetY = document.documentElement.scrollTop;
var targetY = document.getElementById(el).offsetTop;
var timeLooper = setTimeout ('scrollDown(\''+el+'\')', speed);
if(offsetY < targetY && lastPosition != offsetY){
console.log(offsetY + "," + targetY);
scrollAmount = offsetY+distance;
window.scroll(0, scrollAmount);
} else {
console.log("end down");
clearTimeout(timeLooper);
}
lastPosition = offsetY;
}
function scrollUp(el){
var currentY = document.documentElement.scrollTop;
var targetY = document.getElementById(el).offsetTop;
var looper = setTimeout ('scrollUp(\''+el+'\')', speed);
if(currentY > targetY && lastPosition != currentY){
scrollY = currentY-distance;
window.scroll(0, scrollY);
} else {
console.log("end up");
clearTimeout(looper);
}
lastPosition = currentY;
}