Здравствуйте!
Долго и
упорно упорото использовал jQuery и тут вдруг где-то замкнуло и захотелось перейти на чистый JS.
Это наверное от того, что курить бросил
Вместо .animate() пробую использовать setInterval и столкнулся с небольшой проблемой...
Скроллю документ посредством setInterval и scrollBy(y,x) при клике по меню навигации.
Однако если до того, как setInterval отработал кликнуть по другой кнопке, т.е. запустить ту же функцию, но с несколько другими данными, на экране происходит полнейшая бредятина.
Подскажите, пожалуйста, как необходимо доработать скрипт:
function iTryScroll(ID){
var anchor = document.getElementById('anchor-'+ID+'');
var spx = document.body.scrollTop;
var fpx = getOffset(anchor); //тут отдельная функция возвращает позицию элемента относительно начала документа
clearInterval(scroll);//я вроде и сбрасываю setInterval - а все равно какая-то лажа получается
if(spx < fpx){//если мы сейчас выше якоря
var scroll = setInterval(
function(){
if ((spx + 20) <= fpx ){
window.scrollBy(0,20);
spx = spx + 20;
}else if((fpx - spx) != 0){
window.scrollBy(0,(fpx - spx));
spx = spx + (fpx - spx);
}else{
clearInterval(scroll);//останавливаем скроллинг при достижении цели
}
}
,1);
}
if(spx > fpx){// если мы сейчас ниже якоря
var scroll = setInterval(
function(){
if ((spx - 20) >= fpx ){
window.scrollBy(0,-20);
spx = spx - 20;
}else if((spx - fpx) != 0){
window.scrollBy(0,-(spx - fpx));
spx = spx + (fpx - spx);
}else{
clearInterval(scroll);//останавливаем скроллинг при достижении цели
}
}
,1);
}
}