前端小工具合集 - 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』错误处理
推荐阅读