basefun封装文件

var judge=false;
function ajax(obj){//ajax请求
	$.ajax({
		url:obj.url,//请求地址
		type:obj.type||"POST",//请求方式
		async:(function(){//obj.async||true,//是否异步
			if(obj.async==false){
				return false;
			}else{
				return true;
			}
		})(),
		cache:obj.cache||true,//是否从浏览器缓存中加载请求信息
		data:obj.data||"",//请求参数
		dataType:obj.dataType||"json",//返回的数据类型
		timeout:30000,
		beforeSend : function(jqXHR, setting) {//数据查询过程中
			if(!obj.noneOpen){//
				$("#loading",parent.document).show();
			}
		},
		complete : function(XMLHttpRequest, textStatus) {//数据查询超时
			if(textStatus=="timeout"){
				$("#loading",parent.document).hide();
				msg({
					layer:obj.layer,
					title:"查询数据超时"
				});
			}
		},
		success : function(data) {//数据查询成功
			if(obj.func){
				obj.func(data);
			}
			$("#loading",parent.document).hide();
		},
		error : function(error) {//数据查询失败
			if(obj.error){
				obj.error(error);
			}
			$("#loading",parent.document).hide();
		}
	});
}
function addTreeTabs(treeData,callback){//添加树选项标签
	//$(".treeBtn i").hide();
	$(".treeBtn i").removeAttr("isClick");
	for(var name in treeData){
		//$(".treeBtn i[treeType='"+name+"']").show();
		$(".treeBtn i[treeType='"+name+"']").attr("isClick","true").removeClass("noClick");//是否可以点击
	}
	$(".treeBtn i").unbind("click").on("click",function(){
		if(!$(this).attr("isClick")){
			return false;
		}
		$(".treeBtn i").removeClass("treeActive");
		$(this).addClass("treeActive");
		var _this=$(this);
		$(".flexTabs").hide();
		if($("."+$(this).attr("treeType")+"flexTabs").length != 0){//存在
			$("."+_this.attr("treeType")+"flexTabs").show();
			$("."+_this.attr("treeType")+"flexTabs .active").click();
		}else{
			var treeElem=$('<div class="flexTabs '+$(this).attr("treeType")+'flexTabs"></div>');
			$(".treeList").append(treeElem);
			for(var name in treeData[$(this).attr("treeType")]){
				if(name != "mpTotal"){
					var elem=$("<p>"+name+"</p>");
					$("."+_this.attr("treeType")+"flexTabs").append(elem);
				}
			}
			$("."+_this.attr("treeType")+"flexTabs p").unbind("click").click(function(){
				$("."+_this.attr("treeType")+"flexTabs p").removeClass("active");
				$(this).addClass("active");
				if(callback){//点击标签后调用回调函数
					var _thisText=$("."+_this.attr("treeType")+"flexTabs .active").text();
					callback(treeData[_this.attr("treeType")][_thisText]);
				}
			});
			$("."+_this.attr("treeType")+"flexTabs p:eq(0)").click();//默认选中第一个树标签
		}
	});
	if($(".treeBtn i:eq(0)").attr("isClick")){
		$(".treeBtn i:eq(0)").click();
	}else if($(".treeBtn i:eq(1)").attr("isClick")){
		$(".treeBtn i:eq(1)").click();
	}else{
		$(".treeBtn i:eq(2)").click();
	}
}
function msg(obj){
	obj.layer.open({
		content:obj.title,
		type:1,
		closeBtn:0,
		shade:0,
		time:3000,
		anim:2,
		title:"操作信息",
		skin:"layuiOPen",
		area:["250px","150px"],
		resize:false,
		move:false,
		offset:"rb"
	});
}
function tree(obj){//动态添加树形菜单
	/*
	 * 属性				意义
	 * check_get		有复选框的树,必须将此属性设为true,例如check_get:true;反之则不需要设置此属性
	 * numberNode		最多只能勾选numberNode个节点,例如numberNode:3,最多只能勾选3个节点;注意此属性只能用在有复选框的树的情况下,并且要将cascadeCheck属性设为false
	 * success			树加载成功后触发回调函数,例如success:function(node,data){}
	 * select			树节点选中后需单独处理的函数
	 * jdl				树只能选择计量点,例如:limit:"jld"
	 * group_jld		树只能选择组或计量点查询,例如:limit:"group_jld"
	 * */
	var limitNode={
		jld:["customerMeter","groupMeter"],
		group_jld:["group","groupMeter","customerMeter"]
	}
	$(obj.id).tree({
		data:obj.data,
		lines : obj.lines == undefined ? true:obj.lines,//是否显示树线条
		checkbox : obj.checkbox == undefined ? true : obj.checkbox,//是否显示复选框
		cascadeCheck : obj.cascadeCheck == undefined ? true : obj.cascadeCheck,//是否级联检查
		onlyLeafCheck : obj.onlyLeafCheck == undefined ? false : obj.onlyLeafCheck,//是否只在叶节点前显示复选框。
		onBeforeCheck:function(node,checked){//点击复选框前触发
			if(obj.limit){
				switch(obj.limit){
					case "jld":
						if (node.layer != "customerMeter" && node.layer != "groupMeter") {
							msg({
								title:"请选择计量点查询",
								layer:obj.layer
							});
							return false;
						}
						break;
					case "group_jld":
						if(node.layer != "group" && node.layer != "groupMeter" && node.layer != "customerMeter"){
							msg({
								title:"请选择组或计量点查询",
								layer:obj.layer
							});
							return false;
						}
						break;
				}
			}
		},
		onCheck:function(node,checked){
			if(obj.numberNode != undefined){
				unCheck({//限制树最多只能选obj.three个
					node:node,
					element:obj.id,
					length:obj.numberNode
				});
			}
			var id = $(obj.id).tree('find', node.id);
			$(obj.id).tree('select', id.target);
			if(obj.check_get != undefined){//有复选框,执行这里的请求函数,避免发多次请求
				getData(node);
			}
		},
		onBeforeSelect:function(node){//节点被选中前触发
			if(obj.limit){
				switch(obj.limit){
					case "jld":
						if (node.layer != "customerMeter" && node.layer != "groupMeter") {
							msg({
								title:"请选择计量点查询",
								layer:obj.layer
							});
							return false;
						}
						break;
					case "group_jld":
						if(node.layer != "group" && node.layer != "groupMeter" && node.layer != "customerMeter"){
							msg({
								title:"请选择组或计量点查询",
								layer:obj.layer
							});
							return false;
						}
						break;
				}
			}
		},
		onSelect:function(node){//节点选中时触发
			node instanceof Object&&localStorage.setItem("qzfNode",node.id);//记住当前选择的节点id
			if(obj.check_get== undefined){//没有复选框,执行这里的请求函数,避免发多次请求
				if(obj.select){
					obj.select(node);
				}else{
					getData(node);
				}
			}
		},
		onLoadSuccess:function(node,data){//树加载成功时触发
			scroll({id:"#tree",cursorwidth:"6px",cursorborderradius:"6px"});//滚动条
			if(localStorage.getItem("qzfNode") && !obj.userNo){//优先取上次操作的节点,如果没有再选择用户选想选择的节点
				var nodeId=$(obj.id).tree("find",localStorage.getItem("qzfNode"));
				if(nodeId){//存在表示当前树下有此节点,否则没有
					if(obj.limit){//存在限制,需要处理,避免跳转界面时,造成选不中节点,导致界面为空白
						if(limitNode[obj.limit].indexOf(nodeId.layer)<0){//此节点被限制,需要重新定义新节点,避免界面空白
							var thisNum=0;
							judge=false;
							findNode(data,obj,thisNum);
						}else{
							selectCheck(nodeId,obj.id);
						}
					}else{
						selectCheck(nodeId,obj.id);
					}
				}else{
					var thisNum=0;
					judge=false;
					findNode(data,obj,thisNum);
				}
			}else if(obj.defaultNode){//存在需要默认选中节点的字段,并展开特定节点
				var thisNum=0;
				judge=false;
				findNode(data,obj,thisNum);
			}
			if(obj.success != undefined){
				obj.success(node,data);
			}
		},
		onExpand:function(node){//节点展开时触发
			resizeScroll({id:"#tree"});
			if(obj.expend){
				obj.expend();
			}
		},
		onCollapse:function(node){//节点折叠时触发
			resizeScroll({id:"#tree"});
			if(obj.collapse){
				obj.collapse();
			}
		},
		onClick:function(node){//当点击节点时触发,点击复选框不能触发这个事件
			if (!node.checked) {
				$(obj.id).tree("check", node.target);
			} else {
				$(obj.id).tree("uncheck", node.target);
			}
		}
	})
}
unCheck.selectNodes = [];
unCheck.unChecking = false;
function unCheck(obj) {//树选择限制
	if (!unCheck.unChecking) {
		var index = $.inArray(obj.node, unCheck.selectNodes);
		if (unCheck.selectNodes.length >= obj.length) {
			if (index == -1) {// 选中新的节点,取消选中第一个选中的节点
				var unCheckNode = unCheck.selectNodes.shift();
				unCheck.unChecking = true;
				var element = obj.element;
				$(element).tree("uncheck", unCheckNode.target);
			}
		}
		if (index != -1) {// 当前操作为取消选中
			unCheck.selectNodes.splice(index, 1);
		} else {
			unCheck.selectNodes.push(obj.node);
		}
		unCheck.unChecking = false;
	}
}
function selectNode(nodeArr,Arr,id){//查找符合条件的树节点
	for(var i=0;i<nodeArr.length;i++){
		if(nodeArr[i].layer == Arr){//找到第一个符合条件的节点
			var nodeId = $(id).tree("find",nodeArr[i].id);
			selectCheck(nodeId,id);
			judge=true;
			return true;
		}else{
			if(nodeArr[i].children){//存在子节点
				selectNode(nodeArr[i].children,Arr,id);
			}
		}
	}
}
function selectCheck(node,id){//树节点操作
	$(id).tree('select', node.target);
	$(id).tree('check', node.target);
	$(id).tree('collapseAll');//先折叠全部节点
	$(id).tree("expandTo",node.target);//然后从根部展开指定的节点
}
function findNode(data,obj,thisNum){
	selectNode(data,obj.defaultNode[thisNum],obj.id);//返回判断是否有选中的节点,没有继续往下找
	if(!judge){
		thisNum++;
		if(thisNum<obj.defaultNode.length){
			findNode(data,obj,thisNum);//返回判断是否有选中的节点,没有继续往下找
		}
	}
}
Date.prototype.format=function(pattern){//日期格式化
	var returnValue=pattern;
	var format={
		"y+":this.getFullYear(),
		"M+":this.getMonth()+1,
		"d+":this.getDate(),
		"H+":this.getHours(),
		"m+":this.getMinutes(),
		"s+":this.getSeconds(),
		"S":this.getMilliseconds(),
		"h+":(this.getHours()%12),
		"a":(this.getHours()/12)<=1?"AM":"PM"
	};
	for(var key in format){
		var regExp=new RegExp("("+key+")");
		if(regExp.test(returnValue)){
			var zero="";
			for(var i=0;i<RegExp.$1.length;i++){
				zero+="0"
			}
			var replacement=RegExp.$1.length==1?format[key]:(zero+format[key]).substring(((""+format[key]).length));
			returnValue=returnValue.replace(RegExp.$1,replacement)
		}
	}
	return returnValue
};
function dateCallback(form,laydate,thisTab,defaultType,callback,needReady){//页面选择时间类型,设置对应显示时间框
	form.on('select(timeType)', function(data){
		$(".timeInput").hide();
		if(data.value.split("_")[0] == -1){//时
			$("#"+thisTab+"_date"+data.value.split("_")[0]).parent().show();
			$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",new Date().format("yyyy-MM-dd HH:00:00"));
			laydate.render({ 
				elem: '#'+thisTab+"_date"+data.value.split("_")[0],
				theme:"#4CA6FF",
				type:"datetime",
				max:new Date().format("yyyy-MM-dd HH:mm:ss"),
				value:new Date().format("yyyy-MM-dd HH:00:00"),
				btns: ['confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",value);
				}
			});
		}else if(data.value.split("_")[0] == 0){//日
			$("#"+thisTab+"_date"+data.value.split("_")[0]).parent().show();
			$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",new Date().format("yyyy-MM-dd"));
			laydate.render({ 
				elem: '#'+thisTab+"_date"+data.value.split("_")[0],
				theme:"#4CA6FF",
				max:new Date().format("yyyy-MM-dd"),
				value:new Date().format("yyyy-MM-dd"),
				btns: ['confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",value);
				},
				ready:function(date){
					if(needReady){
						needReady(data.value.split("_")[0]);
					}
				}
			});
		}else if(data.value.split("_")[0] == 1){//周
			$("#"+thisTab+"_date"+data.value.split("_")[0]).parent().show();
			$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",new Date().format("yyyy-MM-dd"));
			laydate.render({ 
				elem: '#'+thisTab+"_date"+data.value.split("_")[0],
				theme:"#4CA6FF",
				max:new Date().format("yyyy-MM-dd"),
				value:new Date().format("yyyy-MM-dd"),
				btns: ['confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",value);
				}
			});
		}else if(data.value.split("_")[0] == 2){//月
			$("#"+thisTab+"_date"+data.value.split("_")[0]).parent().show();
			$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",new Date().format("yyyy-MM"));
			laydate.render({ 
				elem: '#'+thisTab+"_date"+data.value.split("_")[0],
				theme:"#4CA6FF",
				type:"month",
				max:new Date().format("yyyy-MM"),
				value:new Date().format("yyyy-MM"),
				btns: ['confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",value);
				},
				ready:function(date){
					if(needReady){
						needReady(data.value.split("_")[0]);
					}
				}
			});
		}else if(data.value.split("_")[0] == 3){//时段
			$("#"+thisTab+"_dateStart"+data.value.split("_")[0]).parent().show().css("width","545px");
			$("#"+thisTab+"_dateStart"+data.value.split("_")[0]).css("width","190px");
			$("#"+thisTab+"_dateEnd"+data.value.split("_")[0]).css("width","190px");
			$('#'+thisTab+"_dateStart"+data.value.split("_")[0]).attr("val",new Date(new Date().setDate(1)).format("yyyy-MM-dd"));
			$('#'+thisTab+"_dateEnd"+data.value.split("_")[0]).attr("val",new Date().format("yyyy-MM-dd"));
			var start=laydate.render({ 
				elem: '#'+thisTab+"_dateStart"+data.value.split("_")[0],
				theme:"#4CA6FF",
				type:"date",
				max:new Date().format("yyyy-MM-dd"),
				value:new Date(new Date().setDate(1)).format("yyyy-MM-dd"),
				btns: ['confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_dateStart"+data.value.split("_")[0]).attr("val",value);
					end.config.min = {
						year: date.year,
						month: date.month - 1,
						date: date.date/*,
						hours: date.hours,
						minutes: date.minutes,
						seconds: date.seconds*/
					}
				}
			});
			var end=laydate.render({ 
				elem: '#'+thisTab+"_dateEnd"+data.value.split("_")[0],
				theme:"#4CA6FF",
				type:"date",
				min:new Date(new Date().setDate(1)).format("yyyy-MM-dd"),
				max:new Date().format("yyyy-MM-dd"),
				value:new Date().format("yyyy-MM-dd"),
				btns: ['confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_dateEnd"+data.value.split("_")[0]).attr("val",value);
					start.config.max = {
						year: date.year,
						month: date.month - 1,
						date: date.date/*,
						hours: date.hours,
						minutes: date.minutes,
						seconds: date.seconds*/
					}
				}
			});
		}else if(data.value.split("_")[0] == 5||data.value.split("_")[0] == 6){//年与年对比
			$("#"+thisTab+"_date"+data.value.split("_")[0]).parent().show();
			$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",new Date().format("yyyy"));
			laydate.render({ 
				elem: '#'+thisTab+"_date"+data.value.split("_")[0],
				theme:"#4CA6FF",
				type:"year",
				max:new Date().format("yyyy"),
				value:new Date().format("yyyy"),
				btns: ['confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",value);
				},
				ready:function(date){
					if(needReady){
						needReady(data.value.split("_")[0]);
					}
				}
			});
		}
		if(callback){
			callback(data.value.split("_")[0]);
		}
		if(data.value.split("_")[0] == 0){//电气运行分析查询类型
			if($("#thisTab_btn").find("button.active").attr("type")=="frequency"||$("#thisTab_btn").find("button.active").attr("type")=="monitoring"||$("#thisTab_btn").find("button.active").attr("type")=="analysis"){
				$("#querytype").hide();
			}else{
				$("#querytype").show();
			}
		}else{
			$("#querytype").hide();
		}
	});
	$(".timeInput").hide();
	var defaultMax;var defaultValue;var defaultValue2;var defaultType_;
	if(defaultType == "-1"){
		$("#"+thisTab+"_date-1").parent().show();
		defaultType_="datetime";
		defaultMax=new Date().format("yyyy-MM-dd HH:mm:ss");
		defaultValue=new Date().format("yyyy-MM-dd HH:00:00");
	}else if(defaultType == "0"){
		$("#"+thisTab+"_date0").parent().show();
		defaultType_="date";
		defaultMax=new Date().format("yyyy-MM-dd");
		defaultValue=new Date().format("yyyy-MM-dd");
	}else if(defaultType == "1"){
		$("#"+thisTab+"_date1").parent().show();
		defaultType_="date";
		defaultMax=new Date().format("yyyy-MM-dd");
		defaultValue=new Date().format("yyyy-MM-dd");
	}else if(defaultType == "2"){
		$("#"+thisTab+"_date2").parent().show();
		defaultType_="month";
		defaultMax=new Date().format("yyyy-MM");
		defaultValue=new Date().format("yyyy-MM");
	}else if(defaultType == "3"){
		$("#"+thisTab+"_dateStart3").parent().show().css("width","545px");
		$("#"+thisTab+"_dateStart3").css("width","190px");
		$("#"+thisTab+"_dateEnd3").css("width","190px");
		defaultType_="datetime";
		defaultMax=new Date().format("yyyy-MM-dd");
		defaultValue=new Date(new Date().setDate(1)).format("yyyy-MM-dd");
		defaultValue2=new Date().format("yyyy-MM-dd");
	}else if(defaultType == "5"||defaultType == "6"){
		$("#"+thisTab+"_date"+defaultType).parent().show();
		defaultType_="year";
		defaultMax=new Date().format("yyyy");
		defaultValue=new Date().format("yyyy");
	}
	if(defaultType=="3"){
		laydate.render({
			elem: '#'+thisTab+"_dateStart3",
			theme:"#4CA6FF",
			type:defaultType_,
			max:defaultMax,
			value:defaultValue,
			btns: ['now','confirm'],
			done:function(value, date, endDate){
				$('#'+thisTab+"_dateStart3").attr("val",value);
			}
		});
		$('#'+thisTab+"_dateStart3").attr("val",defaultMax);
		laydate.render({
			elem: '#'+thisTab+"_dateEnd3",
			theme:"#4CA6FF",
			type:defaultType_,
			max:defaultMax,
			value:defaultValue2,
			btns: ['now','confirm'],
			done:function(value, date, endDate){
				$('#'+thisTab+"_dateEnd3").attr("val",value);
			}
		});
		$('#'+thisTab+"_dateEnd3").attr("val",defaultMax);
	}else{
		laydate.render({
			elem: '#'+thisTab+"_date"+defaultType,
			theme:"#4CA6FF",
			type:defaultType_,
			max:defaultMax,
			value:defaultValue,
			btns: ['now','confirm'],
			done:function(value, date, endDate){
				$('#'+thisTab+"_date"+defaultType).attr("val",value);
			},
			ready:function(date){
				if(needReady){
					needReady(defaultType);
				}
			}
		});
		$('#'+thisTab+"_date"+defaultType).attr("val",defaultMax);
	}
}
function getElem(obj){
	var dateElem;
	if(obj.timeTypeId == -1){//时
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:$(obj.inputId).attr("val"),
			toDate:$(obj.inputId).attr("val")
		}
	}else if(obj.timeTypeId == 0){//日
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:$(obj.inputId).attr("val")+" 00:00:00",
			toDate:$(obj.inputId).attr("val")+" 23:59:59"
		}
	}else if(obj.timeTypeId == 1){//周
		var time=$(obj.inputId).attr("val");
		var time_=new Date(Date.parse(time.replace(/-/g,"-")));
		var now = new Date(time_); 
		var nowTime = now.getTime() ; 
		var day = now.getDay();
		var oneDayLong = 24*60*60*1000 ; 
		var MondayTime = nowTime - (day)*oneDayLong  ; 
		var SundayTime =  nowTime + (6-day)*oneDayLong ; 
		var monday = new Date(MondayTime);
		var sunday = new Date(SundayTime);
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:monday.format("yyyy-MM-dd")+" 00:00:00",
			toDate:sunday.format("yyyy-MM-dd")+" 23:59:59"
		}
	}else if(obj.timeTypeId == 2){//月
		var time=$(obj.inputId).attr("val");
		var time_=new Date(Date.parse(time.replace(/-/g,"-")));
		 // 获取当前月的第一天 
	    var start = new Date(time_);
	    start.setDate(1);
	    // 获取当前月的最后一天 
	    var date = new Date(time_);
	    var currentMonth = date.getMonth();
	    var nextMonth = ++currentMonth;
	    var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
	    var oneDay = 1000 * 60 * 60 * 24;
	    var end = new Date(nextMonthFirstDay - oneDay);    
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:start.format("yyyy-MM-dd")+" 00:00:00",
			toDate:end.format("yyyy-MM-dd")+" 23:59:59"
		}
	}else if(obj.timeTypeId == 3){//时段
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:$(obj.inputId[0]).attr("val")+" 00:00:00",
			toDate:$(obj.inputId[1]).attr("val")+" 23:59:59"
		}
	}else if(obj.timeTypeId == 5||obj.timeTypeId == 6){//年
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:$(obj.inputId).attr("val")+"-01-01 00:00:00",
			toDate:$(obj.inputId).attr("val")+"-12-31 23:59:59"
		}
	}
	return dateElem;
}

