servlet下利用json-lib

摘要: 在做《资治通鉴》、《书目》项目时采用的是struts2框架,用了struts2的json插件jsonplugin-0.30.jar输出json数据。此插件很强大,能输出各种复杂javaBean。在 http://www.json.org 上提供了各种语言转成json的开源lib。试用了下org.json ,对于java基本类型,list、map没有问题。对于复杂javaBean(如一个list里存放的是Person类型的对象,Person又具有Map等类型的属性)显得力不从心了。这里采用了json-lib ,目前最新版本是2.4(json-lib-2.4-jdk15.jar )。它实现了以下功 阅读全文
posted @ 2011-03-15 09:18 snandy 阅读(3119) 评论(0) 推荐(1) 编辑

重写的isPlainObject方法

摘要: jq1.4中新增了个静态方法$.isPlainObject,见http://api.jquery.com/jquery.isPlainObject/ 。对于通过字面量定义的对象和new Object的对象返回true,new Object时传参数的返回false,如var p1 = new Object;p1.name = 'tom';var o1 = new Object('aa');console.log($.isPlainObject({name:'Jack'})); //-> trueconsole.log($.isPlainObj 阅读全文
posted @ 2011-03-14 09:27 snandy 阅读(3061) 评论(3) 推荐(4) 编辑

用事实证明cssText性能高

摘要: 首先要感谢 EtherDream 的不同观点,在 巧用cssText属性批量操作样式 一篇中由于他的质疑态度使我做了进一步的测试。<!DOCTYPE HTML><html><head><meta charset="gbk"><title>事实证明cssText在多数浏览器中性能较高</title></head><body><input type="button" value="测试1" onclick="test1()&qu 阅读全文
posted @ 2011-03-13 22:11 snandy 阅读(3853) 评论(13) 推荐(4) 编辑

关于new Object时传参的一些细节

摘要: 这里讨论给Object传参时,其内部的处理。参考:ECMA262 V5 15.2.2.11, 参数是一个对象,核心js对象(native ECMAScript object)或宿主对象(host object),那么将直接返回该对象。 其生成的对象构造器仍然是所传参数对象的构造器。这样造成的后果是虽然该对象是new Object,但其constructor不一定是Object。function Person(){this.name='jack';}var w = new Object(window), d = new Object(document), p = new Obje 阅读全文
posted @ 2011-03-13 13:18 snandy 阅读(3596) 评论(0) 推荐(2) 编辑

字符串转换成JSON的三种方式

摘要: 采用Ajax的项目开发过程中,经常需要将JSON格式的字符串返回到前端,前端解析成JS对象(JSON )。ECMA-262(E3) 中没有将JSON概念写到标准中,但在 ECMA-262(E5) 中JSON的概念被正式引入了,包括全局的JSON对象和Date的toJSON方法。1,eval方式解析,恐怕这是最早的解析方式了。function strToJson(str){ var json = eval('(' + str + ')'); return json;}记得str两旁的小括号哦。2,new Function形式,比较怪异哦。function strT 阅读全文
posted @ 2011-03-13 09:03 snandy 阅读(111853) 评论(6) 推荐(7) 编辑

字符串转成数字的多种方式

摘要: 如下typeof Number('44.5');typeof parseInt('44.5');typeof parseFloat('44.5');typeof ('44.5'-0);typeof +'44.5';typeof ('44.5'*1);typeof ~~'44.5';//http://james.padolsey.com/javascript/double-bitwise-not/typeof '44.5'|0还有其它的吗? 阅读全文
posted @ 2011-03-13 07:56 snandy 阅读(1299) 评论(2) 推荐(2) 编辑

将HTMLCollection/NodeList/伪数组转换成数组

摘要: 这里把符合以下条件的对象称为伪数组(ArrayLike)1,具有length属性2,按索引方式存储数据3,不具有数组的push,pop等方法如1,function内的arguments 。2,通过document.forms,Form.elements,document.styleSheets, S... 阅读全文
posted @ 2011-03-12 17:15 snandy 阅读(10818) 评论(9) 推荐(8) 编辑

IE6/7和IE8/9(怪异模式)浮动元素折行Bug

摘要: 网页设计中,我们经常需要设置一个元素向左或向右浮动。如<!DOCTYPE HTML><html><head> <title>IE6/7和IE8/9(怪异模式)浮动元素折行Bug</title> <meta charset="utf-8"></head><body><div style="width:300px;border:1px solid gray;padding:5px;"> <input type="text" / 阅读全文
posted @ 2011-03-12 15:52 snandy 阅读(2482) 评论(5) 推荐(0) 编辑

巧用cssText属性批量操作样式

摘要: 给一个HTML元素设置css属性,如var head= document.getElementById("head");head.style.width = "200px";head.style.height = "70px";head.style.display = "block";这样写太罗嗦了,为了简单些写个工具函数,如function setStyle(obj,css){ for(var atr in css){ obj.style[atr] = css[atr]; }}var head= document 阅读全文
posted @ 2011-03-12 08:25 snandy 阅读(30915) 评论(12) 推荐(13) 编辑

