![](/img/trans.png)
[英]Getting “Uncaught TypeError: Cannot read property 'top' of undefined” on javascript
[英]Javascript Error Uncaught TypeError: Cannot read property 'top' of undefined
我正在編碼我的頁面,我使用了一個模板。 我不太了解javascript,所以只有當我轉到portfolio.html 頁面並切換到移動視圖時才會收到此錯誤。 在 index.html 中沒有顯示任何錯誤。 索引頁面使用如下導航鏈接: <li><a href="#portfolio-section" class="nav-link">Portfolio</a></li>
並且工作正常。 在投資組合頁面導航鏈接中,我想轉到其他文件,如下所示: <li><a href="index.html" class="nav-link">Inicio</a></li>
。
我的代碼給出了這個錯誤:
Javascript 錯誤未捕獲類型錯誤:無法讀取未定義的屬性“頂部”
有什么解決辦法嗎?
我的html:
<html lang="pt-br">
<head>
<title>Nova Pintura</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">enter code here
<link href="https://fonts.googleapis.com/css?family=Work+Sans:400,700,900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/jquery-ui.css">
<link rel="stylesheet" href="css/owl.carousel.min.css">
<link rel="stylesheet" href="css/owl.theme.default.min.css">
<link href="https://fonts.googleapis.com/css?family=Dosis|Oswald&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/jquery.fancybox.min.css">
<link rel="stylesheet" href="css/bootstrap-datepicker.css">
<link rel="stylesheet" href="fonts/flaticon/font/flaticon.css">
<link rel="stylesheet" href="fonts/icomoon/style.css">
<link rel="stylesheet" href="css/aos.css">
<link rel="stylesheet" href="css/style.css">
</head>
<body data-spy="scroll" data-target=".site-navbar-target" data-offset="300">
<div class="site-wrap">
<div class="site-mobile-menu site-navbar-target">
<div class="site-mobile-menu-header">
<div class="site-mobile-menu-close mt-3">
<span class="icon-close2 js-menu-toggle"></span>
</div>
</div>
<div class="site-mobile-menu-body"></div>
</div>
</div>
<header class="site-navbar py-4 js-sticky-header site-navbar-target" role="banner">
<div class="container">
<div class="row align-items-center">
<div class="col-6 col-xl-2">
<h1 class="mb-0 site-logo">
<a href="index.html">
<img src="images/logo/np.png" width="200" height="55" alt=""></img>
</a>
</h1>
</div>
<div class="col-12 col-md-10 d-none d-xl-block">
<nav class="site-navigation position-relative text-right" role="navigation">
<ul class="site-menu main-menu js-clone-nav mr-auto d-none d-lg-block">
<li><a href="index.html" class="nav-link">Inicio</a></li>
<li><a href="index.html#about-section" class="nav-link">Sobre Nós</a></li>
<li><a href="portfolio.html" class="nav-link active">Portfolio</a></li>
<li><a href="index.html#services-section" class="nav-link">Serviços</a></li>
<li><a href="index.html#contact-section" class="nav-link">Contato</a></li>
</ul>
</nav>
</div>
<div class="col-6 d-inline-block d-xl-none ml-md-0 py-3" style="position: relative; top: 3px;"><a href="#"
class="site-menu-toggle js-menu-toggle float-right"><span class="icon-menu h3"></span></a></div>
</div>
</div>
</div>
給出錯誤的js函數:
// navigation
var OnePageNavigation = function() {
var navToggler = $('.site-menu-toggle');
$("body").on("click", ".main-menu li a[href^='#'], .smoothscroll[href^='#'],.main-menu li a[href^='index.html'], .smoothscroll[href^='index.html'], .site-mobile-menu .site-nav-wrap li a", function(e) {
e.preventDefault();
var hash = this.hash;
$('html, body').animate({
'scrollTop': $(hash).offset().top
}, 300, 'easeInOutExpo', function(){
window.location.hash = hash;
});
});
};
OnePageNavigation();
var siteScroll = function() {
$(window).scroll(function() {
var st = $(this).scrollTop();
if (st > 100) {
$('.js-sticky-header').addClass('shrink');
} else {
$('.js-sticky-header').removeClass('shrink');
}
})
};
Cannot read property 'propName' of undefined
是非常常見的錯誤。 這是不言自明的。 換句話說,對象不包含屬性,因為它不存在。 快速掃描您的代碼'scrollTop': $(hash).offset().top
是問題所在。 確保您在使用前檢查該屬性。
下面的代碼段將確保您的對象與該屬性一起存在
'scrollTop': $(hash) &&& $hash.offset() && $hash.offset().top ? $hash.offset().top : aDefaultValue; ///You should assign your own default value
今天我遇到了同樣的問題(代碼和你的完全一樣),我只是通過糾正上面的解決方案之一來解決這個問題:
代替
'scrollTop': $(hash).offset().top
每
'scrollTop': $(hash) && $hash.offset() && $hash.offset().top && $hash.offset().top(0)
如果您使用任何需要更改 href ="" 參數的語言,請不要忘記在腳本中進行更改。
例如,如果我使用 django,我將不得不使用href = "{% url 'index'%}"
那么你必須執行以下操作:
替換[href^='#']
每[href^='{% url']
(因為我在頁面之間的引用總是必須以"{% url)
開頭"{% url)
我希望我能幫上忙,盡管時間已經過去了,而且您可能已經找到了解決方案:D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.