欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前端小工具合集 - 3 辅助工具

程序员文章站 2022-06-24 17:06:55
...
/**
 * 辅助对象
 */
var auxiliary = function(){}

auxiliary.prototype = {
		nullBool : function(param){  // 对象为空判断 为空返回true,反之false
			if(null === param || undefined === param )return true;
			return false;
		} , strBool : function(param){  // string判断 为空返回true,反之false
			if( this.nullBool(param) || "" === param || param.length === 0 )return true;
			return false;
		} , arrBool : function(param){  // arraty判断 length不为零 为空返回true,反之false
			if(null === param || undefined === param || param.length === 0)return true;
			return false;
		} , mapBool : function(param){  // 判断map是否为空 为空返回true,反之false
		    for (var t in param)  
		        return !1;  
		    return !0  
		} , jsonBool : function(param) {  // 判断json是否可用,true为不可用,false反之
			if( this.nullBool(param) 
					|| this.getMapSize(param) === 0  )return true;
			return false;
		} , initError : function(param){  // 初始化异常: 为空返回true,反之false
			if(null === param || undefined === param){
				alert("初始化页面异常,请刷新页面重新尝试!");
				return true;
			}
			return false;
		} , isArray : function(obj){  // 判断是否是array
			return (typeof obj=='object')&&obj.constructor==Array; 
		} , isString : function(str){  // 判断是否是字符串
			return (typeof str=='string')&&str.constructor==String; 
		} , isNumber : function(obj){   // 判断是否是数值
			return (typeof obj=='number')&&obj.constructor==Number; 
		} , isDate : function(obj){   // 是否是时间对象
			return (typeof obj=='object')&&obj.constructor==Date; 
		} , isFunction : function(obj){   // 判断是否是函数
			return (typeof obj=='function')&&obj.constructor==Function; 
		} , isObject : function(obj){   // 判断是否是对象
			return (typeof obj=='object')&&obj.constructor==Object; 
		} , getMapSize : function(map){ // 获取map的个数
			var index  = 0 ;
			if(this.nullBool(map))return index;
			for(var s in map){
				++index;
			}
			return index;
		} , isIEBrowser : function(){  // ie浏览器判断,是返回true
			return !!window.ActiveXObject || "ActiveXObject" in window ? true : false;
		} , mapMerge : function( coverMap , subjectMap ) {  // 将两个map合并成一个map
			// coverMap 覆盖map,即两个map中有相同子元素,以覆盖此map中元素为准
			var map = JSON.parse(JSON.stringify(coverMap));
			var map2 = JSON.parse(JSON.stringify(subjectMap));
			for( var s in map2 ){
				map[s] = map2[s];
			}
			return map;
		} , deepCopy : function(obj){  // 深拷贝
			return JSON.parse(JSON.stringify(obj));
		} , numForEach : function(num , func){
			for( var i = 0 ; i < num ; i++ ){		// 数循环
				func(i)
			}
		} , arrForEach : function(arr , func) {
			// 经测试,双重循环100次(10000次循环)比for循环 差 0.5秒
			try{
				for( var i = 0 ; i < arr.length ; i++ ){		// arr对象循环
					var bool = func(arr[i] , i);
					if(true === bool){
						return;
					}
				}
			}
			catch(e){
				console.log(e);
			}
		} , isChildren : function (contrastObj , boolObj) { // 判断是否是指定对象子类或自身 , 是返回true 
			var result = false;
			if(!this.nullBool(contrastObj)  && !this.nullBool(boolObj)){
				if("body" === boolObj[0].nodeName.toLowerCase()){
					result = false;
				}else{
					var boolResult = $(contrastObj).is(boolObj);
					if(boolResult){
						result = true;
					}else{
						result = this.isChildren(contrastObj , $(boolObj).parent());
					}
				}
			}
			return result;
		} , getCoords : function(el){ // 获取元素在页面中的坐标
			  var box = el.getBoundingClientRect(),
			  doc = el.ownerDocument,
			  body = doc.body,
			  html = doc.documentElement,
			  clientTop = html.clientTop || body.clientTop || 0,
			  clientLeft = html.clientLeft || body.clientLeft || 0,
			  top  = box.top  + (self.pageYOffset || html.scrollTop  ||  body.scrollTop ) - clientTop,
			  left = box.left + (self.pageXOffset || html.scrollLeft ||  body.scrollLeft) - clientLeft
			  return { 'top': top, 'left': left };
	  } , checkEmail : function(str){ 	// 邮箱验证
		    var re = /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/; 
		    if (re.test(str)) {
		    	return true;
		    } else {
		    	return false;
		    }
	  } , checkMobile : function(str){	// 手机验证 , 11位数字,以1开头。
		  var  re = /^1\d{10}$/;
		  if (re.test(str)) {
			  return true;
		  } else {
			  return false;
		  }
	  } , checkUser : function(str){ // 验证帐号是否合法,字母、数字、下划线组成,字母开头,4-16位。
		  var re = /^[a-zA-z]\w{4,15}$/;
		  if (re.test(str)) {
			  return true;
		  } else {
			  return false;
		  }
	  } , checkFullAngle : function(str){	// 判断是否有全角 , 有返回true
		  var str2=str.match(/[\uff00-\uffff]/g);
		  if(null === str2){
			  return false;
		  }else{
			  return true;
		  }
	  } , chackStr : function(str){ // 判断是否有特殊符号 和 数字 ,有返回true
		  var regEn = /[-`[email protected]#$%^&*()_=+<>?:"{},\\\\.\/;'[\]]/im,
		    regCn = /[·!#¥(——):;“”‘、,|《。》?、【】[\]]/im;
		  if(regEn.test(str) || regCn.test(str)) { // 包含返回true
			    return true;
		  }
		  return false;
	  } , getSelectAttr : function(select , attrName){
		  return $($(select).children("option:selected")).attr(attrName);
	  } , getEventSource : function(event){ // 获取事件源对象
		  return (bool.isIEBrowser() ? event.srcElement : event.target);
	  } , addPropertychange : function(Obj , func){	// 给input添加文本改变事件
		  if(this.arrBool($(Obj))){
			  console.log("文本改变监控创建失败!");
			  return;
		  }
		  $(Obj).unbind().on('input propertychange',func);
	  } , addBlur : function(Obj , func){	// 给input对象添加鼠标光标离开事件
		  $(Obj).blur(func);
	  } , timingTask : function(func , hours , minutes , seconds){ // 每天指定时间执行
		  var time = new Date();	// 当前时间
		  var time2 = new Date();	// 下一天时间
		  time2.setDate(time.getDate() + 1);
		  time2.setHours(hours);
		  time2.setMinutes(minutes);
		  time2.setSeconds(seconds);
		  var doIT = function(){
			  func();
			  setTimeout(doIT, 24 * 60 * 60 * 1000);
		  }
		  setTimeout(doIT, time2 - time);
	  } , strRegHandle : function(str){ // 字符串正则处理
		  if(arguments.length == 0) return this;
		  var obj = arguments[0];
		  var s = this;
		  for(var key in obj) {
			  s = s.replace(new RegExp("\\{\\{" + key + "\\}\\}", "g"), obj[key]);
		  }
		  return s;
	  }
}

// ------------------------------------ 字符串正则处理 -----------------------------------------------------

String.prototype.format = function() {
	if(arguments.length == 0) return this;
	var obj = arguments[0];
	var s = this;
	for(var key in obj) {
		s = s.replace(new RegExp("\\{\\{" + key + "\\}\\}", "g"), obj[key]);
	}
	return s;
}

/*// 测试代码
var data = {
	name:"张三",
	age:23,
	sex:"男"
}
var text = "我叫{{name}},我今年{{age}}岁,我的性别是{{sex}}!".format(data);
// console.log(text); // 我叫张三,我今年23岁,我的性别是男!
*/

// ---------------------------------------------- 颜色转变类型
// -------------------------------------------------------

var reg = "/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/";	// 十六进制颜色值的正则表达式
// 颜色转换,RGB颜色转换为16进制 (处理边界填充)
String.prototype.colorHex = function(){
	var that = this;
	if(/^(rgb|RGB)/.test(that)){
		var aColor = that.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",");
		var strHex = "#";
		for(var i=0; i<aColor.length; i++){
			var hex = Number(aColor[i]).toString(16);
			if(hex === "0"){
				hex += hex;	
			}
			strHex += hex;
		}
		if(strHex.length !== 7){
			strHex = that;	
		}
		return strHex;
	}else if(reg.test(that)){
		var aNum = that.replace(/#/,"").split("");
		if(aNum.length === 6){
			return that;	
		}else if(aNum.length === 3){
			var numHex = "#";
			for(var i=0; i<aNum.length; i+=1){
				numHex += (aNum[i]+aNum[i]);
			}
			return numHex;
		}
	}else{
		return that;	
	}
};

// 颜色转换,16进制颜色转为RGB格式 (处理边界填充)
String.prototype.colorRgb = function(data){
	var sColor = this.toLowerCase();
	if(sColor){
		if(sColor.length === 4){
			var sColorNew = "#";
			for(var i=1; i<4; i+=1){
				sColorNew += sColor.slice(i,i+1).concat(sColor.slice(i,i+1));	
			}
			sColor = sColorNew;
		}
		if( sColor.indexOf("rgba") != -1 ){
			var indexs = sColor.lastIndexOf(",");
			var strParam = sColor.substring(0,indexs+1);
			strParam += data+")";
			return strParam;
		}
		var sColorChange = [];
		for(var i=1; i<7; i+=2){
			sColorChange.push(parseInt("0x"+sColor.slice(i,i+2)));	
		}
		return "RGBA(" + sColorChange.join(",") + ","+data+")";
	}else{
		return sColor;	
	}
};


// ------------------------------------------------------- 根据正则内容格式化时间
// ---------------------------------------------------------------
// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
Date.prototype.Format = function (fmt) { // author: meizz
    var o = {  
        "M+": this.getMonth() + 1, // 月份
        "d+": this.getDate(), // 日
        "H+": this.getHours(), // 小时
        "m+": this.getMinutes(), // 分
        "s+": this.getSeconds(), // 秒
        "q+": Math.floor((this.getMonth() + 3) / 3), // 季度
        "S": this.getMilliseconds() // 毫秒
    };  
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));  
    for (var k in o)  
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));  
    return fmt;  
}  
  
// 调用:
// var time1 = new Date().Format("yyyy-MM-dd");  
// var time2 = new Date().Format("yyyy-MM-dd HH:mm:ss");  
  
// var nowTime=new Date();  
// nowTime.setMonth(nowTime.getMonth()-1);    
// alert(nowTime.Format("yyyy-MM-dd HH:mm:ss"));//上月当前时间

// ----------------------------------------------------- 创建实体
// -----------------------------------------------------------------

/**
 * 维度数据返回封装
 * 
 * @param dimensionChoice
 *            维度子项选中的uuid串(uuid1,uuid2...)
 * @param dimensionName
 *            维度子项选中的名称串(维度1|邮政,中国;维度2|邮政,中国...)
 * @param status
 *            获取当前维度项的状态,判断出错
 * @param code
 *            预留属性,用于指定多个维度其中一个必须有选中项判断
 * @param errorTitle
 *            错误提示语
 */
var dimensionResult = function() {
	this.dimensionChoice = null;
	this.dimensionName = null;
	this.status = null;
	this.code = null;
	this.errorTitle = null;
}

/**
 * 错误时候的封装封装
 */
dimensionResult.prototype.error = function(str){
	this.status = false;
	this.errorTitle = str;
	return this;
}

/**
 * 正确时候的封装封装
 */
dimensionResult.prototype.success = function(str , str2){
	this.status = true;
	this.dimensionChoice = str;
	this.dimensionName = str2;
	return this;
}

/**
 * 修改 封装属性 dimensionChoice
 * 
 * @param str
 *            维度子项选中的uuid串
 */
dimensionResult.prototype.setDimensionChoice = function(str) {
	this.dimensionChoice = str;
}

/**
 * 修改 封装属性 status
 * 
 * @param booleans
 *            当前维度项的状态,判断出错
 */
dimensionResult.prototype.setStatus = function( booleans ) {
	this.status = booleans;
}

/**
 * 修改 封装属性 code
 * 
 * @param str
 *            用于指定多个维度其中一个必须有选中项判断
 */
dimensionResult.prototype.setCode = function( str ) {
	this.code = str;
}

/**
 * 修改 封装属性 errorTitle
 * 
 * @param str
 *            错误提示,表明当前为什么错了
 */
dimensionResult.prototype.setErrorTitle = function( str ) {
	this.errorTitle = str;
}



// ----------------------------------------------------- 动态事件封装
// -----------------------------------------------------------------

var onPostAjax_1 = function( ajaxUrl , ajaxData , callback ){
	if( bool.mapBool(ajaxData) )ajaxData = {};
	$.ajax({ url: ajaxUrl, data: ajaxData, type: 'post', dataType: 'json',
		async: false,
		success:function(data){
			if( data.status === 0 ){
				if( typeof callback === "function" ){
					callback( data );
				}
			}else{
				alert( data.info );
			}
		},
		error:function(e){
			alert("查询异常,请刷新页面重新尝试!");
		}
	});
}

/**
 * ajax 封装
 * @param AjaxUrl 接口url
 * @param AjaxData 传参
 * @param AjaxFunc 回调事件
 * @param AjaxExecutionMode  ajax执行方式(同步 异步)
 */
var acc_ajaxEncapsulation = function( AjaxUrl , AjaxData , AjaxExecutionMode , AjaxFunc ) {
	var bool = new auxiliary();
	if(!bool.strBool(AjaxUrl)){
			if(bool.nullBool(AjaxData)) AjaxData = {};
			if(bool.nullBool(AjaxFunc)) AjaxFunc = null;
			$.ajax({
				url : AjaxUrl, type:"POST", data: AjaxData, dataType:"json",async: AjaxExecutionMode ,success: AjaxFunc
			})
	}
}

/**
 * ajax 封装: 插入数据(同步)
 * @param AjaxUrl 接口url
 * @param AjaxData 传参
 */
var insertData = function(AjaxUrl , AjaxData){
	var result = null;
	acc_ajaxEncapsulation(AjaxUrl , AjaxData , false , function(data){
		result =  ("0" === data.status || "08" === data.status 
				|| 0 === data.status) ? true : false;
	})
	return result;
}

/**
 * ajax 封装: 获取接口数据(同步)
 * @param AjaxUrl 接口url
 * @param AjaxData 传参
 * @param func 回调函数
 */
var getInterfaceData = function( AjaxUrl , AjaxData , func ) {
	var bool = new auxiliary() , resultData  = null;
	if(!bool.strBool(AjaxUrl)){
		if(bool.nullBool(AjaxData)) AjaxData = {};
		$.ajax({
			url : AjaxUrl, type:"POST", data: AjaxData, dataType:"json",async: false ,
			success: function(data) {
				if("0" === data.status || "08" === data.status 
						|| 0 === data.status){
					resultData = data.result;
					if(bool.isFunction(func)){
						func(resultData);
					}
				}
				loadingClear();
			},
			error : function(){
				loadingClear();
			}
		})
	}
	return resultData;
}

/**
 	让线程睡眠指定时间:(单位)毫秒
 */
function acc_sleep(number){
	var nowDate = new Date().getTime();
	var nextDate = nowDate + number;
	var runnable = true;
	while(runnable){
		if(nowDate > nextDate 
				|| nowDate === nextDate)runnable = false;
		nowDate = new Date().getTime();
	}
}

// 页面loading
/**
 * 增加页面loading 包含8种loading,只用更换spinner,例如:spinner1
 * @param time 2018_3_17 14:04
 * @param author Sixgod
 */
var loadingShow = function() {
	$("body").append("<div class='fakeloader'></div>");
	$(".fakeloader").fakeLoader({
		timeToHide : 500000000,
		bgColor : "rgba(16, 10, 9, 0.22)",
		spinner : "spinner3"
	});
}


/**
 * 删除页面loading
 * @param time 2018_3_17 14:04
 * @param author Sixgod
 */
var loadingClear = function(){
	$('.fakeloader').remove();
}


/**
 * 随机获取
 * cesium内置颜色
 * color = getColor(10);
 */
var getColor =  function(index){
	var color = [
		Cesium.Color.ALICEBLUE	,
		Cesium.Color.ANTIQUEWHITE 	,
		Cesium.Color.AQUA	,
		Cesium.Color.AQUAMARINE 	,
		Cesium.Color.AZURE 	,
		Cesium.Color.BEIGE 	,
		Cesium.Color.BISQUE 	,
		Cesium.Color.BLACK 	,
		Cesium.Color.BLANCHEDALMOND 	,
		Cesium.Color.BLUE 	,
		Cesium.Color.BLUEVIOLET 	,
		Cesium.Color.BROWN 	,
		Cesium.Color.BURLYWOOD 	,
		Cesium.Color.CADETBLUE 	,
		Cesium.Color.CHARTREUSE 	,
		Cesium.Color.CHOCOLATE 	,
		Cesium.Color.CORAL 	,
		Cesium.Color.CORNFLOWERBLUE 	,
		Cesium.Color.CORNSILK 	,
		Cesium.Color.CRIMSON 	,
		Cesium.Color.CYAN 	,
		Cesium.Color.DARKBLUE 	,
		Cesium.Color.DARKCYAN 	,
		Cesium.Color.DARKGOLDENROD 	,
		Cesium.Color.DARKGRAY 	,
		Cesium.Color.DARKGREEN 	,
		Cesium.Color.DARKGREY 	,
		Cesium.Color.DARKKHAKI 	,
		Cesium.Color.DARKMAGENTA 	,
		Cesium.Color.DARKOLIVEGREEN 	,
		Cesium.Color.DARKORANGE 	,
		Cesium.Color.DARKORCHID 	,
		Cesium.Color.DARKRED 	,
		Cesium.Color.DARKSALMON 	,
		Cesium.Color.DARKSEAGREEN 	,
		Cesium.Color.DARKSLATEBLUE 	,
		Cesium.Color.DARKSLATEGRAY 	,
		Cesium.Color.DARKSLATEGREY 	,
		Cesium.Color.DARKTURQUOISE 	,
		Cesium.Color.DARKVIOLET 	,
		Cesium.Color.DEEPPINK 	,
		Cesium.Color.DEEPSKYBLUE 	,
		Cesium.Color.DIMGRAY 	,
		Cesium.Color.DIMGREY 	,
		Cesium.Color.DODGERBLUE 	,
		Cesium.Color.FIREBRICK 	,
		Cesium.Color.FLORALWHITE 	,
		Cesium.Color.FORESTGREEN 	,
		Cesium.Color.FUCHSIA 	,
		Cesium.Color.GAINSBORO 	,
		Cesium.Color.GHOSTWHITE 	,
		Cesium.Color.GOLD 	,
		Cesium.Color.GOLDENROD 	,
		Cesium.Color.GRAY 	,
		Cesium.Color.GREEN 	,
		Cesium.Color.GREENYELLOW 	,
		Cesium.Color.GREY 	,
		Cesium.Color.HONEYDEW 	,
		Cesium.Color.HOTPINK 	,
		Cesium.Color.INDIANRED 	,
		Cesium.Color.INDIGO 	,
		Cesium.Color.IVORY 	,
		Cesium.Color.KHAKI 	,
		Cesium.Color.LAVENDAR_BLUSH 	,
		Cesium.Color.LAVENDER 	,
		Cesium.Color.LAWNGREEN 	,
		Cesium.Color.LEMONCHIFFON 	,
		Cesium.Color.LIGHTBLUE 	,
		Cesium.Color.LIGHTCORAL 	,
		Cesium.Color.LIGHTCYAN 	,
		Cesium.Color.LIGHTGOLDENRODYELLOW 	,
		Cesium.Color.LIGHTGRAY 	,
		Cesium.Color.LIGHTGREEN 	,
		Cesium.Color.LIGHTGREY 	,
		Cesium.Color.LIGHTPINK 	,
		Cesium.Color.LIGHTSEAGREEN 	,
		Cesium.Color.LIGHTSKYBLUE 	,
		Cesium.Color.LIGHTSLATEGRAY 	,
		Cesium.Color.LIGHTSLATEGREY 	,
		Cesium.Color.LIGHTSTEELBLUE 	,
		Cesium.Color.LIGHTYELLOW 	,
		Cesium.Color.LIME 	,
		Cesium.Color.LIMEGREEN 	,
		Cesium.Color.LINEN 	,
		Cesium.Color.MAGENTA 	,
		Cesium.Color.MAROON 	,
		Cesium.Color.MEDIUMAQUAMARINE 	,
		Cesium.Color.MEDIUMBLUE 	,
		Cesium.Color.MEDIUMORCHID 	,
		Cesium.Color.MEDIUMPURPLE 	,
		Cesium.Color.MEDIUMSEAGREEN 	,
		Cesium.Color.MEDIUMSLATEBLUE 	,
		Cesium.Color.MEDIUMSPRINGGREEN 	,
		Cesium.Color.MEDIUMTURQUOISE 	,
		Cesium.Color.MEDIUMVIOLETRED 	,
		Cesium.Color.MIDNIGHTBLUE 	,
		Cesium.Color.MINTCREAM 	,
		Cesium.Color.MISTYROSE 	,
		Cesium.Color.MOCCASIN 	,
		Cesium.Color.NAVAJOWHITE 	,
		Cesium.Color.NAVY 	,
		Cesium.Color.OLDLACE 	,
		Cesium.Color.OLIVE 	,
		Cesium.Color.OLIVEDRAB 	,
		Cesium.Color.ORANGE 	,
		Cesium.Color.ORANGERED 	,
		Cesium.Color.ORCHID 	,
		Cesium.Color.packedLength 	,
		Cesium.Color.PALEGOLDENROD 	,
		Cesium.Color.PALEGREEN 	,
		Cesium.Color.PALETURQUOISE 	,
		Cesium.Color.PALEVIOLETRED 	,
		Cesium.Color.PAPAYAWHIP 	,
		Cesium.Color.PEACHPUFF 	,
		Cesium.Color.PERU 	,
		Cesium.Color.PINK 	,
		Cesium.Color.PLUM 	,
		Cesium.Color.POWDERBLUE 	,
		Cesium.Color.PURPLE 	,
		Cesium.Color.RED 	,
		Cesium.Color.ROSYBROWN 	,
		Cesium.Color.ROYALBLUE 	,
		Cesium.Color.SADDLEBROWN 	,
		Cesium.Color.SALMON 	,
		Cesium.Color.SANDYBROWN 	,
		Cesium.Color.SEAGREEN 	,
		Cesium.Color.SEASHELL 	,
		Cesium.Color.SIENNA 	,
		Cesium.Color.SILVER 	,
		Cesium.Color.SKYBLUE 	,
		Cesium.Color.SLATEBLUE 	,
		Cesium.Color.SLATEGRAY 	,
		Cesium.Color.SLATEGREY 	,
		Cesium.Color.SNOW 	,
		Cesium.Color.SPRINGGREEN 	,
		Cesium.Color.STEELBLUE 	,
		Cesium.Color.TAN 	,
		Cesium.Color.TEAL 	,
		Cesium.Color.THISTLE 	,
		Cesium.Color.TOMATO 	,
		Cesium.Color.TRANSPARENT 	,
		Cesium.Color.TURQUOISE 	,
		Cesium.Color.VIOLET 	,
		Cesium.Color.WHEAT 	,
		Cesium.Color.WHITE 	,
		Cesium.Color.WHITESMOKE 	,
		Cesium.Color.YELLOW 	,
		Cesium.Color.YELLOWGREEN 
	]

	return color[index];
}



var _ary,bool = true; // 默认使用辅助工具
if(bool)_ary = new auxiliary()

 

相关标签: 辅助工具

上一篇: tools

下一篇: 『GoLang』错误处理