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