ife2015-task2-javascript-util.js

util.js/** * Created by Administrator on 2016/12/14. *///判断是否为数组function isArray(arr){    return (arr instanceof Array);}

//判断是否为函数function isFunction(fn){    return (typeof(fn));}

//深度克隆function cloneObject(src){    var result,        //判断src的类型        oClass=isClass(src);    if(oClass==="Object"){        result={};    }    else if(oClass==="Array"){        result= [];    }    else{        return src;    }    for(var key in src){        var copy=src[key];        if(isClass(copy)==="Object"){            //递归调用            result[key]=arguments.callee(copy);        }        else if(isClass(copy)==="Array"){            result[key]=arguments.callee(copy);        }        else{            result[key]=copy;        }    }    return result;}//返回cla的类 :object  或array 或 基本类型function isClass(cla){    if(cla===null){        return null;    }    else if(cla===undefined){        return undefined;    }    else{        return Object.prototype.toString.call(cla).slice(8,-1);    }}

//数组去重function uniqArray(arr){    //去重数组变量temp    var temp=[];    //每个数组值都与之前的数组值作比较,是否重复    for(var i=0,l=arr.length;i<l;i++){        var j=0;        while(arr[i]!=arr[j]){            if(j<i){                j++;            }        }        //不重复,将值push进 去重数组        if(j==i){            temp.push(arr[j]);        }    }    return temp;}

//去除字符串头尾的空格、tab、全角半角空格function trim(str){    var regex=/^\s*/;    var regex2=/\s*$/;    return str.replace(regex,‘‘).replace(regex2,‘‘);}

// 实现一个遍历数组的方法,针对数组中每一个元素执行fn函数,并将数组索引和元素作为参数传递function each(arr, fn) {    for(var i= 0,l=arr.length;i<l;i++){        fn(i,arr[i]);    }}function fn(idx,item){    item=idx+1;}

// 获取一个对象里面第一层元素的数量,返回一个整数function getObjectLength(obj) {    var j=0;    for(var i in obj){        j++;    }    return j;}

// 判断是否为邮箱地址function isEmail(emailStr) {    var re=/\[email protected]\w+.com/;    return re.test(emailStr);}

// 判断是否为手机号function isMobilePhone(phone) {    var re=/\d{11}/;    return (re.test(phone));}

//为element增加一个样式名为newClassName的新样式function addClass(element,newClassName){    var oldClassName=element.className;    element.className=oldClassName+‘ ‘+newClassName;}

