关于BOM特效二的例子

来源:2-15 BOM特效开发(2)

一坨羊毛

2022-01-26 16:22:00

问题描述:

在这个特效代码中,不明白为什么最后推入个无穷大

相关代码:

    <script>
        var list=document.getElementById("list");
        //使用事件委托
        list.onclick=function(e){
            if(e.target.tagName.toLowerCase()=="li"){
                //getAttribute表示得到标签身上的某个属性值
                var n=e.target.getAttribute("data-n");
                //用属性选择器寻找带有相同data-n的concent-part
                var contentPart=document.querySelector(".content-part[data-n="+n+"]");
                document.documentElement.scrollTop=contentPart.offsetTop;
            }
        };
        //在页面加载好之后,将所有的content-part盒子的offsetTop值推入数组
        var offsetArr=[];
        var contentParts=document.querySelectorAll(".content-part");
        for(var i=0;i<contentParts.length;i++){
            offsetArr.push(contentParts[i].offsetTop);
        }
        //为了最后一项可以比较
        offsetArr.push(Infinity);
        //监听页面的卷动
        window.onscroll=function(){
            var scrollTop=document.documentElement.scrollTop;
            //遍历offsetTopArr数组,看看当前的scrollTop值在哪两个楼层之间
            for(var i=0;i<contentParts.length;i++){
                if(scrollTop >= offsetArr[i] && scrollTop < offsetArr[i+1] ){
                    break;
                }
            }
            console.log(i);
        };
    </script>


写回答

1回答

好帮手慕然然

2022-01-26

同学你好,在以下位置处的代码中,会判断当前的scrollTop值在哪两个楼层之间,此时为了方便比较出scrollTop值的范围,offsetTopArr数组的最后需要推入一个无穷大值,即[0, 704, 1301, 2070, 2674, Infinity],表示最后一个范围是2674~Infinity,如图所示:

https://img.mukewang.com/climg/61f1089909c195c411690371.jpg

祝学习愉快!

0

0 学习 · 15276 问题

查看课程