判断元素是否为HTMLElement元素

摘要: 我们经常使用nodeType==1判断元素是否是一个HMTLElement元素。页面上的元素都是节点(Node),有元素节点(Element Node)、属性节点(Attribute Node)、文本节点(Text Node)等。w3c nodeType 的定义如下const unsigned short ELEMENT_NODE = 1; const unsigned short ATTRIBUTE_NODE = 2; const unsigned short TEXT_NODE = 3; const unsigned short CDATA_SECTION_NODE = 4; const 阅读全文
posted @ 2011-03-12 07:11 snandy 阅读(7050) 评论(4) 推荐(1) 编辑

IE6/7/8下cssText值与IE9/Firefox/Safari/Chrome/Opera不同

摘要: 一,结尾没有分号如下<div style="color:red;">TEST</div><script> var div = document.getElementsByTagName('div'); alert(div[0].style.cssText);</script>各浏览器输出如下IE6/7/8 :IE9/Firefox/Chrome/Safari/Opera :可以看到IE6/7/8中少了分号。二,属性名(color)是大写的,见上图三,复合属性全部展开如下<div style="b 阅读全文
posted @ 2011-03-11 13:59 snandy 阅读(3440) 评论(9) 推荐(2) 编辑

JavaScript中同名标识符优先级

摘要: 一,局部变量先使用后声明,不影响外部同名变量var x = 1; // --> 外部变量xfunction fn(){ alert(x); // --> undefined 局部变量x先使用 var x = 2; // 后声明且赋值}fn();alert(x); // --> 1第一点,函数fn内第一句输出x,x是在第二句才定义的。这在JS中是允许的,这里的允许是指不会出现语法错误程序可以运行。但在其它语言如C,Java中却是不允许的。变量必须先声明后使用,如public class Test { public static void main(String[] args) 阅读全文
posted @ 2011-03-11 10:17 snandy 阅读(3825) 评论(6) 推荐(8) 编辑

children和childNodes

摘要: 1,childNodes 属性,标准的,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本。可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点。有些人错误的使用()去取该集合元素,下表列出各浏览器对childNodes(i)的支持情况:IE6/7/8/Safari/Chrome/OperaIE9/FirefoxchildNodes(i)支持不支持有时候需要获取指定元素的第一个HTML子节点(非属性/文本节点),最容易想到的就是firstChild 属性。代码中第一个HTML节点前如果有换行,空格,那么firstChi 阅读全文
posted @ 2011-03-11 08:30 snandy 阅读(32559) 评论(6) 推荐(9) 编辑

Firefox/Safari/Chrome绝对定位元素重叠造成不可点击问题

摘要: 51ditu地图网站开发过程中碰到的,Firefox/Safari/Chrome下(无论诡异模式或标准模式)当两个绝对定位的div发生重叠(即一个div盖在另一个div上)时,下面的div变得不可点击了。解决的方法是设置z-index,z-index值大的就可以点击了。而IE下,即使z-index值高的div,下面的div中的button仍然可以点击。<!DOCTYPE HTML><html> <head> <title>Firefox/Safari/Chrome绝对定位元素重叠造成不可点击问题</title> <meta ch 阅读全文
posted @ 2011-03-11 08:27 snandy 阅读(2995) 评论(1) 推荐(0) 编辑

IE6/7/8/9怪异模式和IE6标准模式中多余字符Bug

摘要: 怪异模式中IE6/7/8/9均会产生此bug,标准模式中IE6会产生此bug,但条件稍微有些不同(外层div需指定宽度)。先看怪异下:div中包含的span都向左浮动,.tltle和.intro的宽度都是50%,这时候在IE6,7,8上都会出现一个多余的'e'。当然.title和.intro的宽度百分比可以任意指定,只要两者加起来为100%即可。<html> <head> <title>怪异模式中IE6,7,8多余字符bug</title> <meta charset="utf-8"> <st 阅读全文
posted @ 2011-03-10 17:12 snandy 阅读(2171) 评论(4) 推荐(2) 编辑

JavaScript继承方式(4)

