關于startScroll()中area.scrollTop++何時執行的問題
第一次執行setTimeout(startScroll,delay)的時候。先執行time=setInterval("scrollUp()",speed);
執行scrollUp(),的時候,area.scrollTop為0,那么就會直接跳到
if(area.scrollTop % iliHeight==0){
?? clearInterval(time);
?? setTimeout(startScroll,delay);
?? }
這個時候area.scrollTop為0,判斷結果為1,那么又重新回到了
function startScroll(){
? time=setInterval("scrollUp()",speed);
? area.scrollTop++;
? }
。
我這樣理解肯定是不對的,不理解的就是第一次執行startScroll
,其中的area.scrollTop++;是什么時候執行的?
?
2016-11-30
? time=setInterval("scrollUp()",speed);
? area.scrollTop++;
我昨天 問過一個搞前端的工程師, 他說setInterval 并不是for循環一樣, 不執行完就不會跳出。
setInterval ?只是在speed的時間內回調scrollUp這個函數, 所以相對機器時間來講,中間的間隔足夠再執行其它語句, 所以你下面的area.scrollTop,基本上會和setInterval("scrollUp()",speed);同時執行, 不同的是:area.scrollTop++ ?只執行一次,就不再執行了, 后面只會執行setInterval 的循環
2016-09-02
按你的說法的話在if判斷前area.scrollTop++已經執行一次了,所以下面的才會執行下去,不然進入一個死循環,個人覺得最好把area.scrollTop++放在setInterval前