為什么在onclick函數里加了isTop = true;就可以了?這個邏輯不太理的通,求幫助
window.onload = function(){
var obtn = document.getElementById("btn");
var clientHeight = document.documentElement.clientHeight || document.body.clientHeight; ?//獲取屏幕高度
var timer = null;
var isTop = true;
//滾動條滾動時觸發
window.onscroll = function(){
var osTop = document.documentElement.scrollTop || document.body.scrollTop;
if(osTop >= clientHeight){
obtn.style.display = 'block';
}else{
obtn.style.display = 'none';
}
if(!isTop){
clearInterval(timer);
}
isTop = false;
}
obtn.onclick = function(){
//設置定時器
clearInterval(timer);
timer = setInterval(function(){
//滾動條距離頂部的距離
var osTop = document.documentElement.scrollTop || document.body.scrollTop;
var ispeed = Math.floor(-osTop / 30);
document.documentElement.scrollTop = document.body.scrollTop = osTop + ispeed;
isTop = true;
if(osTop == 0){
clearInterval(timer);
}
},30);
}
}
2016-07-18
isTop剛開始設為true,然后判斷如果isTop為false的時候,則清除定時器,接下來將isTop設為false,如果只是觸發onscroll事件,isTop執行一次變為false就清除了定時器,如果觸發的是onclick,isTop一直為true,就不會觸發判斷為false時,關閉定時器的命令
2016-06-19
其實很簡單,最開始的時候,如果沒有加true,那么滾動一次之后isTop變成false,中途就會停止
如果在定時器中加入一個isTop 為ture的話,他就會在執行定時器的時候始終為false,從而不停止滾動,
手動的拖動就直接激活window.onscroll ,跳過定時器,所以就出現這種狀況