Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解决未捕获类型错误:无法读取属性';顶部';未定义的_Javascript_Html_Location Href_Hashref - Fatal编程技术网

Javascript 如何解决未捕获类型错误:无法读取属性';顶部';未定义的

Javascript 如何解决未捕获类型错误:无法读取属性';顶部';未定义的,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

我有一个网页的网站。 我用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).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()
    内部
    使用断点或警报设置函数动画,如果
    未定义
    则您知道错误原因