小积累
类似于这样子的JSON串:
[{"6":[["填空题",1,0],["判断题",1,0],["作文",1,0]]}]
也就是以数字作为KEY值的JSON串。
如果按照通常的方式去解析:
var obj = jQuery.parseJSON(t);
通过obj.6来获取KEY为6的value值是会报错的,说JSON的KEY值不能是数字。
此时可以用类似于数组的方式来取:obj[6]
这样就取出KEY值是“6”的value值了。
当KEY值为6的时候处理起来太麻烦了,还得跟别人不一样,怪不得在注册用户、命名的时候不然以数字打头了,通过这么个例子可见一斑了。
另外,对于类似于数组一样的取值方法,想到了经常用的一种情况:数据库里面定义了一些关键字,这些关键字我们不能随便用,但是有时候为了“见名知意”的原则还是会用上关键字,可是人家不让用啊,怎么办呢?加个中括号,加上去之后好像数据库就不认它了,把它当做咱们的了。
摘自: http://747017186.iteye.com/blog/2071201
2、事件冒泡
最简单的例子:
function fuDIV(){ alert("父DIV事件"); }
function ziDIV(){ alert("子DIV事件");}
<div style="width: 500px;height: 400px;" onclick="fuDIV();">
<div style="width: 300px;height: 200px;" onclick="ziDIV();"></div>
</div>
点击子级DIV的时候,子级的事件会触发(弹出“子DIV事件”),同时父级的DIV也会触发(弹出“父DIV事件”),为什么会这样子?因为事件冒泡。
事实上,页面上的元素事件是这样传播的:
最里面的元素事件触发(子级)——外层元素事件触发(父级)——页面事件触发(页面级)
由于子级DIV嵌套在父级DIV内部,所以在点击子级DIV时,因为事件的传播,子级的事件也传播到父级了,此时父级的DIV也点击了,所以子级DIV的click事件会被触发,父级DIV的click事件也会被触发。
但是这种大部分时候都不是我们想要的,我们仅仅想让子DIV的事件触发,父DIV事件不触发。我们可以采取这个方式:
在子级执行的方法里面添加代码:event.stopPropagation();
function ziDIV(event){
alert("子DIV事件");
event.stopPropagation(); //阻止子事件向父事件冒泡
}
摘自:http://747017186.iteye.com/blog/2071567
3、让数字不显示成科学计数法
有时候数据过大时(主要是double类型),数据会自动用科学计数法显示,不好看且不太容易看明白,因此需要处理一下。
a、用Java代码处理:
double str=31455555555555555555555555555555555555555555555d;//很大的数
DecimalFormat format=(DecimalFormat)NumberFormat.getPercentInstance(); //取得一个模板
format.applyPattern("#####0"); //前面是非数字,如果不是数字则0补充
String temp=format.format(str); //格式化
System.out.println(temp);//这样就变成字符串了,不需要科学计数法了
b、用JS处理:
var i=3.14E10;
var no=new Number(i);
alert(no);
c、用fmt标签处理:
首先导入fmt标签:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
然后设置格式格式化数据:
<fmt:formatNumber value="3.14E10" maxIntegerDigits="10" maxFractionDigits="4" pattern="####.####"></fmt:formatNumber>。
fmt标签的详细用法可以参考:
http://lvhjean.iteye.com/blog/1221055、
http://blog.csdn.net/itchiang/article/details/7749081
摘自:http://747017186.iteye.com/blog/2152720
4、使用Jquery解析XML格式的字符串:
JS提交参数及返回数据情况如下:
$.post("loginRouter!login.action",{"flag":1,"time":new Date().getTime()},function(data){ if(data.length>1){ //后台返回的数据格式为:response.setContentType("text/html"); //返回数据格式如下:<tsp><num>10</num><liStr>.....</liStr></tsp> data = $.parseXML(data);//先使用jQuery的parseXML方法转换成Jquery的XML对象 var num = $(data).find('num').text();//数量 var liStr = $(data).find('liStr').text();//拼接的HTML alert(num+"\n"+liStr); } });
5、变量命名规则:
a、Camel标记法——即有名的骆驼标记法,首字母小写,接下来的单词都以大写字母打头,如:
var myTestValue=0,mySecondTestValue="0";
b、Pascal标记法——首字母大写,接下来的单词都以大写字母打头,如:
var MyTestValue=0,MySecondTestValue="0";
c、匈牙利类型标记法——在以Pascal标记命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。如:i表示整数,s表示字符串。变量举例如下:
var iMyTestValue=0,sMySecondTestValue="0";
下表列出了匈牙利类型标记法定义变量所使用的前缀名称:
序号 |
类型 |
前缀 |
示例 |
1 |
数组(array) |
a |
aFirstValues,aSecondValues |
2 |
布尔型(boolean) |
b |
bFirstValues,bSecondValues |
3 |
浮点型(数字,float) |
f |
fFirstValues,fSecondValues |
4 |
函数(function) |
fn |
fnFirstValues,fnSecondValues |
5 |
整型(数字,int) |
i |
iFirstValues,iSecondValues |
6 |
对象(object) |
o |
oFirstValues,oSecondValues |
7 |
正则表达式(Regular Expression) |
re |
reFirstValues,reSecondValues |
8 |
字符串(String)() |
s |
sFirstValues,sSecondValues |
9 |
变型(可以是任何类型) |
v |
vFirstValues,vSecondValues |