无法读取 Chrome 和 Firefox 中未定义的 jQuery/JavaScript 的属性"top"



如何修复以下错误行:

var targetTop = $('#' + page).offset().top;

我正在尝试最后 3 个月,但仍然没有找到修复方法。

$(document).ready(function(){
    $(window).scroll(function() {
        $('.page').each(function () {
            changePage(this.id);
        });
    });
});
function changePage (page) {
    var position = $(window).scrollTop();
    var targetTop = $('#' + page).offset().top;
    var targetBottom = targetTop + $('#' + page).height();
    if (position >= targetTop && position < targetBottom && !$('#' + page).hasClass('active')) {
        console.log('id: ' + page);
        $('.page').removeClass('active');
        $('#' + page).addClass('active');
        $('iframe').attr('src', '<?=SITE_URL?>upload_files/collection/TS.pdf#page=' + page[page.length - 1]+'&zoom=45&toolbar=0&navpanes=0');
    }
}
$('#' + page)

返回任何元素,这意味着$('#' + page).offset()返回undefined

您无法获得undefined.top属性。

显然,使用 '#' + page 创建的选择器不正确。

原因可能是changePage(this.id);中未定义的id

最新更新