常用js函数整理汇总

来源:互联网 发布:酒店美工工作职责 编辑:程序博客网 时间:2024/06/05 18:01

前端部门工作经常用到的一些方法,部分摘自网上分享,并进行了优化

/** * 前端开发部常用函数整理汇总,前端人员定期完善 * @authors  * @date    2017-11-23 * @version 1.0 */var GLOBAL = {};//全局对象,存放所有全局变量、方法    GLOBAL.str = {};//存放全局变量    GLOBAL.fun = {};//存放全局方法    GLOBAL.obj = {};//存放全局对象/** * 获取、设置url中参数值 * * @param    {String}  sVar     url中参数 * * @date     2017-11-23 * @author *///获取对应参数//Details.html?bargainingid=318//getUrlPrmt('bargainingid')//318GLOBAL.fun.getUrlPrmt = function (sVar) {    return decodeURI(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURI(sVar).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));}//设置url参数//setUrlPrmt({'a':1,'b':2})//a=1&b=2GLOBAL.fun.setUrlPrmt = function (obj) {    let _rs = [];    for (let p in obj) {        if (obj[p] != null && obj[p] != '') {            _rs.push(p + '=' + obj[p])        }    }    return _rs.join('&');}/** * 获取页面可视高度、宽度 * @date     2017-11-23 * @author */GLOBAL.fun.getPageViewHeight = function () {    var d = document, a = d.compatMode == "BackCompat"        ? d.body        : d.documentElement;    return a.clientHeight;}GLOBAL.fun.getPageViewWidth = function () {    var d = document, a = d.compatMode == "BackCompat"        ? d.body        : d.documentElement;    return a.clientWidth;}/** * 字符串长度截取,超出部分用“...” * * @param    {String}  str     需要截取的字符串 * @param    {Number}  len     需要截取的长度 * * @date     2017-11-23 * @author *///cutStr('我是示例','4')//我是...GLOBAL.fun.cutStr = function (str, len) {    if(str.length*2<=len){        return str    }else {        var temp,            icount = 0,            patrn = /[^\x00-\xff]/,            strre = "";        for (var i = 0; i < str.length; i++) {            if (icount < len - 1) {                temp = str.substr(i, 1);                if (patrn.exec(temp) == null) {                    icount = icount + 1                } else {                    icount = icount + 2                }                strre += temp            }            else {                break;            }        }        return strre + "..."    }}/** * ajax获取接口字典中的数据,并替换成mui picker对应格式[{"text":"","value":""},{"text":"","value":""}] * * @param    {String}  interface     字典接口 * * @date     2017-11-23 * @author */GLOBAL.fun.ajaxDictionary = function (interface) {    var picker = [];    $(document).ready(function(){        $.ajax({            url: ajaxUrl + 'Home/'+interface,            type: 'POST',            dataType: 'json',            success:function (data) {                // console.log(data);                for (var i=0; i<data.data.length; i++){                    var picker_o = {};                    picker_o.text = data.data[i].name;                    picker_o.value = data.data[i].id;                    picker[i] = picker_o;                }            }        })    });    return(picker);}/** * localStorage存储、获取,默认存储24小时 * * @param    {String}  key     关键字 * @param    {String}  value   值 * * @date     2017-11-23 * @author */GLOBAL.fun.setlocalStorage = function (key,value){    var curTime = new Date().getTime();    localStorage.setItem(key,JSON.stringify({data:value,time:curTime}));}GLOBAL.fun.getlocalStorage = function (key) {    var exp = 1000*60*60*24;    var data = localStorage.getItem(key);    if(data){        var dataObj = JSON.parse(data);        if (new Date().getTime() - dataObj.time>exp) {            localStorage.clear();//信息已过期清楚缓存        }else{            return dataObj;        }    }}/** * cookies存储、获取、删除 * * @param    {String}  name    关键字 * @param    {String}  value   值 * @param    {String}  value   时间(单位天) * * @date     2017-11-23 * @author *///写cookies方法GLOBAL.fun.setCookie = function (name,value,iDay) {    var oDate=new Date();    oDate.setDate(oDate.getDate()+iDay);    document.cookie=name+'='+value+';expires='+oDate;}//读cookies方法GLOBAL.fun.getCookie = function (name) {    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");    if(arr=document.cookie.match(reg))        return unescape(arr[2]);    else        return null;}//删除cookies方法GLOBAL.fun.delCookie = function (name) {    var exp = new Date();    exp.setTime(exp.getTime() - 1);    var cval = GLOBAL.fun.getCookie(name);    if(cval!=null)        document.cookie= name + "="+cval+";expires="+exp.toGMTString();}/** * 去除字符串空格 * * @param    {String}  str    字符串 * @param    {Number}  type   数字  1-所有空格  2-前后空格  3-前空格 4-后空格 * * @date     2017-11-23 * @author */GLOBAL.fun.trim = function (str,type) {    switch (type){        case 1:return str.replace(/\s+/g,"");        case 2:return str.replace(/(^\s*)|(\s*$)/g, "");        case 3:return str.replace(/(^\s*)/g, "");        case 4:return str.replace(/(\s*$)/g, "");        default:return str;    }}/** * 随机返回一个范围的数字 * * @param    {Number}  n1,n2    数字 * * @date     2017-11-23 * @author */GLOBAL.fun.randomNumber = function (n1,n2) {    //randomNumber(5,10)    //返回5-10的随机整数,包括5,10    if(arguments.length===2){        return Math.round(n1+Math.random()*(n2-n1));    }    //randomNumber(10)    //返回0-10的随机整数,包括0,10    else if(arguments.length===1){        return Math.round(Math.random()*n1)    }    //randomNumber()    //返回0-255的随机整数,包括0,255    else{        return Math.round(Math.random()*255)    }}/** * 随机产生颜色 * * @date     2017-11-23 * @author */GLOBAL.fun.randomColor = function () {    //randomNumber是上面定义的函数    //写法1    // return 'rgb(' + randomNumber(255) + ',' + randomNumber(255) + ',' + randomNumber(255) + ')';    //写法2    return '#'+Math.random().toString(16).substring(2).substr(0,6);    //写法3    // var color='#';    // for(var i=0;i<6;i++){    //     color+='0123456789abcdef'[randomNumber(15)];    // }    // return color;}/** * 适配rem,效果图以720px为基数 * * @date     2017-11-23 * @author */GLOBAL.fun.getFontSize = function () {    var doc=document,win=window;    var docEl = doc.documentElement,        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',        recalc = function () {            var clientWidth = docEl.clientWidth;            if (!clientWidth) return;            //如果屏幕大于720,设置clientWidth=720,防止font-size会超过100px            if(clientWidth>720){clientWidth=720}            //设置根元素font-size大小            docEl.style.fontSize = 100 * (clientWidth / 720) + 'px';        };    //屏幕大小改变,或者横竖屏切换时,触发函数    win.addEventListener(resizeEvt, recalc, false);    //文档加载完成时,触发函数    doc.addEventListener('DOMContentLoaded', recalc, false);}GLOBAL.fun.getFontSize();/** * 字母大小写切换 * * @param    {Number}  type    数字 1:首字母大写、2:首页母小写、3:大小写转换、4:全部大写、5:全部小写 * * @date     2017-11-23 * @author *///changeCase('asdasd',1)//AsdasdGLOBAL.fun.changeCase = function (str,type) {    function ToggleCase(str) {        var itemText = ""        str.split("").forEach(            function (item) {                if (/^([a-z]+)/.test(item)) {                    itemText += item.toUpperCase();                }                else if (/^([A-Z]+)/.test(item)) {                    itemText += item.toLowerCase();                }                else{                    itemText += item;                }            });        return itemText;    }    switch (type) {        case 1:            return str.replace(/^(\w)(\w+)/, function (v, v1, v2) {                return v1.toUpperCase() + v2.toLowerCase();            });        case 2:            return str.replace(/^(\w)(\w+)/, function (v, v1, v2) {                return v1.toLowerCase() + v2.toUpperCase();            });        case 3:            return ToggleCase(str);        case 4:            return str.toUpperCase();        case 5:            return str.toLowerCase();        default:            return str;    }}/** * 字符串替换 * * @param    {String}  str         字符串 * @param    {String}  AFindText   要替换的字符 * @param    {String}  ARepText    替换成什么 * @date     2017-11-23 * @author */GLOBAL.fun.replaceAll = function (str,AFindText,ARepText) {    raRegExp = new RegExp(AFindText,"g");    return str.replace(raRegExp,ARepText);}/** * 字符串正则验证 * * @param    {String}  str * @param    {String}  type * @date     2017-11-23 * @author *///checkType('165226226326','phone')//falseGLOBAL.fun.checkType = function (str, type) {    switch (type) {        case 'email':            return /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(str);        case 'phone':            return /^1[3|4|5|7|8][0-9]{9}$/.test(str);        case 'tel':            return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);        case 'number':            return /^[0-9]$/.test(str);        case 'english':            return /^[a-zA-Z]+$/.test(str);        case 'chinese':            return /^[\u4E00-\u9FA5]+$/.test(str);        case 'idCard'://身份证号正则            return /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(str);        case 'url'://网址正则            return /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/.test(str);        case 'qq'://qq号正则 5至11位            return /^[1-9][0-9]{4,10}$/.test(str);        case 'wx'://微信号正则,6至20位,以字母开头,字母,数字,减号,下划线            return /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/.test(str);        case 'carNumber'://车牌号正则            return /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/.test(str);        default :            return true;    }}/** * 返回顶部 * * @param    {String}  btnId 控件id * * @date     2017-11-23 * @author */GLOBAL.fun.backTop = function (btnId) {    var btn = document.getElementById(btnId);    var d = document.documentElement;    var b = document.body;    window.onscroll = set;    btn.style.display = "none";    btn.onclick = function() {        btn.style.display = "none";        window.onscroll = null;        this.timer = setInterval(function() {            d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);            b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);            if ((d.scrollTop + b.scrollTop) == 0) clearInterval(btn.timer, window.onscroll = set);        }, 10);    };    function set() {        btn.style.display = (d.scrollTop + b.scrollTop > 100) ? 'block': "none"    }}/** * 清除对象中值为空的属性 * * @param    {Object}  obj * * @date     2017-11-23 * @author */GLOBAL.fun.filterParams = function (obj) {    let _newPar = {};    for (let key in obj) {        if ((obj[key] === 0 || obj[key]) && obj[key].toString().replace(/(^\s*)|(\s*$)/g, '') !== '') {            _newPar[key] = obj[key];        }    }    return _newPar;}/** * 数组操作,去重、排序、交集、差集、并集、对象数组排序 * * @param    {Array}  arr * * @date     2017-11-23 * @author */var arr1=[1,2,2,3,4,4,3,45,6,7,5];var arr2=[3,4,5,6,56];var arr3=[]//1、去重GLOBAL.fun.arrayUnique = function (arr) {    var result = [];    for(var i = 0;i<arr.length;i++){        var temp = arr.slice(i+1,arr.length)        if(temp.indexOf(arr[i]) == -1){            result.push(arr[i]);        }else{            continue;        }    }    return result;}// console.log(GLOBAL.fun.arrayUnique(arr1))//2、排序//desc不存在默认升序//desc存在降序GLOBAL.fun.arraySortByNum = function (arr,desc) {    if(desc){        return arr.sort(function(x,y){return y-x})    }else{        return arr.sort(function(x,y){return x-y})    }}// console.log(GLOBAL.fun.arraySortByNum(arr1));//3、交集GLOBAL.fun.arrayIntersection = function (arr1,arr2) {    var result = [];    GLOBAL.fun.arrayUnique(arr1).forEach(function(x){        arr2.forEach(function(y){            if(x===y)result.push(x);        })    })    return result;}// console.log(GLOBAL.fun.arrayIntersection(arr1,arr2))//4、差集 arr1-arr2GLOBAL.fun.arrayMinus = function (arr1, arr2) {    var result = [];    arr1.forEach(function (x) {        if (arr2.indexOf(x) === -1){            result.push(x);        }else {            return;        }    })    return result;}// console.log(GLOBAL.fun.arrayMinus(arr1,arr2))//5、并集,参数可以多个GLOBAL.fun.arrayUnion = function () {    console.log(arguments)    var arr = [];    for (var i=0;i<arguments.length;i++){        arr = arr.concat(arguments[i])    }    return GLOBAL.fun.arrayUnique(arr);}// console.log(GLOBAL.fun.arrayUnion(arr1,arr2));//6、对象数组快速排序//key 排序依据关键字//desc不存在默认升序//desc存在降序GLOBAL.fun.arrayObjSort = function (arr,key,desc) {    key=key||'id';    desc=desc|| null;    if (arr.length == 0) return [];    var left = new Array();    var right = new Array();    var pivot = arr[0][key];//分割值    var pivotObj = arr[0];//存储值    if(desc===null){//升序        for (var i = 1; i < arr.length; i++) {            arr[i][key] < pivot ? left.push(arr[i]): right.push(arr[i]);        }    }else{//降序        for (var i = 1; i < arr.length; i++) {            arr[i][key] > pivot ? left.push(arr[i]): right.push(arr[i]);        }    }    return GLOBAL.fun.arrayObjSort(left,key,desc).concat(pivotObj, GLOBAL.fun.arrayObjSort(right,key,desc));}/** * tab切换 * * @param    {name}  String  tab容器标识,用来明确当前tab * @param    {currentId}  Number  当前tab id * @param    {total}  Number  tab总数 * * @date     2017-11-23 * @author *///操作容器// <li id="pro1" onclick="setTab('pro',1,3)" class="hover">装货信息</li>// <li id="pro2" onclick="setTab('pro',2,3)">卸货信息</li>// <li id="pro3" onclick="setTab('pro',3,3)">承运方信息</li>//显示容器// <div id="con_pro_1" class="tabList"  style="display: block">// <div id="con_pro_2" class="tabList"  style="display: none">// <div id="con_pro_3" class="tabList"  style="display: none">GLOBAL.fun.tabSet = function (name, currentId, total) {    for(var i = 1; i <= total; i++) {        // 声明        var menu = document.getElementById(name + i);        var con = document.getElementById("con_" + name + "_" + i);        var id = $(".hover").attr("id");        // 操作        menu.className = i == currentId ? "hover" : "";        con.style.display = i == currentId ? "block" : "none";    }}
原创粉丝点击