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