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

这段代码的滚动事件触发不了,请问哪里不对呢?

window.onload=function(){

// 获取对应操作元素

var obtn=document.getElementById("btn");

var timer=null;

var otop=true;

// 滚动条滚动事件

window.onscroll=function(){

if(!otop){

clearInterval(timer);

}

otop=false;

}

// 给按钮添加点击事件

obtn.onclick=function(){

// 绑定定时器

timer=setInterval(function(){

// 获取滚动距离

var istop=document.documentElement.scrollTop||document.body.scrollTop;

// 添加滚动速度

var ispeed=Math.floor(-istop/5);

// 改变滚动距离

document.documentElement.scrollTop=document.body.scrollTop = istop+ispeed;

otop=true;

// 判定当滚动距离为0或小于0时,清除定时器

if(istop <= 0){


istop=0;

clearInterval(timer);


}

},50);

}

};

这段代码的滚动事件触发不了,请问哪里不对呢?

正在回答

2 回答

在执行onclick事件中,已经触发了onscroll 事件。因为浏览器滚动条滚动时就会触发 onscroll 事件,通常情况下指上下滚动条滚动。所以在这里浏览器无法判断是自动执行的滚动条滚动还是用户手动执行的滚动,直到onclick方法中的setInterval执行完毕也不会进入onscroll 方法。改用window.onmousewheel=function(){clearInterval(timer);};方法即可

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

js 调用写错了

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

举报

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

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

进入课程

这段代码的滚动事件触发不了,请问哪里不对呢?

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