我具有一个函数,可以计算我的固定选项卡滚动的正确位置,但是我注意到当他们滚动到此位置时,它将URL更改为#[object%20HtmlParagraphelement]而不是#idname。
以下是我的功能,当用户单击我的固定导航上的一个选项卡
时,会触发触发。calculateScrollPosition (e) {
const nav = document.querySelector('#navbar')
if (!nav) return
let navHeight = nav.getBoundingClientRect().height
let section = document.querySelector(e.target.parentElement.dataset.link)
let sectionTop = section.getBoundingClientRect().top
const body = document.body
const docEl = document.documentElement
const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop
const clientTop = docEl.clientTop || body.clientTop || 0
const top = Math.round(sectionTop + scrollTop - clientTop)
let scrollHeight = top - navHeight
window.scroll(0, scrollHeight)
window.location.hash = e.target
e.preventDefault()
}
window.location.hash = e.target
您将目标元素分配给它而不是目标元素的ID。
window.location.hash = e.target.id
或目标元素的其他功能我们一无所知,因为您没有在示例代码中包含任何HTML。