1、拼接字符串时使用substring方法进行截取避免每次都判断:
在拼接字符串时需要遵从指定的格式(如用逗号隔开),后面进行取值或验证时可以按照前面的规则去除结果。但拼接的第一个值,前面往往是不需要加逗号的,通过的做法是加if判断,如果是第一个数据或拼接的字符串若为空,就不加逗号,这样子是可以解决问题,若要拼接的数据过多,每次都判断会很影响性能。个人觉得比较快刀斩乱麻的方式是直接用substring方法进行截取。如下面的例子:
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
String str1="";
for(int i=0;i<10000;i++){
if(i==0){
str1+=i;
}else{
str1+=","+i;
}
}
System.out.println(str1);
long endTime = System.currentTimeMillis();
System.out.println("执行该方法所需时间:"+(endTime-startTime));//output:376
long startTime2 = System.currentTimeMillis();
String str2="";
for(int i=0;i<10000;i++){
str2+=","+i;
}
if(str2.length()>0){
str2=str2.substring(1);
}
System.out.println(str1);
long endTime2 = System.currentTimeMillis();
System.out.println("执行该方法所需时间:"+(endTime2-startTime2));//output:320
}
2、创建Jquery对象:
平常大部分情况都是用Jquery获取已经存在的对象,今天要凭空弄一个对象出来,对于网上说的,用new关键字来new一个Jquery对象我不太在行,就自己认为的方法定义了一个,如下:
var func = ""; var $function = $(func); $function.attr({"functionID":77777,"funViewID":viewID,"rViewID":0,"tableListID":tableListId}); alert($function.attr(viewID)+" "+$function.attr(tableListId));alert出来竟然是两个undefined,不知道为什么?后来参照网上的方法(参考链接: http://www.jb51.net/article/33403.htm)定义成下面这样子的:
var func = ""; var $function = $("<input>",{"id":"editRowFunc"}); $function.attr({"functionID":77777,"funViewID":viewID,"rViewID":0,"tableListID":tableListId}); alert($function.attr(viewID)+" "+$function.attr(tableListId));成功alert。
3、JS调用字符串类型的方法
最近做一应用碰到一个问题,一个onlick事件上面绑定两个方法。要是正常的拼接代码那绝对是没问题的,直接在onclick事件上面写上两个方法名称即可,但问题通常都是不正常的。我这个onclic事件只能绑定一个(不是不能绑定两个,而是没法绑定两个),没办法,只能把触发事件的名称写在了标签上的属性中,类似于:
<input onclic="aaa();" id='testInput' type="button" scriptEvent="bbb" />
在aaa方法中处理完了之后,获取scriptEvent的属性值,然后再执行这个方法,具体方法如下:
var scriptEvent = $("#testInput").attr("scriptEvent"); if(!isempty(scriptEvent)){//说明有绑定事件 if(scriptEvent.indexOf("(")>0){//处理自带了()的情况 scriptEvent = scriptEvent.substring(0,scriptEvent.indexOf("(")); } //执行方法 eval(scriptEvent+"('"+val+"')");//val是要传递的参数值 }
4、IE11中导入Excel时总是找不到文件
最近弄一个导Excel数据的功能,IE8中很正常,IE11和火狐中老是出错,说文件找不到。大概业务是这样子的:选择文件之后,通过 AJAX 进行文件上传,返回文件名称给页面,页面通过 AJAX 将名称传递给后台,后台读取 Excel 并返回。正常情况下,返回的文件名称是 Object 类型的,其值是字符串类型,且只有一个文件名称。但是在 IE11 或火狐中,这个 Object 的值除了文件名称之后还有一个隐藏的“ \r\n ”即换行符号,因此传递到后台的文件名称也有一个换行符,再根据这个含有了换行符的路径去找文件,必然找不到,所以就找不到文件啦。解决:将Object类型的文件名称转换成String类型,然后用replace将\r、\n替换成空字符串。
用代码表示就是这样子的:
fileName = fileName.toString();//转换成字符串进行替换
fileName = fileName.replace("\r","").replace("\n","");//将换行符替换成空字符串
5、使用JS判断文件类型:
/** * 该方法根据文件的后缀名判断文件类型 * @param fileType:文件格式 * */ function getFileType(fileType){ var flag=0; if(fileType!=null && fileType.length>0){ fileType = jQuery.trim(fileType); switch(fileType){ //图片格式 case "gif":flag=1;break; case "jpg":flag=1;break; case "jpeg":flag=1;break; case "png":flag=1;break; case "bmp":flag=1;break; //office格式 case "doc":flag=2;break; case "docx":flag=2;break; case "xls":flag=2;break; case "xlsx":flag=2;break; case "ppt":flag=2;break; case "txt":flag=2;break; //视频格式 case "mp4":flag=3;break; case "avi":flag=3;break; case "wmv":flag=3;break; case "rmvb":flag=3;break; case "rm":flag=3;break; case "flv":flag=3;break; case "flash":flag=3;break; case "mp4":flag=3;break; case "3gp":flag=3;break; case "mpg":flag=3;break; case "vob":flag=3;break; } //或者使用EL表达式 if((/(?:jpg|gif|png|jpeg|bmp)$/i.test(fileType))){ fileType="1"; }else if((/(?:doc|docx)$/i.test(fileType))){ fileType="2"; }else if((/(?:xls|xlsx)$/i.test(fileType))){ fileType="3"; }else if((/(?:rar|zip)$/i.test(fileType))){ fileType="4"; } } return flag; }