<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_楼兰之风...</title><subtitle type="text">情绪稳定、很明真相、没有用心的程序猿...</subtitle><id>http://feed.cnblogs.com/blog/u/41910/rss</id><updated>2011-06-15T08:47:29Z</updated><author><name>lola</name><uri>http://www.cnblogs.com/xiehuiqi220/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiehuiqi220/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/41910/rss"/><entry><id>http://www.cnblogs.com/xiehuiqi220/archive/2011/05/20/2052148.html</id><title type="text">JavaScript的sort函数报“缺少数字”错误的原因、分析与疑惑</title><summary type="text">分析了JavaScript的sort函数报“缺少数字”错误的原因，并提出了一些疑问</summary><published>2011-05-20T08:39:00Z</published><updated>2011-05-20T08:39:00Z</updated><author><name>lola</name><uri>http://www.cnblogs.com/xiehuiqi220/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiehuiqi220/archive/2011/05/20/2052148.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiehuiqi220/archive/2011/05/20/2052148.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&lt;p&gt;我们知道，js的数组具有一个sort方法，这个sort方法还可以传入一个特定形式的比较函数进行自定义排序，它的用法类似这样：&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;[&lt;/span&gt;&lt;span style="color: #000000;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;7&lt;/span&gt;&lt;span style="color: #000000;"&gt;].sort(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(a,b){&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;(a&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;b);});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;这个特定形式的自定义比较函数，要求有两个参数，通常情况下，函数的内容是两个参数本身或其属性的对比，该函数的返回值必须为负数、0和正数之一。另外sort函数会改变数组，而不是返回一个新的数组。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;最近我的一段js代码使用了js数组的自定义排序，在ie8和ff4下正常，然而在ie6和ie7下报&amp;#8220;缺少数字&amp;#8221;错误，经过研究发现，是自定义比较函数的返回值出现了NaN这个非数字造成的，这种情况下，ie6和ie7直接报错，而ie8和ff4不会报错，如下的代码可以可以重现这个问题：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;arr&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;[&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{o:&lt;/span&gt;&lt;span style="color: #000000;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;,toString:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(){&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.o}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{o:undefined,toString:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(){&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.o}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{o:&lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,toString:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(){&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.o}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{o:&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,toString:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(){&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.o}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr.sort(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(a,b){&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;a.o&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;b.o;});&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;使用元素的o属性进行比较&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;debug.innerHTML&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;arr;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;由于数组arr中有一个元素的o属性没有定义，因此比较函数中会出现数字与undefined相减的情况，结果就是NaN，于是ie6和ie7报错了，截图如下：&lt;br /&gt;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;解决这个问题的办法，就是避免自定义比较函数返回非数字。但是ie8为什么不报错呢？难道ie8下传给sort函数的比较函数返回NaN不抱错吗？答案是肯定的，当比较函数的返回值为NaN的话，ie8不会报错，但是排序结果会发生一些不可预料的变化，上面同样的代码，在ie8下的结果是：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;,undefined,&lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;这个结果令我疑惑，如果把arr改成：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;arr&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;[&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{o:&lt;/span&gt;&lt;span style="color: #000000;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;,toString:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(){&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.o}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{o:&lt;/span&gt;&lt;span style="color: #000000;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;,toString:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(){&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.o}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{o:undefined,toString:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(){&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.o}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{o:&lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,toString:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(){&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.o}},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{o:&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,toString:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(){&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.o}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;则排序后结果是：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;,undefined&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;如果我把o属性未定义的元素移到o属性为3的元素下面，则返回结果是：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;,undefined,&lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;这正是我的疑惑，如果你知道答案，请不吝赐教。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;那么ie8的sort的自定义比较函数是不是无论返回什么都不报错呢？答案是否定的，如果我把比较函数的返回值硬编码成&amp;#8220;return &amp;#8220;#@#@&amp;#8221;&amp;#8221;，则ie8也报错了：&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;因此，我认为ie8的的sort函数，相比IE6和ie7，至少进行了体验上的优化，即如果发现自定义比较函数的返回值是NaN，则不报错，只是排序可能会出现非预期的结果而已，但是如果返回值是字符串，则将严惩不贷，弹出令人震惊的错误框。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #0000FF;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xiehuiqi220/aggbug/2052148.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiehuiqi220/archive/2011/05/20/2052148.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiehuiqi220/archive/2009/10/31/1593481.html</id><title type="text">小议程序员的视野</title><summary type="text">关于视野，我以前就有很多想法，因为我经常由于视野不宽而走弯路，因此觉得视野太重要了，比智商和技术更重要。 　　我以前做ajax应用的时候不知何为异步何为同步，更不知何为回调，总觉得程序应该是一条一条执行下去的，上一语句还在执行的时候不可能会执行下一语句的，因此在写xmlhttp的时候，总是不知道把async属性设为true，而是按部就班地先发出请求，然后等待返回的结果，当时还纳闷说，ajax这么流...</summary><published>2009-10-31T05:15:00Z</published><updated>2009-10-31T05:15:00Z</updated><author><name>lola</name><uri>http://www.cnblogs.com/xiehuiqi220/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/10/31/1593481.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/10/31/1593481.html"/></entry><entry><id>http://www.cnblogs.com/xiehuiqi220/archive/2009/08/15/1546375.html</id><title type="text">sql server和oracle行转列的一种典型方法</title><summary type="text">前言：网上有不少文章是讲行转列的，但是大部分都是直接贴代码，忽视了中间过程，本人自己思考了下为什么要这样实现，并且做了如下的笔记，对有些懂的人来说可能没有价值，希望对还不懂的人有一点借鉴意义。对于有些业务来说，数据在表中的存储和其最终的Grid表现恰好相当于把源表倒转，那么这个时候我们就碰到了如何把行转化为列的问题，为了简化问题，我们且看如下查询出来的数据，您不必关心表的设计以及sql语句： 假设...</summary><published>2009-08-15T06:36:00Z</published><updated>2009-08-15T06:36:00Z</updated><author><name>lola</name><uri>http://www.cnblogs.com/xiehuiqi220/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/08/15/1546375.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/08/15/1546375.html"/></entry><entry><id>http://www.cnblogs.com/xiehuiqi220/archive/2009/07/13/1522860.html</id><title type="text">湮灭的风流－基于JavaScript的CSS技术概览</title><summary type="text">自从CSS出现以来，就有厂商希望CSS能够更加灵活一点，最早的CSS动态化体现为&amp;ldquo;动态表达式&amp;rdquo;（或动态属性，Dynamic attribute）的构想，动态表达式的构想也许是源自于以下的一些场景：　　元素的尺寸或者位置由浏览器或者html文档来计算　　使用变量作为style属性的值，比如频繁使用的颜色，用一个全局变量　　包括浏览器的鼻祖Netscape以及IE浏览器都试图在...</summary><published>2009-07-13T14:46:00Z</published><updated>2009-07-13T14:46:00Z</updated><author><name>lola</name><uri>http://www.cnblogs.com/xiehuiqi220/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/07/13/1522860.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/07/13/1522860.html"/></entry><entry><id>http://www.cnblogs.com/xiehuiqi220/archive/2009/05/30/1492385.html</id><title type="text">doodads指南-基本CRUD操作</title><summary type="text">这篇文章是续《小巧优美的ORM框架-doodads入门指南》的，在上篇文章，我讨论了喜爱doodads的理由：轻巧，部署简单，文件少且小，开源免费简单，不支持关系映射，不支持多表操作，所有的实现必须您亲自写sql或建立视图来实现依赖存储过程，间接地提高性能不过，其官方网站宣称已经不再维护doodads了，尽管如此，如果您发现您的项目适合doodads而你暂时又没有找到其他的框架，另外学习时间有限的...</summary><published>2009-05-30T11:40:00Z</published><updated>2009-05-30T11:40:00Z</updated><author><name>lola</name><uri>http://www.cnblogs.com/xiehuiqi220/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/05/30/1492385.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/05/30/1492385.html"/></entry><entry><id>http://www.cnblogs.com/xiehuiqi220/archive/2009/05/27/1491173.html</id><title type="text">小巧优美的ORM框架-doodads入门指南</title><summary type="text">关于.net下的ORM框架，大家最为耳熟的可能就是NHibernate了，当然，很多公司正在使用自己开发的ORM框架，笔者至少见过3家不同公司的ORM框架，其实都是大同小异，借助于codesmith、mygeneration等代码生成工具，自己开发一个ORM框架也不是什么难事，关键的问题是，你能不能设计出代码优美简洁、功能灵活、定制方便以及部署容易的ORM框架。　　我去年开始热衷NHibernat...</summary><published>2009-05-27T15:59:00Z</published><updated>2009-05-27T15:59:00Z</updated><author><name>lola</name><uri>http://www.cnblogs.com/xiehuiqi220/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/05/27/1491173.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/05/27/1491173.html"/></entry><entry><id>http://www.cnblogs.com/xiehuiqi220/archive/2009/05/17/1458995.html</id><title type="text">EmEditor的两个妙用</title><summary type="text">相信不少程序员喜欢使用Emeditor，我也经常推荐朋友使用这个工具，有时候就会有朋友问我，&amp;ldquo;这个工具有什么好啊，我现在还体会不到它的好处&amp;rdquo;，现在我就把平时积累的一些emeditor经验拿出来与大家分享，如果读者有一些其他的觉得适用的，可以留言或者联系我加入到本文。一、快速测试html、javascript（关键字：web预览插件，html模板）有时候我们想快速预览一段从其...</summary><published>2009-05-17T14:30:00Z</published><updated>2009-05-17T14:30:00Z</updated><author><name>lola</name><uri>http://www.cnblogs.com/xiehuiqi220/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/05/17/1458995.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/05/17/1458995.html"/></entry><entry><id>http://www.cnblogs.com/xiehuiqi220/archive/2009/02/20/1394643.html</id><title type="text">一分钟让您彻底领悟联动下拉列表的核心思路</title><summary type="text">这篇文章献给在10分钟之内不能写出最简单的联动下拉列表以及想了解写法的人相信80%的web程序员都使用过联动菜单，这其中又有至少50%的人使用过或只使用过省份、城市联动下拉列表，但是，这其中会有一部分人只是拿来主意，并不会自己写，而且望着网上繁杂庞大、各式各样的联动下拉代码产生了学习恐惧感，今天我用简化问题的策略来告诉大家，这样的代码其实很简单。所有的联动菜单归根到底都是对select元素的操作，...</summary><published>2009-02-20T03:23:00Z</published><updated>2009-02-20T03:23:00Z</updated><author><name>lola</name><uri>http://www.cnblogs.com/xiehuiqi220/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/02/20/1394643.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/02/20/1394643.html"/></entry><entry><id>http://www.cnblogs.com/xiehuiqi220/archive/2009/02/06/1385481.html</id><title type="text">正则表达式的零宽断言的一个小应用</title><summary type="text">先给出一个需求：数据表中有一列存储了一些脏字，比如：a*bc*de\*f...现在想把该字段所有的"*"号替换成"\*"，但是如果*号前面已经有了\，则不必替换如果你可以用正则表达式很快解决这个问题，可以不必看下面的文字 -------------------当然解决这个问题有很多方法，现在我们尝试用正则表达式去解决，查阅了很多资料，尤其是这篇文章：《正则表达式30分钟入门教程》版本：v2.3 (...</summary><published>2009-02-06T09:49:00Z</published><updated>2009-02-06T09:49:00Z</updated><author><name>lola</name><uri>http://www.cnblogs.com/xiehuiqi220/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/02/06/1385481.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiehuiqi220/archive/2009/02/06/1385481.html"/></entry><entry><id>http://www.cnblogs.com/xiehuiqi220/archive/2008/12/24/1361369.html</id><title type="text">Visual CSS 1.3 正式版（绿色版）博客园首发</title><summary type="text">本次重大修订： 代码自动完成 菜单栏快捷键，F5预览代码 其他小bug下载地址：/Files/xiehuiqi220/vcssGreen13.rar</summary><published>2008-12-24T06:20:00Z</published><updated>2008-12-24T06:20:00Z</updated><author><name>lola</name><uri>http://www.cnblogs.com/xiehuiqi220/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiehuiqi220/archive/2008/12/24/1361369.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiehuiqi220/archive/2008/12/24/1361369.html"/></entry></feed>