//删除element一个样式名为oldClassName的旧样式function removeClass(element,oldClassName){    element.className=element.className.replace(oldClassName,‘‘);    return element;}// 判断siblingNode和element是否为同一个父元素下的同一级的元素,返回bool值function isSiblingNode(siblingNode,element){    return (siblingNode.parentNode===element.parentNode);}// 获取element相对于浏览器窗口的位置,返回一个对象{x, y}function getPosition(element) {    var top=element.offsetTop,        left=element.offsetLeft;    while(element.offsetParent){        element=element.offsetParent;        top+=element.offsetTop;        left+=element.offsetLeft;    }    return {‘x‘:left,‘y‘:top}}// 实现一个简单的Queryfunction $(selector) {    var char=selector.charAt(0),        element,        idx;    switch (char){        //通过id获取dom元素        case ‘#‘:            idx=selector.indexOf(‘.‘);            if(idx==(-1)){                var idName=selector.slice(1);                element=document.getElementById(idName);                return element;            }            //通过id和classname获得dom元素            else{                var className=selector.slice(idx+1) ;                idName=selector.slice(1,idx-1);//id和classname之间要用一个宫格隔开                element=document.getElementById(idName);                element=element.getElementsByTagName(‘*‘);                for(var i= 0,l=element.length;i<l;i++){                    className=element[i].className.split(‘ ‘);                    for(var m= 0,n=className.length;m<n;m++){                        if(className[m]==className){                            return element[i];                        }                    }                }            }            break;        //通过classname获得dom元素        case ‘.‘:            selector=selector.slice(1);            element=document.getElementsByTagName(‘*‘);            for(var i= 0,l=element.length;i<l;i++){                if(element[i].className) {                    className = element[i].className.split(‘ ‘);                    for (var m = 0, n = className.length; m < n; m++) {                        if (className[m] == className) {                            return element[i];                        }                    }                }            }            break;        //通过属性名和相对应的属性值获得dom元素        case ‘[‘:            var attName,                value;            idx=selector.indexOf(‘=‘);            element=document.getElementsByTagName(‘*‘);            if(idx==(-1)){                attName=selector.slice(1,-1);            }            else{                attName=selector.slice(1,idx);                value=selector.slice(idx+1,-1);            }            for(var i= 0,l=element.length;i<l;i++){                if(element[i].hasAttribute(attName)){                    if(idx!=(-1)){                        if(element[i].getAttribute(attName)==value){                            return element[i];                        }                        return false;                    }                    return element[i];                }            }            break;        //默认通过标签名获得dom元素        default :            return document.getElementsByTagName(selector);    }}// 使用事件冒泡Bubble给一个element绑定一个针对event事件的响应,响应函数为listenerfunction addEvent(element,event,listener){    if(addEventListener){        element.addEventListener(event,listener,false);    }    else if(attachEvent){        element.attachEvent(event,listener);    }    else{        element[‘on‘+event]=listener;    }}// 移除element对象对于event事件发生时执行listener的响应function removeEvent(element, event, listener) {    if(removeEventListener){        element.removeEventListener(event,listener,false);    }    else if(detachEvent){        element.detachEvent(event,listener);    }    else{        element[‘on‘+event]=null;    }}// 实现对click事件的绑定function addClickEvent(element, listener) {    addEvent(element,‘click‘,listener);}// 实现对于按Enter键时的事件绑定function addEnterEvent(element, listener) {    addEvent(element,‘keyup‘, function (e) {        e=e||window.event;        if(e.keyCode==13){            listener;        }    });}//用事件冒泡给一个element绑定一个针对eventName事件的响应,响应函数为listenerfunction delegateEvent(element, tag, eventName, listener) {    addEvent(element,eventName, function (e) {        e=e||window.event;        var target= e.srcElement?e.srcElement: e.target;        orginX= target.style.left;        orginY= target.style.top;        if(target.nodeName===tag.toUpperCase()){            listener(target,e,orginX,orginY);        }    });}// 使用事件捕获Capture给一个element绑定一个针对event事件的响应,响应函数为listener  为focus而生function addEventCaptureFocus(element,event,listener){    if(addEventListener){        element.addEventListener(event,listener,true);    }    else{        element.addEventListener(event+‘in‘,listener,false);    }}// 使用事件捕获Capture给一个element绑定一个针对event事件的响应,响应函数为listener  为blur而生function addEventCaptureBlur(element,event,listener){    if(addEventListener){        element.addEventListener(event,listener,true);    }    else{        element.addEventListener(event+‘out‘,listener,false);    }}//focus、blur、load、unload不支持事件冒泡//使用事件捕获Capture给一个element绑定一个针对eventName事件的响应,响应函数为listenerfunction delegateEvent2(element, tag, eventName, listener) {    addEventCaptureFocus(element,eventName,function (e) {        e=e||window.event;        var target= e.srcElement?e.srcElement: e.target;        if(target.nodeName===tag.toUpperCase()){            console.log(target.value);            listener();        }    });}//使用事件捕获Capture给一个element绑定一个针对eventName事件的响应,响应函数为listenerfunction delegateEvent3(element, tag, eventName, listener) {    addEventCaptureBlur(element,eventName,function (e) {        e=e||window.event;        var target= e.srcElement?e.srcElement: e.target;        if(target.nodeName===tag.toUpperCase()){            listener();        }    });}//将addEvent,removeEvent,addClickEvent,addEnterEvent变成$对象的一些方法$.on=addEvent;$.un=removeEvent;$.click=addClickEvent;$.enter=addEnterEvent;$.delegat=delegateEvent;// 判断是否为IE浏览器,返回-1或者版本号function isIE() {    return document.documentMode||false;}// 设置cookiefunction setCookie(cookieName, cookieValue, expiredays) {    var cookieText=encodeURIComponent(cookieName)+‘=‘+encodeURIComponent(cookieValue);    var exDate=new Date();    exDate.setDate(exDate.getDate()+expiredays);        cookieText+=‘;expires=‘+exDate.toUTCString();    document.cookie=cookieText;}// 获取cookie值function getCookie(cookieName) {    cookieName=encodeURIComponent(cookieName);    var start=document.cookie.indexOf(cookieName),        cookieValue=null;    if(start!=-1){        var end=document.cookie.indexOf(‘;‘);        if(end==-1){               end=document.cookie.length;        }        cookieValue=encodeURIComponent(document.cookie.substring(start+1+cookieName.length,end));    }    return cookieValue;}//封装一个Ajax方法function ajax(url, options) {    // your implementvar xhr=createXHR();    var type,        data,        successFn,        failFn;    if(typeof (options)==‘object‘){        type=options.type.toUpperCase();        data=options.data||null;        successFn=options.successFn||‘undefined‘;        failFn=options.onfail||‘undefined‘;    }    if(typeof (data)==‘object‘){        var str=‘‘;        for(var key in data){            str+=key+‘=‘+data[key]+‘&‘;        }        data=str.replace(/&$/,‘‘);        str=null;    }    xhr.onreadystatechange= function () {        if(xhr.readyState==4){            if(xhr.status>=200&&xhr.status<300||xhr.status==304){                successFn(xhr.responseText);            }            else{                if(failFn){                    failFn(xhr.status);                }                else{                    console.error(‘Unsuccessful:\t‘+xhr.status);                }            }        }    };    switch (type){        case ‘GET‘:            xhr.open(‘GET‘,url+‘?‘+data,true);            xhr.send();            break;        case ‘POST‘:            xhr.open(‘POST‘,url,true);            break;    }}function createXHR(){    var xhr;    if(window.XMLHttpRequest){        xhr=new XMLHttpRequest();    }    else{        xhr=new  ActiveXObject(‘Microsoft.XMLHTTP‘);    }    return xhr;}//ajax(‘test.php‘,{type:‘GET‘,successFn:function(){console.log("i am success");}});
时间: 2024-10-07 05:29:31

