Javascript I';我在ul中添加了一个li,当它起作用时,它';是什么导致了一个错误

Javascript I';我在ul中添加了一个li,当它起作用时,它';是什么导致了一个错误,javascript,jquery,Javascript,Jquery,我使用了一个模板,它有一些很好的滚动效果(),但是,我在ul的末尾添加了一个外部链接,它似乎可以工作,但它会导致错误 滚动时出现以下错误: 未捕获错误:语法错误,无法识别的表达式: 我相信下面JavaScipt代码的第一部分就是它的破绽之处,但我不确定如何修复它: function onScroll(event){ var scrollPos = $(document).scrollTop(); $('.navbar-default .navbar-na

我使用了一个模板,它有一些很好的滚动效果(),但是,我在
ul
的末尾添加了一个外部链接,它似乎可以工作,但它会导致错误

滚动时出现以下错误:

未捕获错误:语法错误,无法识别的表达式:

我相信下面JavaScipt代码的第一部分就是它的破绽之处,但我不确定如何修复它:

 function onScroll(event){
          var scrollPos = $(document).scrollTop();
          $('.navbar-default .navbar-nav>li>a').each(function () {
              var currLink = $(this);
              var refElement = $(currLink.attr("href"));
              if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
                  $('.navbar-default .navbar-nav>li>a').removeClass("active");
                  currLink.addClass("active");
              }
              else{
                  currLink.removeClass("active");
              }
          });
      }



      <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <ul class="nav navbar-nav navbar-right">
            <li><a class="menu active" href="#home" title="Home" >Home</a></li>
            <li><a class="menu" href="#about">about </a></li>
            <li><a class="menu" href="#team" title="Portfolio">Portfolio</a></li>
            <li><a class="menu" href="#contact" title="Contact">contact</a></li>
            <li><a href="www.google.com" target="_blank" >google</a></li>
          </ul>
      </div>
函数onScroll(事件){
var scrollPos=$(document.scrollTop();
$('.navbar default.navbar nav>li>a')。每个(函数(){
var currLink=$(此);
var refElement=$(currLink.attr(“href”);
if(refElement.position().top scrollPos){
$('.navbar default.navbar nav>li>a').removeClass(“活动”);
currLink.addClass(“活动”);
}
否则{
currLink.removeClass(“活动”);
}
});
}

我假设您使用的任何模板都希望您的菜单具有特定的结构,例如应用于菜单内锚定的
属性。您添加的锚不具有此属性

尝试更改此选项:

 <li><a href="www.google.com" target="_blank" >google</a></li>
  • 为此:

     <li><a class="menu" href="www.google.com" target="_blank">google</a></li>
    

  • 我假设您使用的任何模板都希望您的菜单具有特定的结构,例如应用于菜单内锚定的
    属性。您添加的锚不具有此属性

    尝试更改此选项:

     <li><a href="www.google.com" target="_blank" >google</a></li>
    
  • 为此:

     <li><a class="menu" href="www.google.com" target="_blank">google</a></li>
    

  • 问题是您的代码试图使用
    href
    作为选择器来选择元素
    #home
    是一个有效的jQuery ID选择器,但
    www.google.com
    不是(顺便说一句,您可能需要
    https://www.google.com
    )。尝试筛选,以便只使用以
    #
    开头的代码

    function onScroll(event){
        var scrollPos = $(document).scrollTop();
        $('.navbar-default .navbar-nav>li>a').each(function () {
            var currLink = $(this);
            // Only apply to those tags that start with '#'.
            var href = currLink.attr("href");
            if (href.indexOf('#') === 0) {
                var refElement = $(href);
                if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
                    $('.navbar-default .navbar-nav>li>a').removeClass("active");
                    currLink.addClass("active");
                }
                else{
                    currLink.removeClass("active");
                }
            }
        });
    }
    
    函数onScroll(事件){
    var scrollPos=$(document.scrollTop();
    $('.navbar default.navbar nav>li>a')。每个(函数(){
    var currLink=$(此);
    //仅适用于以“#”开头的标记。
    var href=currLink.attr(“href”);
    如果(href.indexOf('#')==0){
    var refElement=$(href);
    if(refElement.position().top scrollPos){
    $('.navbar default.navbar nav>li>a').removeClass(“活动”);
    currLink.addClass(“活动”);
    }
    否则{
    currLink.removeClass(“活动”);
    }
    }
    });
    }
    
    问题是您的代码试图使用
    href
    作为选择器来选择元素
    #home
    是一个有效的jQuery ID选择器,但
    www.google.com
    不是(顺便说一句,您可能需要
    https://www.google.com
    )。尝试筛选,以便只使用以
    #
    开头的代码

    function onScroll(event){
        var scrollPos = $(document).scrollTop();
        $('.navbar-default .navbar-nav>li>a').each(function () {
            var currLink = $(this);
            // Only apply to those tags that start with '#'.
            var href = currLink.attr("href");
            if (href.indexOf('#') === 0) {
                var refElement = $(href);
                if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
                    $('.navbar-default .navbar-nav>li>a').removeClass("active");
                    currLink.addClass("active");
                }
                else{
                    currLink.removeClass("active");
                }
            }
        });
    }
    
    函数onScroll(事件){
    var scrollPos=$(document.scrollTop();
    $('.navbar default.navbar nav>li>a')。每个(函数(){
    var currLink=$(此);
    //仅适用于以“#”开头的标记。
    var href=currLink.attr(“href”);
    如果(href.indexOf('#')==0){
    var refElement=$(href);
    if(refElement.position().top scrollPos){
    $('.navbar default.navbar nav>li>a').removeClass(“活动”);
    currLink.addClass(“活动”);
    }
    否则{
    currLink.removeClass(“活动”);
    }
    }
    });
    }
    
    这肯定不能解决JavaScript问题。除非我能识别该域,否则我不会加载有问题的外部网站。就您而言,它可能会也可能不会解决javascript问题,这取决于解析的内容-外部库与浏览器。我也没有访问该链接,但
    Uncaught Error:Syntax Error,无法识别的表达式
    是一个jQuery异常,这意味着它被赋予了无效的选择器。非常确定这不会解决JavaScript问题。除非我识别域,否则我不会加载有问题的外部网站。就您而言,它可能会也可能不会解决javascript问题,这取决于解析的内容-外部库与浏览器。我也没有访问该链接,但
    Uncaught Error:Syntax Error,无法识别的表达式
    是一个jQuery异常,意味着它被赋予了无效的选择器。您的链接指向一个不包含任何代码的雪佛兰网站。这里没有足够的内容来重现问题,因此您将得到的所有答案都只是猜测。您的链接指向一个不包含任何代码的雪佛兰网站。这里没有足够的内容来重现这个问题,所以你会得到的所有答案都只是猜测。我基本上写了同样的东西,但这个答案更好,所以我删除了我的,并投了更高的票。谢谢大家。我将选择器更新为:$('.navbar default.navbar nav>li>a[id]')我基本上写了相同的东西,但这个答案更好,所以我删除了我的并进行了投票。谢谢大家。我将选择器更新为:$('.navbar default.navbar nav>li>a[id]')