window.onscroll无法刷新scrollTop的值?

window.onscroll = function(){
    var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
    console.log(scrollTop);
}
window.onload = function(){
     window.pageYOffset = document.documentElement.scrollTop = document.body.scrollTop =100;
}

window.onload函数的作用是当加载该页面时自动定位到100的位置。
如果没有window.onload函数,onscroll可以正确地随着页面滚动打印出scrollTop的值。但一旦window.onload函数里把100赋值给window.pageYOffset后无论页面怎么滚动scrollTop的值都一直是100不会变,请问定位100位置后怎么做才能随着滚动正常刷新scrollTop的值?

阅读 6.3k
3 个回答
  window.onload = function () {
                window.scroll(0, 100);
            }
            window.onscroll = function () {
                var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
                console.log(scrollTop);
            }
window.onload=function(){
        window.scrollTo(0,100);
    };

解决方案:将pageYOffset放在 或 运算符的最后边即可解决问题。

理由:js的与和或操作属于短路操作,||遇到非0即返回当前数据,遇到0继续执行。你让该值等于100,所以每次返回100

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