JavaScript更改滚动上的导航样式
我希望在滚动页面时突出显示活动部分 但我得到了一个错误:“uncaughtdomexception:未能对‘Document’执行‘querySelector’:提供的选择器为空。” 为什么??如何解决这个问题 js:JavaScript更改滚动上的导航样式,javascript,html,css,Javascript,Html,Css,我希望在滚动页面时突出显示活动部分 但我得到了一个错误:“uncaughtdomexception:未能对‘Document’执行‘querySelector’:提供的选择器为空。” 为什么??如何解决这个问题 js: 您给出的错误是由第一个链接引起的 href是#,因此链接.hash属性将是“” document.querySelector(“”)和document.querySelector(“#”)都会引发错误。 解决方案是在哈希值不为空时添加一个检查 if (link.hash != &
您给出的错误是由第一个链接引起的 href是
#
,因此链接.hash
属性将是“”
document.querySelector(“”)和document.querySelector(“#”)都会引发错误。
解决方案是在哈希值不为空时添加一个检查
if (link.hash != "" && link.hash != "#") {
注意主链接将始终保持活动状态,因为它没有相应的
元素
window.addEventListener('scroll',事件=>{
让navigationLinks=document.querySelectorAll('nav ul li a');
让fromTop=window.scrollY;
navigationLinks.forEach(链接=>{
if(link.hash!=“&&link.hash!=“#”){
let section=document.querySelector(link.hash);
如果(从顶部偏移部分
) {
link.classList.add('active');
}否则{
link.classList.remove('active');
}
}
})
});代码>
nav a.active{
颜色:深色;
边框底部:2倍实心暗金色;
}
/*用于演示目的*/
导航{
位置:固定;
排名:0;
}
#关于,,
#接触{
高度:100vh;
}
关于
接触
<nav>
<ul class="nav-links">
<li><a class="active" href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</nav>
<section>
<div id="about"></div>
<div id="contact"></div>
</section>
nav a.active{
color: darkcyan;
border-bottom: 2px solid darkgoldenrod;
}
if (link.hash != "" && link.hash != "#") {