老师麻烦解释一下下面的代码,谢谢
来源:5-3 标识楼层号和抵达指定楼层
穿梭时间
2019-07-30 22:37:02
// elevator
floor.whichFloor = function () {
var num = -1;//这个一开始定义有什么用呢,不是一滚动就会调用$floor遍历被后面直接覆盖吗?
//测试了一下一滚动就触发遍历,当移动到floor的可视范围,就触发2次的原因是什么?
floor.$floor.each(function (index, elem) {
var floorData = floor.floorData[index];
num = index;
console.log('触发遍历')//测试?
if (floor.$win.scrollTop()+floor.$win.height()/2 < floorData.offsetTop) {
num = index - 1;
return false;//这个相当于break吗,num值会保存下来吗?
}
});
return num;
};
1回答
同学你好,
1、声明num值为-1,表示的是-1层,因为在左侧导航项中判断中当num值为-1的时候导航隐藏:
其实这里不设置num值为-1也可以,只声明一下:
在下面判断中将index减去了1,当index为0的时候,减去1为-1,也可以达到导航判断的条件。
2、在滚动事件中调用了setElevator方法,在这个方法中调用了whichFloor方法:
所以一滚动,就会触发console.log(),输出的次数不止两次哦,也有多次的情况。
3、这里return false相当于break:
在结束当前循环之后给num值赋值了,所以num就有了当前值,然后下面就将num值返回了。
自己可以再测试理解下,祝学习愉快!
相似问题