Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript更改滚动上的导航样式_Javascript_Html_Css - Fatal编程技术网

JavaScript更改滚动上的导航样式

JavaScript更改滚动上的导航样式,javascript,html,css,Javascript,Html,Css,我希望在滚动页面时突出显示活动部分 但我得到了一个错误:“uncaughtdomexception:未能对‘Document’执行‘querySelector’:提供的选择器为空。” 为什么??如何解决这个问题 js: 您给出的错误是由第一个链接引起的 href是#,因此链接.hash属性将是“” document.querySelector(“”)和document.querySelector(“#”)都会引发错误。 解决方案是在哈希值不为空时添加一个检查 if (link.hash != &

我希望在滚动页面时突出显示活动部分

但我得到了一个错误:“uncaughtdomexception:未能对‘Document’执行‘querySelector’:提供的选择器为空。”

为什么??如何解决这个问题

js:


您给出的错误是由第一个链接引起的

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 != "#") {