急急!回到顶部按钮的一个疑问!大家帮帮忙!谢谢!

King钢 2015-06-13 12:43:20
麻烦大家看一下代码!
<html>
<head>
<style>
#btn1 {position:fixed; bottom:0; right:0;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload=function ()
{
var oBtn=document.getElementById('btn1');
var bSys=true;//这一步为什么要这样写??
var timer=null;

//如何检测用户拖动了滚动条
window.onscroll=function ()
{
if(!bSys) //还有这一步,系统怎么知道是false啊
{
clearInterval(timer);
}
bSys=false;
//alert("a")
};

oBtn.onclick=function ()
{
timer=setInterval(function (){
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
var iSpeed=Math.floor(-scrollTop/8);

if(scrollTop==0)
{
clearInterval(timer);
}

bSys=true;
document.documentElement.scrollTop=document.body.scrollTop=scrollTop+iSpeed;
}, 30);
};
};
</script>
</head>

<body>
1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />
<input id="btn1" type="button" value="回到顶部" />
</body>
</html>
...全文
85 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
King钢 2015-06-13
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
初始化无所谓,onscroll就是滚动就出发,用代码设置的会出发,但是代码触发时bSys先设置了bSys为true,所以不会清除计时器 如果你点击回到顶部按钮后同时拖动会触发onscroll,由于计时器是异步执行(30ms)的间隔,有可能拖动的间隙会先设置bSys为false后再拖动就会清除掉计时器了
可以再讲明白一点吗,具体一点,谢谢!
  • 打赏
  • 举报
回复
初始化无所谓,onscroll就是滚动就出发,用代码设置的会出发,但是代码触发时bSys先设置了bSys为true,所以不会清除计时器 如果你点击回到顶部按钮后同时拖动会触发onscroll,由于计时器是异步执行(30ms)的间隔,有可能拖动的间隙会先设置bSys为false后再拖动就会清除掉计时器了

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