/* clone 克隆对象 
 * */
function clone(obj) {
  // Handle the 3 simple types, and null or undefined
  if (null == obj || "object" != typeof obj) return obj;
 
  // Handle Date
  if (obj instanceof Date) {
    var copy = new Date();
    copy.setTime(obj.getTime());
    return copy;
  }
 
  // Handle Array
  if (obj instanceof Array) {
    var copy = [];
    for (var i=0; i<obj.length; ++i) {
      copy[i] = clone(obj[i]);
    }
    return copy;
  }
 
  // Handle Object
  if (obj instanceof Object) {
    var copy = {};
    for (var attr in obj) {
      if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
    }
    return copy;
  }
 
  throw new Error("Unable to copy obj! Its type isn't supported.");
}
//不传d:默认四舍五入保留两位小数 (***解决舍入误差)
function round(num,d){
	if(d==0){
		d=d;
	}else{
		d=d||2;
	}
	//Step1:将num放大10的d次方倍
	num*=Math.pow(10,d);
	//Step2:对num四舍五入取整
	num = Math.round(num);
	//Step:返回num缩小10的d次方倍,获得最终结果
	return num/Math.pow(10,d);
}

//滚动条
function scroll(obj){
	$(obj.id).niceScroll({
		cursorcolor: obj.color||"#59C7EF",
		autohidemode:obj.autohidemode||false,
		zindex:200,
		cursorwidth:obj.cursorwidth||"10px",
		cursorborderradius:obj.cursorborderradius||"10px",
		cursorborder:obj.cursorborder||"1px solid #59C7EF"
	});
};

