zoukankan      html  css  js  c++  java
  • 原生JavaScript实现的addclass,removeclass,hasclass,toggleclass,getbyclass

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>addclass,removeclass,hasclass,toggleclass,getbyclass</title>
    </head>
    <body>
    <div class="div1" id="box1"></div>
    <input type="button" value="按钮" id="btn1"/>
    <script>
        function addClass(obj,cls) {//obj:要添加classname的元素,cls:要添加的classname;
            //如果原来没有class:
            if(obj.className == ''){
                obj.className = cls;
            } else {
                //本来已经有class,新增class的情况:
                var arrclassname = obj.className.split(' ');//
                var index = arrIndexOf(arrclassname,cls);
                if(index == -1) {
                    //如果要添加的class在原来的元素上不存在:
                    obj.className += ' ' + cls;
                }
            }
        }
    
        function arrIndexOf(arr,v){//检测数组中是否有相同的值存在,并且返回它的位置;
            for(var i=0;i<arr.length;i++){
                if(arr[i] == v){
                    return i;
                }
            }
            return -1;
        }
    
        function removeClass(obj,cls){
            //如果有class的话:
            if(obj.className != ''){
                var arrClassName = obj.className.split(' ');//对原有class进行拆分,看看是否包含需要移除的class,也就是传参cls的classname;
                var index = arrIndexOf(arrClassName,cls);
                //r如果有需要移除的class
                if(index != -1){
                    arrClassName.splice(index,1);
                    obj.className = arrClassName.join('');
                }
            }
        }
    
        function hasClass(obj,cls){
            var cls = cls || '';
            if( cls.replace(/s/g,'').length == 0){
                return false;//当cls没有参数时,返回false;
            }else{
                return new RegExp(' ' + cls + '').test(' ' + obj.className);
            }
        }
    
        function toggleClass(obj,cls){
            hasClass(obj,cls) ? removeClass(obj,cls) : addClass(obj,cls);
        }
    
        function getByClass(oParent, sClass) {
            if (oParent.getElementsByClassName) {
                return oParent.getElementsByClassName(sClass);
            } else {  //IE 8 7 6
                var arr = [];
                var reg = new RegExp('\b' + sClass + '\b');
                var aEle = oParent.getElementsByTagName('*');
                for (var i = 0; i < aEle.length; i++) {
                    if (reg.test(aEle[i].className)) {
                        arr.push(aEle[i]);
                    }
                }
                return arr;
            }
        }
    
        var oBtn1 = document.getElementById('btn1');
        var oBox1 = document.getElementById('box1');
        oBtn1.onclick = function () {
            if( hasClass(oBox1,'div1') ){
                alert('hasclass');
            };
    
            alert( getByClass(document,'div1').length );
        }
    
    </script>
    
    </body>
    </html>
  • 相关阅读:
    Linux pwn入门教程(1)——栈溢出基础
    Java代码审计入门篇
    利用Burp Suite攻击Web应用
    记一次对某企业的渗透测试实战
    Python 绝技 —— UDP 服务器与客户端
    SQL注入之重新认识
    文件上传和WAF的攻与防
    phpMyAdmin 4.7.x CSRF 漏洞利用
    Powershell渗透测试系列–进阶篇
    AFN检測网络情况
  • 原文地址:https://www.cnblogs.com/lixuekui/p/5766711.html
Copyright © 2011-2022 走看看