老师请问为什么为这段代码,读取到的topNum值一直为0?

老师请问为什么为这段代码,读取到的topNum值一直为0?

# 具体遇到的问题

# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里

var MouseoverOrOut = function (idxlib) {

    lib[idx].onmouseover = function () {

        console.log(idx);

        huadongtiao.style.left = (idx * 92+ 'px';

    }


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

    var pageNum = topNum/640;

    var whatPage = Math.ceil(pageNum);

    lib[i].onmouseout = function(){

        console.log(topNum);

        huadongtiao.style.left = (whatPage * 92)+ 'px';

}

}

for (var i = 0i < navAll.lengthi++) {

    MouseoverOrOut(inavAll);

}

​输入代码,可通过选择【代码语言】突出显示

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,“不滚动页面”也能获取滚动高度,只不过不滚动页面获取的高度为0。0就是滚动高度,没有滚动页面,肯定为0。假如现在显示到第二屏了,那么页面肯定要滚动啊,不滚动也没有办法显示到第二屏。不管是点击导航或者滚动鼠标滚轮,只要滚动条的滚动高度不为0,肯定会触发window.onscroll,所以建议同学参考老师的第一条回复,在window.onscroll 中获取滚动高度就行,没有其他办法。

另外,作业的导航下划线滚动效果,在课程中都是有详细的讲解的,可以复习一下视频:

http://img1.sycdn.imooc.com//climg/5fd70ef50933346909440336.jpg

地址:https://class.imooc.com/lesson/781#mid=19651

推荐给同学一个学习方法:先学习视频,把视频的案例多练习几遍,案例熟练之后,再做作业加以巩固。这样的学习效率才更高哦。

祝学习愉快~

好帮手慕夭夭 2020-12-14 11:15:11

同学你好,如果页面没有滚动,默认在顶部的时候,获取的高度就是0 。同学的代码中,获取页面高度的代码没有放在window.onscroll中,所以默认获取的滚动高度就是0。例如如下,在滚动事件中添加此代码,当页面滚动就会触发获取新的页面的滚动距离了:

<!DOCTYPE html>

<html>


<head>

    <meta charset="UTF-8">

    <title>Document</title>

    <style>

        body{

            height: 20000px;

        }

    </style>

</head>


<body>

    <script>


       window.onscroll = function () {

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

            console.log(topNum)

        }


    </script>

</body>


</html>



祝学习愉快~

  • 提问者 听说吃黄瓜减肥 #1

    老师是这样子的,我是想通过获取滚动条的高度确定页面在第几页,从而确定导航条下方的红色滑动条应该对应在什么位置,如果不滚动页面,那我还能采用其他什么方式进行定位嘛?

    2020-12-14 13:32:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师