ShmyymhS 2021-10-09 16:21 采纳率: 100%
浏览 37
已结题

JavaScript中toggleclass执行两次

请问有大佬知道为什么toggleclass只执行两次吗。。
就是一开始注册下面没有下划线 通过toggleclass给注册添加类 然后有了下划线之后 再点击 下划线消失 后续操作就没用了

img

img

img

img

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2021-10-09 16:47
    关注

    代码还蛮多问题,hasClass没有返回值正则对象,addClass中设置样式少了空格,改了下题主的逻辑,用下面的代码测试可以了。
    而且题主视乎少了个功能,应该点击加样式的时候,同时移除兄弟节点的焦点样式。

    img

    有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~

    <style>
        .OC{font-weight:800;border-bottom:#0084ff solid;}
    </style>
    <span id="ZC">注册</span>
    <span id="DL">登录</span>
    
    <script>
        var ZC = document.getElementById('ZC')
        var DL = document.getElementById('DL')
        ZC.onclick = function () {
            toggleClass(ZC,'OC')
        }
        function hasClass(obj, cn) {
            var reg = new RegExp('\\b' + cn + '\\b');
            return reg.test(obj.className);
        }
        function addClass(obj, cn) {
            obj.className += ' ' + cn;//这里也少了个空格,toggleClass判断了这里就不需要再判断了
        }
        function removeClass(obj, cn) {
            var reg = new RegExp('\\b' + cn + '\\b');
            obj.className = obj.className.replace(reg, '');
        }
    
        function toggleClass(obj, cn) {
            if (hasClass(obj, cn)) {
                removeClass(obj, cn);
            }
            else addClass(obj, cn);
        }
    </script>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料