首页 > 解决方案 > 导航时 HTML 网站 url 包含 /#[object Object]

问题描述

我有一个网站,它包含以下代码:

<li class="scroll-to-section"><a href="#services">Services</a></li>

和适当的部分:

<section class="section" id="services">
    ...
</section>

当我按下元素时,页面会按预期li滚动到该部分,但是,url 附加了而不是.services/#[object Object]/services

这是一张图片: 在此处输入图像描述

关于问题可能是什么的任何想法?

编辑:对不起,忘记添加 javascript:问题是new_target变量。我不得不把它改成以前的样子,new_target这样就target解决了这个问题!

$(document).ready(function() {
    $(document).on("scroll", onScroll);

    //smoothscroll
    $('a[href^="#"]').on("click", function(e) {
      e.preventDefault();
      $(document).off("scroll");

      $("a").each(function() {
        $(this).removeClass("active");
      });
      $(this).addClass("active");

      var target = this.hash,
        menu = target;
        
      var new_target = $(this.hash);
      $("html, body")
        .stop()
        .animate(
          {
            scrollTop: new_target.offset().top - 79
          },
          500,
          "swing",
          function() {
            window.location.hash = target;
            $(document).on("scroll", onScroll);
          }
        );
    });
  });

标签: html

解决方案


这个问题不允许我们详细检查这个问题,但这里- 一目了然 - 发生了什么:

您正在尝试将对象分配给只有字符串有效的地方。

看看下面的例子:

function changeText() {
  document.getElementById("input").value = "hello"
}

function changeTextWrong() {
  document.getElementById("input").value = {link: "hello"}
}
<input id="input" value="sample text"/>
<button onclick="changeText()">change text (OK)</button>
<button onclick="changeTextWrong()">change text (WRONG)</button>

当输入文本(相当于 url 栏)接收到文本“hello”时,它会起作用,因为“hello”是文本。然而,当输入文本接收到一个对象时,这个对象就会被转换成一个字符串。任何转换成字符串的对象都等价于“[object Object]”。

解决方案?而不是做window.location.hash = object你很可能需要做一些事情window.location.hash = object.hash,或者window.location.hash = object.WhAtEvEr取决于对象的实际内容。


推荐阅读