您的位置:首页 > Web前端 > JavaScript

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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: