欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小积累

程序员文章站 2022-04-28 10:58:56
...
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