html - 导航时 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);
}
);
});
});
解决方案
这个问题不允许我们详细检查这个问题,但这里- 一目了然 - 发生了什么:
您正在尝试将对象分配给只有字符串有效的地方。
看看下面的例子:
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
取决于对象的实际内容。
推荐阅读
- laravel - 如何在 yajra 数据表中设置编辑路径
- javascript - 按 ID 将博文插入集合
- go - 不能在赋值中使用 (type string) 作为类型 func()
- jquery - 猫头鹰轮播“is-transitioned”类仅在初始化后从第二个图像添加,但在第一个图像的循环后工作
- kubernetes - 使用“kubectl”创建资源(cronjob)样板
- javascript - 如何在 googlemaps 上有多个具有不同信息窗口的标记
- javascript - 如何仅将加载添加到 vuejs 中的单击按钮?
- python - 当 gc 处理引用循环时,python 如何停止世界?
- vb.net - 使用内存流读取 Byte()-Array 中的图像时出现 6 个奇怪的零值
- node.js - 如何与 Node.js 中的本地模块共享依赖项?