为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在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);

}

}


正在回答

2 回答

isTop刚开始设为true,然后判断如果isTop为false的时候,则清除定时器,接下来将isTop设为false,如果只是触发onscroll事件,isTop执行一次变为false就清除了定时器,如果触发的是onclick,isTop一直为true,就不会触发判断为false时,关闭定时器的命令

1 回复 有任何疑惑可以回复我~

其实很简单,最开始的时候,如果没有加true,那么滚动一次之后isTop变成false,中途就会停止

如果在定时器中加入一个isTop 为ture的话,他就会在执行定时器的时候始终为false,从而不停止滚动,

手动的拖动就直接激活window.onscroll ,跳过定时器,所以就出现这种状况

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
回到顶部效果
  • 参与学习       44211    人
  • 解答问题       206    个

回到顶部网站不可缺少的一部分,用JS实现炫酷拉风的回到顶部效果

进入课程

为什么在onclick函数里加了isTop = true;就可以了?这个逻辑不太理的通,求帮助

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信