js 常用函数

/*
*Author:赵少邦
*Date:2014-5-22
*/

//-----------------------深度克隆对象--------------------------
function cloneObject(obj){
    var cloneObj;
    cloneObj=(obj instanceof Array) ? []:{}; //判断对象类型,新建克隆对象
    for(var i in obj){
        if(obj.hasOwnProperty(i)){
            cloneObj[i]=(obj instanceof Array) ? cloneObject(obj[i]):obj[i];
        }
    }
    return cloneObj;
}


//------------------------ 数组去重----------------------------
function uniqArray(ary)
{
    var obj={};
    var result=[];
    for (var i = 0; i < ary.length; i++) {
        if (ary[i] && !obj[ary[i]]) {
            obj[ary[i]]=1;
            result.push(ary[i]);
        };
    };
    return result;
}

//-----------------------trim函数,去除字符串空格-----------------------
function trim(str){
    for (var i = 0; i < str.length; i++) {
        if(str.charAt(i)!=" " && str.charAt(i)!="   "){
            break;
        }
    };
    var str1=str.substring(i,str.length);

    for (var j = str1.length-1; j >=0; j--) {
        if(str1.charAt(j)!=" " && str1.charAt(j)!="   "){
            break;
        }
    };
    var str2=str1.substring(0,j+1);
    return str2;
} 

//------------------------遍历数组---------------------------
function each(ary,fn){
    for (var i = 0; i < ary.length; i++) {
        fn(ary[i],i);
    };
}

//-----------------获取对象元素长度----------------
function getObjectLength(obj){
    var num=0;
    for(var i in obj){
        num++;
    }
    return num;
}

 //---------------------------------为element添加样式newClassName-----------------------------
function addClass(element,newClassName){
    var oldClass=element.className.split(" ");
    for (var i = 0; i < oldClass.length; i++) {
        if(oldClass[i]==newClassName)
            return;
    };
    oldClass.push(newClassName);
    oldClass.join(" ");
}

 //--------------------为element移除样式oldClassName--------------------------------
function removeClass(element,oldClassName){
    var newClassNames=[];
    var classNames=element.className.split(" ");
    for (var i = 0; i < classNames.length; i++) {
        if(classNames[i]==oldClassName){
            continue;
        }
        newClassNames.push(classNames[i]);
    };
    element.className=newClassNames.join(" ");
}

//--------------判断siblingNode和element是否为同一个父元素下的同一级的元素--------------------------
function isSiblingNode(element,siblingNode){
    if(element.parentNode===siblingNode.parentNode)
        return true;
    else
        return false;
}

// -----------------获取element相对于浏览器窗口的位置,返回一个对象{x, y}-----------------------
function getPosition(element) {
    var obj=element.getBoundingClientRect();
    var x=obj.left;
    var y=obj.top;
    return {"x":x,"y":y};
}

//----------------------获取相邻的下一个兄弟节点的兼容写法---------------------
function nextSibling(curvObj) {  

      /** 
       * 1 元素节点  
       * 2属性 
       * 3文本 
       * 8注释 
       * 9document 
       */   
    var currentNode = curvObj.nextSibling;  

    if ( currentNode.nodeType == 1 ) {  
      return currentNode;  
    }  

    return nextSibling(currentNode);  
}  

//--------------------------- 给一个element绑定一个针对event事件的响应,响应函数为listener----------------------------------------
function addEvent(element,event,listener){
    if (window.addEventListener) {
        element.addEventListener(event,listener,false);
    }
    else{
        element.attachEvent("on"+event,listener);
    }
}

// 删除事件侦听
function removeEvent(element,event,listener){
    if (window.addEventListener) {
        element.removeEventListener(event,listener);
    }
    else{
        element.detachEvent("on"+event,listener);
    }
}

// 实现对click事件的绑定
function addClickEvent(element, listener) {
    if (window.addEventListener) {
        element.addEventListener('click',listener,false);
    }
    else{
        element.attachEvent('onclick',listener);
    }
}

// 实现对于按Enter键时的事件绑定
function addEnterEvent(element, listener) {
     if (window.addEventListener) {
        element.addEventListener('keydown',keyFun,false);

    }
    else{
        element.attachEvent('onkeydown',keyFun);
    }
    function keyFun(e){
        var e=e || window.event;
        if(e.keyCode==13){
            listener();
        }
    }
}

//  事件代理
function delegateEvent(element, tag, eventName, listener) {
    addEvent(element,eventName,delegateFun);
    function delegateFun(e){
        var e=e || window.event;
        var target=e.target || e.srcElement;
        if(target.nodeName.toLowerCase()==tag){
            listener.apply(target,arguments);
        }
    }

}

// 实现一个简单的Query
function $(selector) {
   return document.querySelector(selector);
}



// 设置cookie
function setCookie(cookieName, cookieValue, expiredays) {
    var date=new Date();
    date.setDate(date.getDate()+expiredays);
    document.cookie=cookieName+'='+cookieValue+'; expries='+((expiredays==null) ? "":date.toGMTString())+'; path=/';
}

// 获取cookie值
function getCookie(cookieName) {
    var cookies=document.cookie.split(';');
    for (var i = 0; i < cookies.length; i++) {
        var userData=cookies[i].split('=');
        if (userData[0]==cookieName) {
            return userData[1];
        };
    };
    return '';
}

// ajax封装函数
function ajax(url,options,type){
    var oAjax=null;
    var type=type || "GET";
    //alert(type);
    if(window.XMLHttpRequest){
        oAjax=new XMLHttpRequest();

    }
    else{
        oAjax=new ActiveXObject('Microsoft.XMLHTTP');
    }

    oAjax.onreadystatechange=function(){
        if (oAjax.readyState==4) {
            if (oAjax.status==200) {
                options.onsuccess(oAjax.responseText);
            } 
            else{
                options.onfail();
            };
        };
    }

    url=url+"?name="+options.data.name+"&password="+options.data.password+"&t="+Math.random();
    oAjax.open(type,url,true);
    oAjax.send();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值