//更新滚动条
function resizeScroll(obj){
	$(obj.id).getNiceScroll().resize();
}

//定义serializeObject方法,序列化表单
$.fn.serializeObject = function() {
	var o = {};
	var a = this.serializeArray();
	$.each(a, function() {
		if (o[this.name]) {
			if (!o[this.name].push) {
				o[this.name] = [ o[this.name] ];
			}
			o[this.name].push(this.value || '');
		} else {
			o[this.name] = this.value || '';
		}
	});
	return o;
};

/*面向对象编程
 * 特点:
 * 	1.封装
 * 	2.继承
 * 	3.多态
 * */
/*继承的方法*/
//原型式继承
//原型式继承其实就是类式继承的封装,实现的功能是返回一个实例,改实例的原型继承了传入的o对象
function inheritObject(o) {
    //声明一个过渡函数对象
    function F() {};
    //过渡对象的原型继承父对象
    F.prototype = o;
    //返回一个过渡对象的实例,该实例的原型继承了父对象
    return new F();
}
//寄生式继承
//寄生式继承就是对原型继承的第二次封装,使得子类的原型等于父类的原型。并且在第二次封装的过程中对继承的对象进行了扩展
function inheritPrototype(subClass, superClass){
    //复制一份父类的原型保存在变量中,使得p的原型等于父类的原型
    var p = inheritObject(superClass.prototype);
    //修正因为重写子类原型导致子类constructor属性被修改
    p.constructor = subClass;
    //设置子类的原型
    subClass.prototype = p;
}
/*
 * 继承使用方法:
    //定义父类
    var SuperClass = function (name) {
        this.name = name;
        this.books = ['javascript','html','css']
    };
    //定义父类原型方法
    SuperClass.prototype.getBooks = function () {
        console.log(this.books)
    };

    //定义子类
    var SubClass = function (name) {
        SuperClass.call(this,name)
    }

    inheritPrototype(SubClass,SuperClass);

    var subclass1 = new SubClass('php')
*/

//函数用来解析来自URL的产讯传中的name = value参数对,并将其存储在一个对象的属性中,并且返回该对象
function urlArgs(){
    var args = {};
    var query = location.search.substring(1);
    var pairs = query.split("&");
    for(var i = 0;i < pairs.length; i++){
        var pos = pairs[i].indexOf("=");
        if(pos == -1) continue;
        var name = pairs[i].substring(0, pos);
        var value = pairs[i].substring(pos + 1);
        value = decodeURIComponent(value);
        args[name] = value;
    }
    return args;
}
/*
 * 使用方法
 * var args = urlArgs();
 * var q = args.q || "";
 * var n = args.n ? parseInt(args.n) : 10;
 */

猜你喜欢

转载自blog.csdn.net/qq_36784628/article/details/85335326