常用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"; }}
阅读全文
0 0
- 常用js函数整理汇总
- js 常用函数汇总
- JS常用函数汇总
- JS 常用函数整理
- js常用函数整理
- js常用函数整理
- 常用js函数整理
- JS Date函数整理汇总
- 常用JS功能函数汇总
- 110个Oracle常用函数整理汇总
- 110个Oracle常用函数整理汇总
- 110个Oracle常用函数整理汇总
- 110个Oracle常用函数整理汇总
- R常用基本 函数汇总整理
- 一些常用的JS自定义函数整理
- (转)DHTML DOM 常用js函数整理
- DHTML DOM常用JS函数整理
- [cocos2d-js教程】cocos2d-js中一些常用函数整理
- C++ (error: passing ‘const …'’ as ‘this’ argument of ‘…’ discards qualifiers [duplicate])
- 好东西来了!2017云栖大会400+份重磅资料下载
- 记断电引发的ORA-00600错误
- CSS选择器与优先级详解
- 灰度处理与二值化的关系
- 常用js函数整理汇总
- Swift
- hjr理解-集群、分布式、负载均衡、微服务
- Apple Watch开发和数据传输(三)
- iPhoneX适配方案
- mybatis入门程序
- 详解EBS接口开发之库存事务处理采购接收--补充
- 【LIS】【模板】nlogn算法
- 33. Search in Rotated Sorted Array