javascript offsetTop 属性既成功又同时出现错误

标签 javascript html offset

以下代码执行成功:

var $ = document.querySelector.bind(document);

function windowScroll() {
    var elems = ['section-1', 'section-2', 'section-3', 'section-4'];
    elems.forEach(function(elem) {
        if(window.pageYOffset >= $(`#${elem}`).offsetTop - $('.banner-header').offsetHeight) {
            var li = document.querySelectorAll('.banner-header > nav > a');
            for(var i = 0; i < li.length; i++) {
                li[i].classList.remove('active-nav-item');
            }
            $(`.banner-header > nav > a[href='#${elem}']`).classList.add('active-nav-item');
        } else {
            $(`.banner-header > nav > a[href='#${elem}']`).classList.remove('active-nav-item');
        }
    });
}

function elementEvent(element, onEvent, eventCallback) {
    if(element.addEventListener) {
        element.addEventListener(onEvent, eventCallback, false);
    } else {
        element.attachEvent(onEvent, eventCallback);
    }
}

elementEvent(window, 'scroll', windowScroll);

当我打开显示此错误消息的控制台时,我刚刚注意到第 6 行:

Uncaught TypeError: Cannot read property 'offsetTop' of null

offsetTop 属性是什么让事情变得复杂?我应该在代码中更改哪些内容才能使其正确?

最佳答案

offsetTop 没有任何问题。但是,您的错误 Uncaught TypeError: Cannot read property 'offsetTop' of null 意味着 parent 对象为 null,并且 null。 offsetTop 不存在。所以看起来 $(`#${elem}`) 正在为某些元素返回 null 。确保数组中的每个元素都存在于 DOM 中。

关于javascript offsetTop 属性既成功又同时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42661588/

相关文章:

javascript - 获取元素相对于父容器的位置/偏移量?

C++:偏移到 std::vector 迭代器的正确转换是什么?

javascript - 使用 UglifyJS + GruntJS 的条件编译

javascript - 在 Oracle APEX 中使用自动完成功能将下拉列表添加到文本字段

javascript - 如何强制 ngRepeat 不通过引用进行比较?

javascript - Bootstrap 选项卡面板 下一个 上一个 按钮

jquery - 使用 jquery 显示/隐藏与其他 div 共享类的 div 的最简单方法

javascript - RESTful 服务,Post 无法正确保存到数据库

javascript - 使用 jQuery 清除 &lt;input type ='file'/>

jquery - 在 css 动画 jQuery 期间更新元素偏移量