在我的一页Website我添加了一个脚本,以便在不同的div框之间平滑移动。但随后突然导航停止工作。这是破坏它的最后一个。
<script>
$(function(){
var sections = {},
_height = $(window).height(),
i = 0;
// Grab positions of our sections
$('.section').each(function(){
sections[this.name] = $(this).offset().top;
});
$(document).scroll(function(){
var pos = $(this).scrollTop();
// Look in the sections object and see if any section is viewable on the screen.
// If two are viewable, the lower one will be the active one.
for(i in sections){
if(sections[i] > pos && sections[i] < pos + _height){
$('a').removeClass('active');
$('#nav_' + i).addClass('active');
}
}
});
});
$(".scroll").click(function(event){
event.preventDefault();
var full_url = this.href;
var parts = full_url.split("#");
var trgt = parts[1];
var target_offset = $("#"+trgt).offset();
var target_top = target_offset.top;
$('html, body').animate({scrollTop:target_top}, 500);
});
</script>
答案 0 :(得分:0)
控制台在line 14
$('#nav').localScroll();
Cannot read property 'top' of undefined
错误
<强>更新强>
看起来ID section1
没有元素应该是 nav_section1
这一行
$("#"+trgt).offset();
应该是
$("#nav_"+trgt).offset(); OR $('[href="#' + trgt + "]').offset()
当您获得offset()
值时,还要确保该元素未隐藏。
答案 1 :(得分:-1)
喜欢Chrome的Inspector ......你错过了一个分号。
<script type="text/javascript">
$(function(){
$('#nav').localScroll();
});
</script>
您为什么使用<nav>
?说明介绍了如何使用<div>
试试这个:
<div id="nav">
<ul>
<li><a id="nav_section1" href="#section1" class="scroll active">Section 1</a></li>
<li><a id="nav_section2" href="#section2" class="scroll">>Section 2</a></li>
<li><a id="nav_section3" href="#section3" class="scroll">>Section 3</a></li>
<li><a id="nav_section4" href="#section4" class="scroll">>Section 4</a></li>
<li><a id="nav_section5" href="#section5" class="scroll">>Section 5</a></li>
<li><a id="nav_section6" href="#section6" class="scroll">>Section 6</a></li>
<li><a id="nav_section7" href="#section7" class="scroll">>Section 7</a></li>
</ul>
</div>