js 常用函数
2015-10-31 18:49
711 查看
/* *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(); }
相关文章推荐
- Dynamics CRM 2011 JScript
- javascript常用数组算法总结
- JavaScript脚本引擎Rhino
- [LeetCode][JavaScript]Serialize and Deserialize Binary Tree
- 200多个js技巧代码
- 真正的中国天气api接口xml,json(求加精) ...
- JavaScript之模块化编程
- 关于IE浏览器加载外部js注意事项
- [LeetCode][JavaScript]Bulls and Cows
- jsp页面跳转
- 用getAttribute获取控制层获取的数据,显示在jsp页面
- JSON解析与序列化
- JS 乱记
- ExtJS Grid 分页时保持选中的简单实现方法
- javascript制作一个用户登录表单提交检验网页(第一天)
- javascript动态添加div
- JavaScript学习笔记一
- jsp和servlet中实现页面跳转的方式实例总结
- 你不知道的JavaScript--Item25 创建对象(类)的8种方法总结
- 你不知道的JavaScript--Item25 创建对象(类)的8种方法总结