亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

滾動條滾動時觸發是為啥要這個呢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;,中間不是做了判斷了嗎

正在回答

5 回答

我這邊不用這個變量也是正常運行。Chrome

0 回復 有任何疑惑可以回復我~

首先搞明白,當你拖動鼠標滾輪的時候,觸發的onscroll 事件不是一次,而是很多次,你可以做一個實驗,

window.onscroll = function(){

? ? ? console.log(document.body.scrollTop);

? ? ? }

你隨便滑動一次滾輪,當你停下時,輸出的數字絕不止一次,這樣就可以理解。

正常邏輯是這樣, 當click 事件被觸發后,定時器會被啟用,然后每個一定的時間都會執行一次,每執行一次,會觸發一次onscroll 事件,istop 的值會在 true & false 間來回變動。

但是當你滑動滾輪,就會觸發多次哦那scroll 事件,第一次不會清楚定時器,只會改變istop 為false ,第二次,定時器會被清除,istop 還是為false , 同時滾動條不會再自動滾動了。除非你在click 一次回到頂部

0 回復 有任何疑惑可以回復我~

首先(!isTop)只有當isTop為false時,才會執行取消定時器的操作,如果后面不賦false就永遠不能觸發window.onscroll內的方法,所以需要賦給isTop false值。還有什么疑問可以繼續補充~

0 回復 有任何疑惑可以回復我~

觸發是他就變成false他就會取消定時器,進而就不會往上面滾動了



0 回復 有任何疑惑可以回復我~
#1

子非酸菜魚

我也是這么理解的,就是被 false 一會兒 true 搞懵了
2016-07-30 回復 有任何疑惑可以回復我~

這一段,我也不是很明白,老師設置isTop=true 來判斷的是“在點擊返回頂部按鈕后,定時器執行回到頂部命令的這期間,有沒有人為的動作(鼠標有沒有滾動滑輪),如果有就觸發清除定時器的命令”這樣回到頂部命令就被人為中斷了。

邏輯我是這么理解的,但是代碼中還是有點繞

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
回到頂部效果
  • 參與學習       44197    人
  • 解答問題       214    個

回到頂部網站不可缺少的一部分,用JS實現炫酷拉風的回到頂部效果

進入課程

滾動條滾動時觸發是為啥要這個呢isTop=false;

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號