未捕获的类型错误:无法读取未定义的属性“top”

Uncaught TypeError: Cannot read property 'top' of undefined

本文关键字:未定义 读取 属性 top 类型 错误      更新时间:2023-09-26

我正在尝试根据元素到达页面顶部的时间添加类(标题为 -180px),但我似乎无法让偏移量顶部值起作用。

我使用窗口加载,因为图像的大小有助于决定每个部分的高度。您可以在此处查看一个实时示例 http://www.amypreston.co.uk/

$(window).load(function() {
    var $header = $("header");
    var numberOfSections = $("section").length;   
    var sectionOffsets = [];
    for(var i = 0; i < numberOfSections + 1; i++) {
        sectionOffsets.push($('section').eq(i).offset().top);            
    }            
    $(window).scroll(function() {
        var scrollTop = $(this).scrollTop();            
        for(var i = 0; i < numberOfSections + 1; i++) {
            if(scrollTop > sectionOffsets[i] - 180) {
                $header.removeClass().addClass("project" + (i + 1));                         
            }
        }
    });
});

你应该从语句中删除+ 1

for(var i = 0; i < numberOfSections + 1; i++) {

它应该是

for(var i = 0; i < numberOfSections; i++) {

删除+1

使用此代码

  for(var i = 0; i < numberOfSections; i++) {
        sectionOffsets.push($('section').eq(i).offset().top);            
    }