為什么在onclick函數(shù)里加了isTop = true;就可以了?這個邏輯不太理的通,求幫助
window.onload = function(){
var obtn = document.getElementById("btn");
var clientHeight = document.documentElement.clientHeight || document.body.clientHeight; ?//獲取屏幕高度
var timer = null;
var isTop = true;
//滾動條滾動時觸發(fā)
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(){
//設(shè)置定時器
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剛開始設(shè)為true,然后判斷如果isTop為false的時候,則清除定時器,接下來將isTop設(shè)為false,如果只是觸發(fā)onscroll事件,isTop執(zhí)行一次變?yōu)閒alse就清除了定時器,如果觸發(fā)的是onclick,isTop一直為true,就不會觸發(fā)判斷為false時,關(guān)閉定時器的命令
2016-06-19
其實很簡單,最開始的時候,如果沒有加true,那么滾動一次之后isTop變成false,中途就會停止
如果在定時器中加入一個isTop 為ture的話,他就會在執(zhí)行定時器的時候始終為false,從而不停止?jié)L動,
手動的拖動就直接激活window.onscroll ,跳過定時器,所以就出現(xiàn)這種狀況