var isTop = true; window.onscroll=function(){ if (!isTop) { clearInterval(time); }; isTop= false; } 這段代碼表示沒看懂,哪位朋友能幫我指點(diǎn)一二啊
4 回答
舉報(bào)
0/150
提交
取消
var isTop = true; window.onscroll=function(){ if (!isTop) { clearInterval(time); }; isTop= false; } 這段代碼表示沒看懂,哪位朋友能幫我指點(diǎn)一二啊
2014-05-08
舉報(bào)
2014-05-11
首先你點(diǎn)擊回到頂部時(shí),滾動(dòng)條開始往回滾,這時(shí)候istop為true,因?yàn)闈L動(dòng)條滾動(dòng)觸發(fā)window.onscroll 事件,!istop為false不執(zhí)行clearInterval(timer);但是下面的isTop=false;再將isTop置為false。這時(shí)候你人為滾動(dòng)鼠標(biāo),則再次觸發(fā)window.onscroll 事件,此時(shí)!istop為true 執(zhí)行clearInterval(timer);則滾動(dòng)條停下來
2015-02-04
我不同意一樓的答案,因?yàn)閣indow.scroll是連續(xù)執(zhí)行多次的
測(cè)試方法:
執(zhí)行效果就是:
每50ms執(zhí)行一次滾動(dòng),但是一滾動(dòng)就會(huì)停止,說明window.scroll是執(zhí)行多次的。
接下來分析代碼
實(shí)際的執(zhí)行順序:
1.執(zhí)行setInterval事件,由于有isTop=true,所以當(dāng)執(zhí)行下一次scroll的時(shí)候,isTop是ture
2.執(zhí)行onscroll,先執(zhí)行if(!isTop)判斷,然后在給isTop 賦值 false,重復(fù)執(zhí)行1
3.當(dāng)有人為滾動(dòng),重復(fù)執(zhí)行2,(此時(shí)因?yàn)閕sTop 賦值為false,故if(!isTop) 是,結(jié)果為真,即執(zhí)行clear操作),此時(shí)isTop 應(yīng)為false
證明:
執(zhí)行結(jié)果(我向下滾動(dòng),前面的4代表執(zhí)行了4次if判斷)
2014-10-05
下面的isTop=false;再將isTop置為false,這時(shí)候人為滾動(dòng)鼠標(biāo)和下面的定時(shí)器都同時(shí)還在運(yùn)行吧,為什么不是在這在之前定時(shí)器先把isTop置為true呢,怎么可以通過人為滾動(dòng)鼠標(biāo)就直接認(rèn)定isTop=false,而不用再經(jīng)過下面的定時(shí)器isTop=true,畢竟它是{ if (!isTop) { clearInterval(time); }; isTop= false; } ,而不是{ isTop= false; if (!isTop) { clearInterval(time); };} 求解
2014-05-09
意思就是只有當(dāng)滾動(dòng)條到達(dá)頂部的時(shí)候才取消定時(shí)器,取消定時(shí)器后就不會(huì)出現(xiàn)滑到中間強(qiáng)行向上的情況。這里的isTop=false 還有定時(shí)器里的isTop=true就是保證在沒滾動(dòng)到頂端前定時(shí)器不被取消,就是連續(xù)滾的意思。我也是初學(xué)者,說的比較啰嗦,不知道對(duì)不對(duì),希望相互學(xué)習(xí)