滾動(dòng)條滾動(dòng)時(shí)觸發(fā)是為啥要這個(gè)呢isTop=false;
//滾動(dòng)條滾動(dòng)時(shí)觸發(fā) window.onscroll=function(){ var?oTop=document.documentElement.scrollTop||document.body.scrollTop; if(oTop>clientHeight){ btn.style.display="block"; }else{ btn.style.display="none"; } //解決滾動(dòng)條不能拖動(dòng)下拉問題 ???????????if(!isTop){ ???????????????clearInterval(timer); ???????????} ???????????isTop=false; }
這個(gè)一段代碼還是迷糊糊的
特別是為啥要這個(gè)呢isTop=false;,中間不是做了判斷了嗎
2017-02-04
我這邊不用這個(gè)變量也是正常運(yùn)行。Chrome
2016-10-28
首先搞明白,當(dāng)你拖動(dòng)鼠標(biāo)滾輪的時(shí)候,觸發(fā)的onscroll 事件不是一次,而是很多次,你可以做一個(gè)實(shí)驗(yàn),
window.onscroll = function(){
? ? ? console.log(document.body.scrollTop);
? ? ? }
你隨便滑動(dòng)一次滾輪,當(dāng)你停下時(shí),輸出的數(shù)字絕不止一次,這樣就可以理解。
正常邏輯是這樣, 當(dāng)click 事件被觸發(fā)后,定時(shí)器會(huì)被啟用,然后每個(gè)一定的時(shí)間都會(huì)執(zhí)行一次,每執(zhí)行一次,會(huì)觸發(fā)一次onscroll 事件,istop 的值會(huì)在 true & false 間來回變動(dòng)。
但是當(dāng)你滑動(dòng)滾輪,就會(huì)觸發(fā)多次哦那scroll 事件,第一次不會(huì)清楚定時(shí)器,只會(huì)改變istop 為false ,第二次,定時(shí)器會(huì)被清除,istop 還是為false , 同時(shí)滾動(dòng)條不會(huì)再自動(dòng)滾動(dòng)了。除非你在click 一次回到頂部
2016-09-06
首先(!isTop)只有當(dāng)isTop為false時(shí),才會(huì)執(zhí)行取消定時(shí)器的操作,如果后面不賦false就永遠(yuǎn)不能觸發(fā)window.onscroll內(nèi)的方法,所以需要賦給isTop false值。還有什么疑問可以繼續(xù)補(bǔ)充~
2016-07-30
觸發(fā)是他就變成false他就會(huì)取消定時(shí)器,進(jìn)而就不會(huì)往上面滾動(dòng)了
2016-07-30
這一段,我也不是很明白,老師設(shè)置isTop=true 來判斷的是“在點(diǎn)擊返回頂部按鈕后,定時(shí)器執(zhí)行回到頂部命令的這期間,有沒有人為的動(dòng)作(鼠標(biāo)有沒有滾動(dòng)滑輪),如果有就觸發(fā)清除定時(shí)器的命令”這樣回到頂部命令就被人為中斷了。
邏輯我是這么理解的,但是代碼中還是有點(diǎn)繞