摘要: 4,继承工具函数四/** * @param {String} className * @param {String/Function} superClass * @param {Function} classImp */function $class(className, superClass, classImp){ if (superClass === '') superClass = Object; function clazz() { if (typeof this.init == "function") { this.init.apply(th... 阅读全文
posted @ 2011-03-10 12:14 snandy 阅读(2729) 评论(9) 推荐(2) 编辑

JavaScript继承方式(3)

摘要: 3,继承工具函数三/** * @param {Function} subCls * @param {Function} superCls */function extend(subCls,superCls) { subCls.prototype = new superCls(); }父类,按原型方式写,即属性和方法都挂在原型上。/** * 父类Person */function Person(){}Person.prototype.nationality = 'China';Person.prototype.getNationality = function() {return 阅读全文
posted @ 2011-03-10 07:19 snandy 阅读(3144) 评论(5) 推荐(4) 编辑

JavaScript继承方式(2)

摘要: 这篇开始写几个工具函数实现类的扩展。每个工具函数都是针对特定的写类方式(习惯)。这篇按照构造函数方式写类:属性(字段)和方法都挂在this上。以下分别提供了个类,分别作为父类和子类。// 父类Personfunction Person(nationality) { this.nationality = nationality; this.setNationality = function(n) {this.nationality=n;}; this.getNationality = function() {return this.nationality;};}// 类Manfunction . 阅读全文
posted @ 2011-03-09 18:38 snandy 阅读(3546) 评论(0) 推荐(6) 编辑

JavaScript继承方式(1)

摘要: 前段时间温故了下JS OO之写类方式,从这篇开始我们看看JS OO之继承方式。 面向对象的语言多数都支持继承,继承最重要的优点就是代码复用,从而构建大型软件系统。如果一个类能够重用另一个类的属性和或方法,就称之为继承。从这个角度来看看JS的继承方式。JS中继承方式与写类方式息息相关。不同的写类方式造 阅读全文
posted @ 2011-03-09 13:36 snandy 阅读(9817) 评论(10) 推荐(11) 编辑

设置HTML元素的透明度

摘要: W3C标准属性是opacity,现代浏览器都支持,但IE6/7/8却不支持该属性。在Firefox,Safari,Opera,Chrome中测试都支持opacity。如设置div的透明度为40%。<!DOCTYPE HTML><html> <head> <title>set div opacity</title> <style> .wrapper { border:solid 1px gray; opacity:0.4; } </style> </head> <body> <div 阅读全文
posted @ 2011-03-09 09:18 snandy 阅读(37115) 评论(0) 推荐(0) 编辑

JS实现自定义右键菜单

摘要: 在灵图时做的,效果如下Demo效果图Demo源码如下 JS实现自定义右键菜单 后退 前进 地图api 实时交通 地图搜索 驾驶导航 灵图UU 路书下载 关于本站 友情链接 右键此区域 阅读全文
posted @ 2011-03-09 08:08 snandy 阅读(47910) 评论(12) 推荐(3) 编辑

使用滤镜设置透明导致 IE 6/7/8/9 解析异常

摘要: 如下<div style="width:100px;height:100px;background:gold"></div>用IE开发者工具,或IE8自带的开发者工具。结构如 图1 :红色所圈之处可以看到给div添加的内联样式width,height,background都依次排列。正常!但给该div添加filter:alpha(opacity=20)后,<div style="filter:alpha(opacity=20);width:100px;height:100px;background:gold">< 阅读全文
posted @ 2011-03-09 07:56 snandy 阅读(2964) 评论(12) 推荐(2) 编辑

各浏览器中定位元素遮盖其它元素差异性

摘要: 有时需要用绝对定位元素去遮盖其它元素。多数时候没有什么问题。如果被遮盖的元素添加了鼠标事件(如点击事件),各浏览器下表现则不太一样了。1,绝对定位元素(未设置background)遮住Input元素,只在IE/Opera中,Input的点击事件能触发。.container{ width:200px; height:100px; border:1px solid red; position:relative;}<div class="container"> <input type="button" value="click me 阅读全文
posted @ 2011-03-08 22:07 snandy 阅读(2657) 评论(2) 推荐(0) 编辑

Javascript小括号“()”的多义性

摘要: Javascript中小括号有五种语义语义1,函数声明时参数表function func(arg1,arg2){ // ...}语义2,和一些语句联合使用以达到某些限定作用// 和for in一起使用for(var a in obj){ // ...}// 和if一起使用if(boo){ //...}// 和while一起使用while(boo){ // ...}// 和do while一起使用do{ // ...}while(boo)注意:在与if、while及do while一起使用时小括号会将其中的表达式结果隐式的转换成布尔值。见 JavaScript中的隐式类型转换 。语义3... 阅读全文
posted @ 2011-03-08 17:34 snandy 阅读(31283) 评论(7) 推荐(6) 编辑

Javascript中括号“[]”的多义性

摘要: Javascript中括号有四种语义语义1,声明数组var ary = []; // 声明一个空数组var ary = [1,3]; // 声明一个数组,同时赋初值语义2,取数组成员var ary = [1,2,3];var item = ary[0];语义3,定义对象成员 (可以不遵循标识符规则 )var obj = {};// 为obj添加一个属性name,name是合法的标识符,即也可以通过obj.name方式来定义obj['name'] = 'jack'; // 为obj添加一个属性2a,2a不是合法的标识符(不能以数字开头),不能通过obj.2a来定义 阅读全文
posted @ 2011-03-08 13:11 snandy 阅读(3836) 评论(6) 推荐(4) 编辑