为什么offset().top取不到值

var $articleList = $('.violet-post');
$articleList.each(function(index, value){
                var eleTop = $(value).eq(index).offset().top + $(window).scrollTop();
                var windowTop = $(window).scrollTop() + $(window).height();

                if(eleTop < windowTop) {
                    showNum++;
                }else{
                    return;
                }
});

如上为什么提示

Uncaught TypeError: Cannot read property 'top' of undefined

但是offset对象是可以取到的啊,为什么取不到对象里的top值呢。。

Object {top: 368, left: 249}
阅读 7.3k
2 个回答

问题应该出在each上,你可能数组越界然后有一个值变成了undefined,所以就没有top属性了。

在遍历过程中$(value).eq(index).offset()出现undefined的情况,建议在每次取值时输出top查看在哪一次循环出现问题