`
阅读更多
1、解析KEY值为数字的JSON

 类似于这样子的JSON串:

 [{"6":[["填空题",1,0],["判断题",1,0],["作文",1,0]]}]

 也就是以数字作为KEY值的JSON串。

 如果按照通常的方式去解析:

 var obj = jQuery.parseJSON(t);

 通过obj.6来获取KEY6value值是会报错的,说JSONKEY值不能是数字。

 此时可以用类似于数组的方式来取: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也点击了,所以子级DIVclick事件会被触发,父级DIVclick事件也会被触发。 

但是这种大部分时候都不是我们想要的,我们仅仅想让子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

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics