/*
*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();
}
js 常用函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.