【发布时间】:2021-05-26 03:50:45
【问题描述】:
我对前端开发中的 JavaScript 完全陌生,我有一个非常基本的问题,我似乎无法弄清楚...我正在制作一个表格导航栏,其中突出显示了活动元素。
我知道还有其他方法可以达到预期的效果,但我的脚本有什么问题?
function navTabsClick(child) {
getElementsByClassName("active")[0].classList.remove("active");
child.getElementsByTagName("li")[0].className = "active";
}
ul{
display: flex;
list-style-type: none;
}
a{
text-decoration: none;
}
a:link, a:visited{
color: black;
}
a:hover{
cursor: pointer;
}
li{
margin: 0;
padding: 10px 30px;
background-color: lightgray;
}
li:hover{
background-color: darkgray;
}
li.active{
background-color: red;
}
<nav>
<ul>
<a onclick="navTabsClick(this)">
<li class="active">1</li>
</a>
<a onclick="navTabsClick(this)">
<li>2</li>
</a>
<a onclick="navTabsClick(this)">
<li>3</li>
</a>
</ul>
</nav>
如果我删除我的 JavaScript 函数的第一行,我可以让其他选项卡突出显示,但我得到以下错误:
Uncaught ReferenceError: getElementsByClassName is not defined
我错过了什么?
另外,作为第二个问题,还有比这更好的处理导航栏 JavaScript 的方法吗?
【问题讨论】:
-
我是
document.getElementsByClassName -
试试
document.getElementsByClassName()。 -
试试
document.getElementByClassName -
作为新手,请接受这个建议,您将在网络上看到的大多数示例都不是由了解他们所使用的代码的人创建的。在很多很多情况下,他们复制了其他人似乎可以工作的代码。如果你遵循这种行为,你就会养成一些非常坏的习惯。一开始就不要使用这样的代码:
getElementsByClassName("active")[0] -
只需阅读我分享的链接即可。它说明
document.querySelector()是更好的解决方案。
标签: javascript html css