Javascript 如何解决未捕获类型错误:无法读取属性';顶部';未定义的
我有一个网页的网站。 我用js添加了smoothscrollJavascript 如何解决未捕获类型错误:无法读取属性';顶部';未定义的,javascript,html,location-href,hashref,Javascript,Html,Location Href,Hashref,我有一个网页的网站。 我用js添加了smoothscroll $(document).ready(function(){ $("li > a").on('click', function(e) { if (this.hash !== "") { e.preventDefault(); var hash = this.hash; $('html, body').animate({ scrollTop: $(hash).off
$(document).ready(function(){
$("li > a").on('click', function(e) {
if (this.hash !== "") {
e.preventDefault();
var hash = this.hash;
$('html, body').animate({
scrollTop: $(hash).offset().top
}, 800, function(){
window.location.hash = hash;
});
}
});
});
下面是我的导航html代码:
<li class="{{ slug == '/' ? 'active' : '' }}"><a href="#home">HOME</a></li>
<li class="{{ slug == '/about' ? 'active' : '' }}"><a href="#about">ABOUT</a></li>
<li class="{{ slug == '/blog' ? 'active' : '' }}"><a href="#blog">BLOG</a></li>
但是当我转到另一个页面(比如博客)时,当我再次单击导航转到一个页面时,我得到了错误顶部。
我遗漏了什么吗?请确保在页面中放置了具有正确的
id
的相关元素:
$(文档).ready(函数(){
$(“li>a”)。在('click',函数(e){
如果(this.hash!==“”){
e、 预防默认值();
var hash=this.hash;
如果($(散列).length>0){
$('html,body')。设置动画({
scrollTop:$(散列).offset().top
},800,函数(){
window.location.hash=散列;
});
}
}
});
});代码>
ul{
位置:固定;
排名:0;
}
家
关于
博客
我希望当你得到它们时,你的散列将是“关于”和“家”\blog
请使用不带“#”的哈希,因为您的id不带“#”对吗?是的,id已经正确了。问题只是,当我进入博客页面,然后想进入关于,我有一个错误,顶端值是未定义的。我想还有其他的东西影响你的脚本。你会发布整个html标记以进行调试吗?对于animate()
,如何扭曲if($(hash).length>0){
?就像我更新的代码段一样,当我在没有#的情况下使用时,我仍然有关于top value的错误。你有id=“blog”和id=“about”和id=“home”的内容吗?var hash=this.hash.substring(1);试试这个,确保你有id=“home”…id=“about”…id=“blog”的内容示例:我打开我的网站,然后转到“关于”部分,然后转到“博客”,但从博客,当我想再次转到“关于”,这是url页面将无法工作,因为顶部值未定义。但是如果我删除scrooltop js,导航将无法工作。问题仅在于顶部值我无法显示所有html代码,但结构如下
欢迎来到我们的博客
检查$(hash.offset()
内部使用断点或警报设置函数动画,如果未定义
则您知道错误原因