zoukankan      html  css  js  c++  java
  • 【js】--常用DOM库工具

    /* 2014年3月16号 常用DOM工具库*/
    var DOM={};


    DOM.getElesByClass=function (strClassName,context){
    if(typeof strClassName){
    context=context||document;

    if(context.nodeType==1||context.nodeType==9){
    if(context.getElementsByClassName)
    return context.getElementsByClassName(strClassName);
    var reg=/^s+|s+$/g;
    strClassName=strClassName.replace(reg,"");
    var aClass=strClassName.split(/s+/);
    var eles=context.getElementsByTagName("*");
    for(var i=0;i<aClass.length;i++){
    eles=byClass(aClass[i],eles);
    }
    return eles;
    }else{
    throw new Error("第二个参数类型错误");
    }
    }else{
    throw new Error("第一个参数必需是一个字符串");
    }


    function byClass(strClassName,eles){
    var reg=new RegExp("(^| )"+strClassName+"( |$)");
    //var eles=document.getElementsByTagName("*");
    var a=[];//把找到的放到这个数组里
    for(var i=0,len=eles.length;i<len;i++){
    var ele=eles[i];
    if(reg.test(ele.className)){//5
    a.push(ele);
    }
    }
    return a;
    }
    }

    DOM.addClass=function(ele,strClassName){
    var reg=new RegExp("(?:^| )"+strClassName+"(?: |$)");
    if(!reg.test(ele.className))
    ele.className+=" "+strClassName;

    }
    DOM.removeClass=function(){
    var reg=new RegExp("(?:^| )"+strClassName+"(?: |$)","g");
    ele.className=ele.className.replace(reg,"");

    }

    DOM.getIndex=function(ele){
    var pre=ele.previousSibling;
    var n=0;
    while(pre){
    if(pre.nodeType===1){
    n++
    }
    pre=pre.previousSibling;
    }
    return n;

    }

    DOM.offset=function(ele){
    var l=ele.offsetLeft;
    var t=ele.offsetTop;

    var p=ele.offsetParent;
    while(p){
    if(window.navigator.userAgent.indexOf("MSIE 8")>-1){
    l+=p.offsetLeft;
    t+=p.offsetTop;
    }else{
    l+=p.offsetLeft+p.clientLeft;
    t+=p.offsetTop+p.clientTop;
    }
    p=p.offsetParent;
    }
    return {left:l,top:t}
    }

    DOM.getChildren=function(ele,tagName){//tagName用来指定标签名
    ele.children//获得子元素
    var nodes=ele.childNodes;
    var a=[];
    if(tagName===undefined){//如果没有传第二参数
    for(var i=0,len=nodes.length;i<len;i++){
    var node=nodes[i];
    if(node.nodeType===1){
    a.push(node);
    }
    }
    }else{
    if(typeof tagName=="string"){
    tagName=tagName.toUpperCase();
    for(var i=0,len=nodes.length;i<len;i++){
    var node=nodes[i];
    if(node.nodeName===tagName){
    a.push(node)
    }
    }
    }else{
    throw new Error("第二个参数类型错误");
    }

    }
    return a;
    }
    DOM.preSiblings=function(ele){
    var p=ele.previousSibling;
    var a=[];
    while(p){
    if(p.nodeType===1){
    a.push(p);
    }
    p=p.previousSibling;
    }
    a.reverse();
    return a;

    }
    DOM.nextSiblings=function(ele){
    var n=ele.nextSibling;
    var a=[];
    while(n){
    if(n.nodeType===1){
    a.push(n);
    }
    n=n.nextSibling;
    }
    return a;
    }

    DOM.siblings=function(ele){
    return DOM.preSiblings(ele).concat(DOM.nextSiblings(ele));
    }

  • 相关阅读:
    数据结构与算法
    c++学习笔记
    红黑树(map与unorder_map)B B+树
    数据库笔记
    多路复用IO:select poll epoll
    https加密过程!!! 这才是差不多非常详细的https双方获取共用的秘钥过程!!!!!
    助教周报(第一轮)——范青青
    第二十二周助教总结(2021.6.28-7.4)
    第二十一周助教总结(2021.6.21-6.27)
    第二十周助教总结(2021.6.14-6.20)
  • 原文地址:https://www.cnblogs.com/lanyueff/p/6419153.html
Copyright © 2011-2022 走看看