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

祝学习愉快!
相似问题
回答 1
回答 1
回答 1
回答 1
回答 1