2010-07-16 3 views
0

Как я могу прокрутить страницу с помощью javascript до тех пор, пока прокрученная высота не будет предопределенным числом пикселей?Прокрутить страницу до некоторой высоты

function pageScroll() { 
    // Next line is pseudocode: 
    if (window.ScrolledHeight != SOME_NUM) 
     window.scrollBy(0,50); 
} 
scrolldelay = setTimeout('pageScroll()',100); 

Должна быть какая-то логическая проверка чего-либо. Не могли бы вы мне помочь, как получить прокрученную высоту?

ответ

1

Не могли бы вы использовать переменную вне функции, которая увеличивала бы значение на 50 пикселей при каждом запуске strScroll, а затем проверяла, равна ли это или больше того значения, которое вы ищете?

например.

var scrollAmount = 0; 

function pageScroll() { 
    window.scrollBy(0,50); 
    scrollAmount += 50; 
    if(scrollAmount < 200) { 
     scrolldelay = setTimeout('pageScroll()',100); 
    } 
}

Вы также могли бы сделать функцию взять в качестве параметра, которые вы изменили, если вы не хотите использовать глобальную переменную.

+0

Nice идея. Я подожду несколько раз, возможно, есть свойство, которое указывает правильную высоту, иначе я буду отмечать ваше сообщение как ответ. – Ockonal

0

Прежде всего, вы не должны использовать setTimeout, вы должны использовать setInterval. В основном потому, что он лучше соответствует вашей цели и является более точным до фактического времени. Google, если вы хотите получить дополнительную информацию по этой теме. Но вам нужен метод clearInterval. Также быстрее использовать анонимные функции внутри setTimeout и setInterval.

startPageScroll(){ 
    var scrollAmt = 0; 
    var id=setInterval(function(){ 
    if(scrollAmt</*Whatever your limit is*/){ 
     window.scrollBy(0,50); 
     scollAmt+=50; 
    } 
    else{clearInterval(id);} 
    },100); 
} 

Есть способы получения фактической прокрутки страницы, но вы должны сделать что-то подобное, которое довольно более битный код, то просто держать текущую сумму, как далеко вы продвинулись.

var scroll; 

if(window.pageYOffset){ 
    scroll=window.pageYOffset; 
} 
else{ 
    scroll=document.body.scrollTop; 
} 

Вот ссылка, которая может помочь http://codepunk.hardwar.org.uk/ajs02.htm.

+0

setTimeout только для образца. Код будет запущен в цикле. – Ockonal

0

Вы уже имели действительные ответы, но я добавлю немного вкуса, она прокручивается, но замедляется до достижения целевой точки прокрутки:

function pageScroll() { 
    var delta = min(SOME_NUM-window.ScrolledHeight)>>1,50); 
    if (delta > 0) { 
     window.scrollBy(0,delta); 
     setTimeout('pageScroll()',100); 
    } 
} 

Приятный побочный эффект в том, что он должен достичь точно SOME_NUM независимо он кратен 50 (ваша сумма прокрутки) или нет.

Смежные вопросы