2017-04-11 45 views
0

如何修復的錯誤行:無法讀取未定義的jQuery/JavaScript的財產「頂」在Chrome和Firefox的

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'); 
    } 
} 
+0

你期待什麼站在var頁面? –

+0

你可以在'changePage'中放置一個'console.log'來打印'page'的值。 – gurvinder372

回答

0

$('#' + page)不返回任何元件,這意味着$('#' + page).offset()返回undefined

您無法獲得undefined.top屬性。

顯然,用'#' + page創建的選擇器不正確。

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

+0

感謝你的快速回復。但你能告訴我實施它的正確方法嗎? –

+0

您是否嘗試確認是否存在未定義的'this.id'? – Cerbrus

+0

亞工作在this.id但不是在鉻 –