Satrol_ 2022-11-09 14:49 采纳率: 100%
浏览 23
已结题

js实现导航栏不知道哪里出错?

一点击出现单块闪一下粉色的情况


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .nav {
            background-color: aqua;
            width: 400px;
            height: 60px;
            display: flex;
            line-height: 60px;
            text-align: center;
            margin: 100px auto 0;
        }
        .nav a {
            flex: 1;
            text-decoration: none;
        }
        .current {
            background-color: pink;
        }
        .nav_con {
            width: 400px;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    <div class="nav">
        <a href="" class="current">123</a>
        <a href="">123</a>
        <a href="">123</a>
        <a href="">123</a>
    </div>
    <div class="nav_con">
        <div>123</div>
        <div>123</div>
        <div>123</div>
        <div>123</div>
    </div>
    <script>
        var nav = document.querySelector('.nav');
        var a = nav.querySelectorAll('a');
        for (var i = 0;i<a.length;i++) {
            a[i].onclick = function(){
                for (var i = 0;i<a.length;i++) {
                   this.className = '';
                }
                this.className = 'current';
            }
        }
    </script>
</body>
</html>
  • 写回答

2条回答 默认 最新

  • 汤卓杰 2022-11-09 15:06
    关注
    • 闪烁的原因是:你有href属性,相当于重进页面。要么去掉。<a>123</a>,这样就失去样式了,即鼠标悬浮到a标签上,没有手指样式,需要手动设置css。你也可以写成<a href="javascript:void(0)">123</a>
    • 你删除类名错了,this是指的你所点击的a标签,效果就是,点击谁,它类名设为""多次,然后获取选中的类名。把this.className=""改为a[i].className=""
    • 这种是把全部类名去掉,如果有其他类名也没了。你这里没区别。
    • 才发现你两次循环都是用的变量i,建议分别用俩名字。你这里没报错没bug,完全是运气好。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 修改了问题 11月9日
  • 创建了问题 11月9日

悬赏问题

  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥15 this signal is connected to multiple drivers怎么解决
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus