zl程序教程

您现在的位置是:首页 >  后端

当前栏目

dom工具库codingWeb.js,封装与总结

JS封装工具 总结 dom
2023-09-11 14:22:30 时间

对一些常用的dom操作的和js操作的封装:
如:ajax,jsonp,dom节点,。。。。。

工具库codingWeb.js地址

部分代码如下:

//设置,改, 删除
function setCookie(cname, cvalue, exdays) {
    var d = new Date();

    d.setTime(d.getTime() + exdays*24*60*60*1000 );

    var expires = "expires="+d.toUTCString();

    document.cookie = cname+"="+cvalue+";"+expires+";path=/";

}


function getCookie(cname) {
    //Hm_lvt_f801name=admin
    //passw77df4b25b2662225b26a02a32ab8=1577930187
    //userord=123456999

    var name = cname+"="; // username=
    var ca= document.cookie.split(';');
    var len = ca.length;
    for(var i=0; i<len; i++){
        //username=admin
        var c=ca[i].trim();

        if(c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }

    }

    return '';

}

//操作内容, 兼容的方法
function inText(obj, value) {
    //IE或非IE高版本
    if(document.all) {
        if(typeof(value)=="undefined") {
            return obj.innerText;
        }else{
            obj.innerText = value;
        }
    }else{
        if(typeof(value)=="undefined") {
            return obj.textContent;
        }else{
            obj.textContent = value;
        }
    }
}

//通过URL获取文件
//http://localhost:63342/01/img/on.png
function getUrlName(url){
    var l = url.lastIndexOf("/")+1;

    var filename = url.substring(l);

    return filename;
}

/*
*  添加类样式 addClass()
*  element 必须有的参数, 设置类样式的元素
*  value  类名, 元素添加的类名, 如果这个元素已经设置这个类了, 就不再设置, 如果没有设置过任何类, 就新加一个, 如果,
*
* */

function addClass(element, value) {
    if(!element.className){
        element.className= value;
    }else {
        if(element.className.indexOf(value)==-1) {
            var src = element.className;

            src += " ";
            src += value;

            element.className=src;
        }
    }
}

/*
    删除类样式 delClass(element, value)
    如果没有提供第二个参数,就删除所有的样式
    如果元素中只有一个类样式, 直接删除一个就可以了

    如果删除类中的一个成员

 */

function delClass(element, value) {
    // one == one
    if(typeof(value)=="undefined" || element.className==value) {
        element.className = '';
    }else {
        // className = "one two three";
        // classNames = [one, two, three]
        var classNames = element.className.split(' ');
        var str="";
        for(var i=0; i<classNames.length; i++) {

            if(classNames[i]!=value) {
                str+= classNames[i];
                str += " ";
            }
        }

        str = str.trim();

        element.className=str;

    }
}


//通过类名获取所有元素的方法
function gclass(className, tagName) {
    // var alltags = document.all;
    var alltags = document.getElementsByTagName(tagName || "*");
    var arr=new Array();

    for(let i=0; i<alltags.length; i++) {
        // one two
        var one = className.split(" ");
        var two = alltags[i].className.split(" ");

        if(isHasArray(one, two)) {
            arr[arr.length]  = alltags[i];
        }
    }

    //返回所有类元素集合
    return arr;
}

// 判断一个数组中的所有元素是否在另外的一个数组中存在
function isHasArray(one, two) {


    if(two.length < one.length)
    {
        return false;
    }
    var flag = 0;
    for(let i=0; i<one.length; i++) {
        for(let j=0; j<two.length; j++) {
            if(one[i]==two[j]){
                flag++;
                break;
            }
        }
    }

    return flag == one.length;

}

//获取子节点
function childs(element) {
    var nodes = element.childNodes;
    var arr=new Array();
    for(let i=0; i<nodes.length; i++) {
        if(nodes[i].nodeType==1)
        {
            arr[arr.length] = nodes[i];
        }
    }

    return arr;

}

// 获取第一个子节点
function cfrist(element) {
    var node = element.firstChild;

    while(node && node.nodeType!=1) {
        node = node.nextSibling;
    }

    return node;
}

// 获取最后一个子节点
function clast(element) {
    var node = element.lastChild;

    while(node && node.nodeType!=1) {
        node = node.previousSibling;
    }

    return node;
}

// 获取下一个兄弟节点
function cnext(element) {
    var node = element.nextSibling;

    while(node && node.nodeType!=1) {
        node = node.nextSibling;
    }

    return node;
}

// 获取上一个兄弟节点
function cprev(element) {
    var node = element.previousSibling;

    while(node && node.nodeType!=1) {
        node = node.previousSibling;
    }

    return node;
}

//获取当前节点后面所有的元素
function nextAll(element, tagName) {
    var r = [];
    for(var n = element.nextSibling; n;  n=n.nextSibling) {
        if(n.nodeType ==1) {
            if(typeof(tagName)!="undefined") {
               if(tagName.toUpperCase()==n.nodeName) {
                   r.push(n);
               }
            }else{
                r.push(n);
            }

        }
    }
    return r;
}

//获取当前节点前面所有的元素
function prevAll(element, tagName) {
    var r = [];
    for(var n = element.previousSibling; n;  n=n.previousSibling) {
        if(n.nodeType ==1) {
            if(typeof(tagName)!="undefined") {
                if(tagName.toUpperCase()==n.nodeName) {
                    r.push(n);
                }
            }else{
                r.push(n);
            }

        }
    }
    return r;
}

//获取所有同胞节点
function siblings(element, tagName) {
    return prevAll(element, tagName).concat(nextAll(element, tagName));
}

// 获取定位元素到页面顶点的left
function offsetLeftAll(obj) {
    var left = obj.offsetLeft;

    var po = obj.offsetParent;

    while(po != null) {
        left += po.offsetLeft;
        po = po.offsetParent;

    }


    return left;

}

// 获取定位元素到页面顶点的Top(不管定位元素的父元素是谁)
function offsetTopAll(obj) {
    var top = obj.offsetTop;

    var po = obj.offsetParent;

    while(po != null) {
        top += po.offsetTop;
        po = po.offsetParent;

    }


    return top;
}