ife2015-task2-javascript-util.js的相关文章

javascript util.js

//根据Id获得页面元素 function $(para) {    return document.getElementById(para);} //创建一个新的元素function createElement(type, name) {    if (name) {        var element = null;        try {            element = document.createElement("<" + type + " na

使用util.js处理列表

(util.js文件的链接:http://pan.baidu.com/s/1kUMJNrL 密码:fiqs) 1.前言 此处所指的列表,不仅包括<select-/>元素产生列表框.下拉菜单,还包括<ul-/>和<ol-/>列表.操作这种列表当然可直接通过DOM操作来完成,但通过util.js函数将更加简单. 处理列表相关函数主要由dwr.util对象的removeAllOptions()和addOptions()两个函数写成.其中removeAllOptions()函数

使用util.js处理表格

(util.js文件的链接:http://pan.baidu.com/s/1kUMJNrL 密码:fiqs) 1.前言 dwr.util提供了两个函数帮助我们处理HTML表格操作,这两个函数是addRows()和removeAllRows().其中用于向表格添加行,而removeAllRows用于删除表格中的全部行.两个函数的语法格式如下: 1)        dwr.util.removeAllRows(tableId):该函数只有一个参数,该参数是一个HTML表格元素的id属性值. 2)  

百度地图V2.0实践项目开发工具类bmap.util.js V1.4

/** * 百度地图使用工具类-v2.0(大眾版) * * @author boonya * @date 2013-7-7 * @address Chengdu,Sichuan,China * @email [email protected] * @company KWT.Shenzhen.Inc.com * @notice 有些功能需要加入外部JS库才能使用,另外还需要申请地图JS key . * 申请地址:http://developer.baidu.com/map/apply-key.ht

【javascript】js 获取 url 后的参数值

以前写过一篇类似的博文(提取 url 的搜索字符串中的参数),但是个人觉得使用起来不是很方便,今天抽空重新写了个函数,该函数代码更加简洁. //获取 url 后的参数值 function getUrl(para){ var paraArr = location.search.substring(1).split('&'); var paraObj = {}; for(var i = 0;k = paraArr[i];i++){ paraObj[k.substring(0,k.indexOf('=

javascript实现js脚本的的异步加载

javascript实现js脚本的的异步加载,和图片的异步加载稍有不同,script的异步加载需要借助dom,因此有了局限性 <html> <head> <meta charset="utf-8" /> <title>Javascript</title> <meta http-equiv="X-UA-Compatible" content="IE=7"> </head&

JavaScript之JS实现动画效果

在前面的随笔中介绍了如何用DOM技术修改文档的央样式信息,用JavaScript添加样式信息可以节约我们的时间和精力,但总的来说,CSS仍是完成这类任务的最佳工具.但是有一个应用领域是目前的CSS无能为力的.如果我们想随着时间的变化而不断改变某个元素的样式,则只能用JavaScript.JavaScript能够按照预定的时间间隔重复的调用一个函数,而意味着我们可以随着时间的推移而不断改变某个元素的样式. 动画是样式随着时间变化的完美例子之一.简单的说,动画就是让元素的位置随着时间而不断的发生变化

【javascript】js 判断微信浏览器

上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此 apk.然后就发生了问题,经过测试,发现用微信扫一扫打开的页面点击下载按钮下载不了 apk,后百度之,原来是微信内置浏览器屏蔽了下载链接,后面和需求方沟通,需求改为如果用户是用微信内置浏览器打开的,则提示用户换一个浏览器打开页面,否则下载不了 apk.那么该如何判断用户是否是用微信浏览器呢? 我们知道 js 可以通过 window.navigator.

【JavaScript】JS跨域设置和取Cookie

cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值.本文主要JS怎样读取Cookie以及域的设置. AD: 在Javascript脚本里,一个cookie 实际就是一个字符串属性.当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值.每个cookie除了 name名称和value值这两个属性以外,还有四个属性.这些属性是:

初探JavaScript(四)——JS另类的作用域和声明提前

前言:最近恰逢毕业季,千千万万的学生党开始步入社会,告别象牙塔似的学校生活.往往在人生的各个拐点的时候,情感丰富,感触颇深,各种对过去的美好的总结,对未来的展望.与此同时,也让诸多的老“园”工看完这些小年轻的文章后感触良多,不禁也要写上几笔,所以就出来了很多类似“毕业两年小记”.“毕业五年有感”…… 可能就是某篇博文的一句话,某碗心灵鸡汤就拨动了你心里的那根尘封已久的弦,让你情不自禁的点了个赞,还忍不住的要在下面评论区留下自己此刻心潮澎湃的印记. 我今天不是来送鸡汤的,鸡汤虽好,可不要贪杯哦.