﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-雪黛缘</title><link>http://www.cnblogs.com/zhuibobo/</link><description>    -寻找彼此的四叶草...zhuibobo</description><language>zh-cn</language><lastBuildDate>Sat, 11 Oct 2008 19:19:10 GMT</lastBuildDate><pubDate>Sat, 11 Oct 2008 19:19:10 GMT</pubDate><ttl>60</ttl><item><title>WebHL(模仿QQ写的Ajax程序)^_^</title><link>http://www.cnblogs.com/zhuibobo/archive/2008/01/09/1032434.html</link><dc:creator>zhuibobo</dc:creator><author>zhuibobo</author><pubDate>Wed, 09 Jan 2008 11:08:00 GMT</pubDate><guid>http://www.cnblogs.com/zhuibobo/archive/2008/01/09/1032434.html</guid><wfw:comment>http://www.cnblogs.com/zhuibobo/comments/1032434.html</wfw:comment><comments>http://www.cnblogs.com/zhuibobo/archive/2008/01/09/1032434.html#Feedback</comments><slash:comments>29</slash:comments><wfw:commentRss>http://www.cnblogs.com/zhuibobo/comments/commentRss/1032434.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zhuibobo/services/trackbacks/1032434.html</trackback:ping><description><![CDATA[<div class="postText">再放个两个月前写的东西上来~~web上模仿QQ的ajax程序,只限于ie....源码在下边~^_^,包括了数据库,实现了用户到用户与群的聊天功能,还有个人空间....<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/zhuibobo/1.jpg" /><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/zhuibobo/2.jpg" /><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/zhuibobo/3.jpg" />&nbsp;<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/zhuibobo/4.jpg" /><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/zhuibobo/13.jpg" /><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/zhuibobo/17.jpg" /><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/zhuibobo/18.jpg" /><br />
<a href="http://www.cnblogs.com/Files/zhuibobo/WebHL.rar">照常的源码</a><br />
接着继续学设计模式吧....恩..恩..</div>
 <img src ="http://www.cnblogs.com/zhuibobo/aggbug/1032434.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42945/" target="_blank">[新闻]Google股价跌破329美元 61%员工期权价值归零</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>JavaScript笔记(可以被钉住的层)</title><link>http://www.cnblogs.com/zhuibobo/archive/2008/01/08/1030363.html</link><dc:creator>zhuibobo</dc:creator><author>zhuibobo</author><pubDate>Tue, 08 Jan 2008 06:20:00 GMT</pubDate><guid>http://www.cnblogs.com/zhuibobo/archive/2008/01/08/1030363.html</guid><wfw:comment>http://www.cnblogs.com/zhuibobo/comments/1030363.html</wfw:comment><comments>http://www.cnblogs.com/zhuibobo/archive/2008/01/08/1030363.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/zhuibobo/comments/commentRss/1030363.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zhuibobo/services/trackbacks/1030363.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 前段时间写的,主要是因为页面太小了,隐藏一部分会看起来更好一些...大概嘛,就是这个样子的<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/zhuibobo/LockDiv.jpg" border="0" /><br />
本来是想把所有事件都集中到外层的div上处理的,就是注册mouseover和mouseout的事件就完成了,不过发现效果并不好,有两问题,<br />
1:文本输入框的时候,text的得到焦点的时候也应该是触发了mouseover的事件的了,而且ie下的事件机制是冒泡的,所以层并不会隐藏起来,还是可见的,不过当输入过程中鼠标移动出输入框焦点就会失去了.<br />
2:选择下拉列表的时候层就直接隐藏掉了..所以是肯定不行的了...<br />
后来想了一下,其实我们是可以把事件分开的...<br />
1:那个小图片负责将层显示出来.<br />
2.用<font face="Verdana">body</font>的事件将层隐藏掉,也就是<font face="Verdana">body</font>触发<font face="Verdana">onmouseover</font>的时候隐藏掉层的,不过前边说过事件的机制是冒泡的把,那如果一开始小图标的<font face="Verdana">onmouseover</font>事件然后接着冒泡的body的<font face="Verdana">onmouseover</font>事件,那我们做的不就白费了.所以我们要在小图标上阻止事件的冒泡才行<font face="Verdana">window.event.cancelBubble = true;</font><br />
3:既然隐藏的事件交给了<font face="Verdana">body</font>了,那小图钉的点击动作需要做的事件就是,钉住的时候就把<font face="Verdana">body</font>的mouseover的事件去掉.<br />
非钉住状态的时候把body的mouseover的事件注册上就ok了..<br />
4:为了pageLoag完我们还可以读取小图钉的前一个状态,就是显示与否,pageload完的时候客户端的保存状态应该都是被取消掉的了.所以加了一个<font face="Verdana">&lt;input type="hidden" value="" id="HidLockType" runat="server" /&gt;来让服务端可以读取<br />
<font face="Verdana">function ShowSearchDiv()//显示层<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var DivSearch=document.getElementById("DivSearch");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DivSearch.style.display="";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.event.cancelBubble = true;//阻止事件冒泡<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function HidSearchDiv()//隐藏层<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var DivSearch=document.getElementById("DivSearch");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DivSearch.style.display="none";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function SetClassName(sender,setclass)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sender.className=setclass;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function SetOnLock()//设置钉住状态<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var HidLockType=document.getElementById("HidLockType");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var sender=document.getElementById("ImgLock");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(HidLockType.value=="UnLock")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HidLockType.value="IsLock";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sender.src="Lock.jpg";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.body.onmouseover=null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var DivSearch=document.getElementById("DivSearch");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DivSearch.style.display="";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HidLockType.value="UnLock";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sender.src="UnLock.jpg";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.body.onmouseover=HidSearchDiv;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
呵呵 <br />
<a href="http://www.cnblogs.com/Files/zhuibobo/LockDiv.rar">照常的例子</a><br />
最近也开始看ext了,以后也帖点例子上来~^_^</font></font></p>
<img src ="http://www.cnblogs.com/zhuibobo/aggbug/1030363.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42944/" target="_blank">[新闻]十年祭:昔日明星软件今何在?</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>JavaScript笔记(带动画效果弹出的层)</title><link>http://www.cnblogs.com/zhuibobo/archive/2008/01/06/1028004.html</link><dc:creator>zhuibobo</dc:creator><author>zhuibobo</author><pubDate>Sun, 06 Jan 2008 10:33:00 GMT</pubDate><guid>http://www.cnblogs.com/zhuibobo/archive/2008/01/06/1028004.html</guid><wfw:comment>http://www.cnblogs.com/zhuibobo/comments/1028004.html</wfw:comment><comments>http://www.cnblogs.com/zhuibobo/archive/2008/01/06/1028004.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/zhuibobo/comments/commentRss/1028004.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zhuibobo/services/trackbacks/1028004.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 好久没写过js的东西了..从前一段时间痴迷过后,最近有见识到了ext的强大,不过嘛,写一些简单的,基础的实现还是自己来好了..不过ext确实很强大,没看过的人试试把~呵呵~<br />
&nbsp;&nbsp;&nbsp; 这是一个带动画效果的弹出的层,然后关闭也加入了动画的效果,然后使层具有被拖动的功能.动画效果其实就是用了4个偏移量left,top,x,y和定时器实现的.拖动嘛,是注册带document的mousemove的事件实现的.<br />
&nbsp;&nbsp; 先看看拖动的代码..<br />
&nbsp;&nbsp; <font face="Courier New">canBeDrag.prototype={<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; initialize:function(sender)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sender.onmousedown=function()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var backDiv=this.backDiv;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var offsetX=event.clientX-sender.offsetLeft;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var offsetY=event.clientY-sender.offsetTop;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.body.onmousemove=function()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sender.style.left=event.x-offsetX;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sender.style.top=event.y-offsetY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sender.onmouseup=function()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.body.onmousemove=null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.body.onmouseup=function()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.body.onmousemove=null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
然后要让这个层可以拖动注册<br />
<font face="Courier New">var sender1=$("dragDiv1");<br />
var sender2=$("dragDiv2");<br />
var sender3=$("dragDiv3");<br />
var drag1=new canBeDrag(sender1);<br />
var drag2=new canBeDrag(sender2);<br />
var drag3=new canBeDrag(sender3);就可以了</font><br />
恩,因为用了prototype来定义的类,所以就不全帖出来了..有兴趣的直接下载下去看看把~呵呵.<br />
<a href="http://www.cnblogs.com/Files/zhuibobo/ShowDiv.rar">例子下载</a></font>
<img src ="http://www.cnblogs.com/zhuibobo/aggbug/1028004.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42943/" target="_blank">[新闻]六大可能出售IT企业名单：SUN领头或被猎走</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>新手的入门-设计模式二[一块开工厂把~]</title><link>http://www.cnblogs.com/zhuibobo/archive/2008/01/04/1025887.html</link><dc:creator>zhuibobo</dc:creator><author>zhuibobo</author><pubDate>Fri, 04 Jan 2008 06:16:00 GMT</pubDate><guid>http://www.cnblogs.com/zhuibobo/archive/2008/01/04/1025887.html</guid><wfw:comment>http://www.cnblogs.com/zhuibobo/comments/1025887.html</wfw:comment><comments>http://www.cnblogs.com/zhuibobo/archive/2008/01/04/1025887.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/zhuibobo/comments/commentRss/1025887.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zhuibobo/services/trackbacks/1025887.html</trackback:ping><description><![CDATA[<p><font face="Courier New">&nbsp;&nbsp; ^_^...继续写了..这次到什么了呢~工厂把~<br />
&nbsp;&nbsp; 上次刚送走了一个喜欢让人&#8221;笑&#8220;的客户，这次又来了一个了。。这个客户要你写一个程序，用来帮助他管理一间餐馆的，这个餐馆主要的提供&#8220;鱼&#8221;的餐饮的，现在他刚开张，计划提供3种不同的&#8220;鱼&#8221;，1：水煮鱼，2：烤鱼，3：清蒸鱼，^_^，说起鱼嘛，我家那边是有很多的，潮州~呵呵，饮食挺出名的把，鱼和海鲜也是很好吃的，有机会的话去玩玩把，我想你肯定会喜欢的。。。呵呵。没说你呢。。=_=。。。好了继续我们的程序，既然有不同菜名，那加工肯定也是不同的了，费用也是不同的了。。那我们开始定义不同的菜把。。</font></p>
<p><font face="Courier New">制作工序都是：请洗，加工，上菜,恩定义一个接口</font></p>
<p><font face="Courier New">public interface IFish<br />
{<br />
&nbsp;&nbsp;&nbsp; string wash();<br />
&nbsp;&nbsp;&nbsp; string machining();<br />
&nbsp;&nbsp;&nbsp; string serving();<br />
&nbsp;&nbsp;&nbsp; string price();<br />
}</font></p>
<p><font face="Courier New">烤鱼：</font></p>
<p><font face="Courier New">public class BakeFish:IFish<br />
{<br />
&nbsp;&nbsp;&nbsp; private string fishType = "鲢鱼";//默认处理的,这部分以后会扩展[扩展什么?如果客人指定鱼呢?那价格不同把,呵呵,恩if判断,那在加一种鱼呢?恩,加if...天那,我又想去揍那个客户了,简直哭笑不得,"笑",噢,对了,笑,上一个客户你怎么解决的,策略模式,我们把价格计算独立出来,再根据实际需要组合.到这里你是不是想感想前一个客户了,对,带给你经验的往往就是客户,他们给公司带来钱,给你带来经验,无论你多么想揍他,还是先忍忍把..突然想起来,你看猎人吗?呵呵,可能你会想会长一样,发现充满的竟是感想.好了先跳过把],现在客户认为烤鲢鱼最好.<br />
&nbsp;public BakeFish()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public string FishType<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { fishType = value; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return fishType; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string wash()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "washing BakeFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string machining()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "machining BakeFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string serving()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "serving BakeFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string price()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "$30";<br />
&nbsp;&nbsp;&nbsp; }<br />
}</font></p>
<p><font face="Courier New">水煮鱼：</font></p>
<p><font face="Courier New">public class WaterFish:IFish<br />
{<br />
&nbsp;&nbsp;&nbsp; private string fishType = "草鱼";//默认<br />
&nbsp;public WaterFish()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public string FishType<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { fishType = value; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return fishType; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string wash()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "washing WaterFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string machining()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "machining WaterFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string serving()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "serving WaterFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string price()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "$35";<br />
&nbsp;&nbsp;&nbsp; }<br />
}</font></p>
<p><font face="Courier New">清蒸鱼:<br />
public class BraiseFish:IFish<br />
{<br />
&nbsp;&nbsp;&nbsp; private string fishType = "鲫鱼";//默认<br />
&nbsp;public BraiseFish()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public string FishType<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { fishType = value; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return fishType; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string wash()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "washing BraiseFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string machining()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "machining BraiseFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string serving()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "serving BraiseFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string price()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "$40";<br />
&nbsp;&nbsp;&nbsp; }<br />
}</font></p>
<p><font face="Courier New">恩,都定义好了,那接着就到客人点菜了..那我们想来直接new一下试试吧,看看怎么用的:</font></p>
<p><font face="Courier New">IFish fish=null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (this.DropDownList1.SelectedValue == "BakeFish")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fish = new BakeFish();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (this.DropDownList1.SelectedValue == "BraiseFish")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fish = new BraiseFish();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (this.DropDownList1.SelectedValue == "WaterFish")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fish = new WaterFish();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.wash() + "&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.machining() + "&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.serving() + "&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.price() + "&lt;br&gt;");</font></p>
<p><font face="Courier New">恩...这样就行了..可以如果以后这间餐厅发展了,想多加一种菜你就不得不修改这里了...如果只有这里那还好,假如订餐的时候需要判断一次,把订单拿到柜台正式下单的时候又要判断一下,送进厨房的时候又要判断一下...恩..那就要在3处加入新菜了[修改代码]...好了,看到这里是变化的,那我们就把他那出来单独处理把..我们建一个类来处理对象的创建</font></p>
<p><font face="Courier New">public class SimpleFishFactory<br />
{<br />
&nbsp;&nbsp;&nbsp; public SimpleFishFactory()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public IFish CreateInstance(string type)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (type == "BakeFish")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new BakeFish();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (type == "BraiseFish")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new BraiseFish();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (type == "WaterFish")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new WaterFish();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</font></p>
<p><font face="Courier New">好了..我们建立了一个简单工厂,用他来负责对象的创建,看看客户程序变成什么样拉</font></p>
<p><font face="Courier New">SimpleFishFactory factory = new SimpleFishFactory();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFish fish = factory.CreateInstance(this.DropDownList1.SelectedValue);<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.wash() + "&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.machining() + "&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.serving() + "&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.price() + "&lt;br&gt;");</font></p>
<p><font face="Courier New">ok,这就是简单工厂了,虽然这并还不是一种设计模式,不过已经可以帮你封装一部分的变换了.如果要加入鱼的新做法,那我们修改一些SimpleFishFactory 就行了,客户端的多处调用不用动了,为什么?因为客户端我们依赖于接口了,而不是依赖与具体的实现类了.设计原则之一:依赖于接口而不要依赖于具体的实现,这里的接口包括[接口和抽象类,呵呵,我只知道这两种了]</font></p>
<p><font face="Courier New">好了..继续把..很偶然的...这里的人很喜欢吃鱼,这家餐厅继续扩大了..现在客户要我们为菜提供不同的地方口味[其实这里加入装饰模式可能更好点,不过我们继续我们的工厂把,以后我们再会到这里改把],区别是machining的不同了..好了,客户的要求是他们要加入四川和广东的口味,ok,那我们扩展"鱼"把.<br />
public class GDWaterFish//广东风味的.<br />
{<br />
&nbsp;private string fishType = "草鱼";<br />
&nbsp;&nbsp;&nbsp; public GDWaterFish()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public string FishType<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { fishType = value; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return fishType; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string wash()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "washing WaterFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string machining()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "machining WaterFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string serving()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "serving WaterFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string price()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "$35";<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
public class SCWaterFish:IFish//四川风味的.<br />
{<br />
&nbsp;&nbsp;&nbsp; private string fishType = "草鱼";<br />
&nbsp;&nbsp;&nbsp; public SCWaterFish()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public string FishType<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { fishType = value; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return fishType; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string wash()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "washing WaterFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string machining()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "machining WaterFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string serving()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "serving WaterFish";<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string price()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "$35";<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
到这里,如果我们还是用简单工厂的话,每次加入新的风味的话,那每次都要修改简单工厂了.虽然我们只需要修改一个地方,不过呢,记住对修改封闭,对扩展开放的原则,能不修改的我们就不修改.那好吧,你只能去百度,google了...呵呵,然后你可能会发现工厂模式,哦~它可以帮我解决这个难题.好,都是工厂嘛,我们就从简单工厂转换成工厂把.<br />
首先,习惯是依赖于抽象,所以我们先建立一个抽像类把<br />
public abstract class AFactory<br />
{<br />
&nbsp;&nbsp;&nbsp; private IFish fish=null;<br />
&nbsp;public AFactory()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public string display()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fish = CreateFish();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return fish.wash() + "&lt;br&gt;" + fish.machining() + "&lt;br&gt;" + fish.serving() +"&lt;br&gt;" + fish.price();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public abstract IFish CreateFish();<br />
}<br />
然后还要一系列的子工厂负责具体对象的创建:就只列出几个把...<br />
public class GDBakeFishFactory : AFactory<br />
{<br />
&nbsp;&nbsp;&nbsp; public GDBakeFishFactory()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public override IFish CreateFish()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new GDBakeFish();<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
public class GDBraiseFishFactory:AFactory<br />
{<br />
&nbsp;&nbsp;&nbsp; public GDBraiseFishFactory()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public override IFish CreateFish()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new GDBraiseFish();<br />
&nbsp;&nbsp;&nbsp; } <br />
}<br />
public class GDWaterFishFactory:AFactory<br />
{<br />
&nbsp;&nbsp;&nbsp; public GDWaterFishFactory()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public override IFish CreateFish()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new GDWaterFish();<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
....等等..等等..为每一个对象建一个工厂?那不是让程序更复杂了,对的,这里你或许可以用简单工厂加工一下,或许我们就不用建那么多工厂了.不过工厂模式负责的是单个对象的创建,并将创建延迟到之类,同时他会带来和类平行的结构图.现在你想想加入一个做法,就加入一个工厂那是不是不会影响到其他的东西呢?所以我们做到封装了,可以扩展,而不用去修改.恩看看客户程序的调用把.<br />
哦,对了,虽然客户程序只知道需要取得"鱼",并别需要取得什么鱼到什么工厂里取就可以了,不过还是有逻辑上的判断的,例如客户程序说要广东的清蒸鱼,那你还是要去广东清蒸鱼的工厂里取的,那不是只不过将鱼到具体鱼的依赖转变成鱼和具体工厂的依赖了吗?<br />
我们先看看客户程序把:我们的客人要指定广东清蒸鱼<br />
AFactory factory = new GDBraiseFishFactory();//可是客户程序和具体工厂耦合了.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFish fish = factory.CreateFish();//我们把鱼和具体鱼的耦合在客户程序解开了<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.wash() + "&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.machining() + "&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.serving() + "&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(fish.price() + "&lt;br&gt;");<br />
这样能带来什么好处呢?<br />
1.假如需要对鱼再加工把,在这里GDBraiseFishFactory加工,鱼基本做法不变,客户程序不变.//假如这是逻辑层的话,那数据层不变,表现层[客户程序]不变.如果我们依赖于具体的鱼的话,那如果需要再加工的话,那我们需要在客户程序进行,并且不只一处.简单工厂?那每次加入新的变化都需要修改,说明没有对修改封闭,那可能会对以前的逻辑造成错误,产生bug..<br />
2.需要加入其他烹调法,加入新的factory,新的类,以前的鱼和工厂不变,不用修改就是减少修改带来的bug,上一点应该是比较主要的..</font></p>
<p><font face="Courier New">好了,我也是半理解半不理解之间把,只能说到这里了..接着,到抽象工厂了,我们的餐厅继续扩大.它要杀出中国了,又会带来变化.先说一下工厂和抽像工厂把.<br />
1工厂解决的是单个对象的创建.<br />
2抽象工厂解决的是一系列相互依赖的对象的创建.<br />
你可以在工厂中加入简单工厂从而减少工厂的膨胀,那样是不是看起来好像是一系列的对象呢?其实他一个时刻只能返回一个对象,而不是返回一系列的对象.但抽象工厂是可以给你在一个初始化中提供一系列对象的.<br />
本来想一口气写完的...看来太多的..受不了了....=_=...</font></p>
<p><font face="Courier New"></font>&nbsp;<a href="http://www.cnblogs.com/Files/zhuibobo/FactoryPattren.rar">例子</a></p>
 <img src ="http://www.cnblogs.com/zhuibobo/aggbug/1025887.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42942/" target="_blank">[新闻]Linux内核2.6.27正式到来</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>新手的入门-设计模式一[玩玩策略吗?]</title><link>http://www.cnblogs.com/zhuibobo/archive/2008/01/03/1024127.html</link><dc:creator>zhuibobo</dc:creator><author>zhuibobo</author><pubDate>Thu, 03 Jan 2008 02:15:00 GMT</pubDate><guid>http://www.cnblogs.com/zhuibobo/archive/2008/01/03/1024127.html</guid><wfw:comment>http://www.cnblogs.com/zhuibobo/comments/1024127.html</wfw:comment><comments>http://www.cnblogs.com/zhuibobo/archive/2008/01/03/1024127.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/zhuibobo/comments/commentRss/1024127.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zhuibobo/services/trackbacks/1024127.html</trackback:ping><description><![CDATA[嗯，最近开始接触设计模式了，开始实验性的写点东东把~~下边开始说说第一个设计模式。对了，新手的入门说的是我自己。。。。^_^
<p>&nbsp;&nbsp;&nbsp; 从大学开始接触java的时候记忆最深的一个话是&#8220;万物皆对象&#8221;[现在做.net了]，就是说什么东西都是对象把，呵呵。。然后就开始了面向对象之旅。就是把一个东西包装成类，包括对于那个东东的描述，行为等。。。然后你就可以实例化他，通过继承扩展他。这样子类既能添加新的方法，属性，也能拥有父类的属性，方法，只要不是父类私有的，如果你那天不高兴了，还能把父类的方法覆盖掉。。写自己想要的实现。这样是不是很棒呢~共有的东西我们就抽出来作为父类，然后子类不用写也能用了。。这就是面向对象中的一部分，继承了。</p>
<p>&nbsp;&nbsp; 可惜的是当你接触设计模式以后你可能会看到的一个原则，&#8220;多用组合，少用继承&#8221;，为什么呢，接着就从代码开始说把，一些的例子纯属假设性成立的情况下的。。呵呵。</p>
<p>&nbsp;&nbsp; 现在你的客户要你写个小东西，用来描述人的。人肯定会有共同的行为了，例如&#8221;笑&#8220;把，恩，具体什么人先不理了，我现在想到的是，人都会&#8221;笑&#8220;，美女可能笑的好看点~呵呵。所以先定义一个父类把。我们在给&#8220;人&#8221;加几种属性的描述；</p>
<p><font face="Arial"><font face="Arial">public class Person<br />
{<br />
&nbsp;public Person()<br />
&nbsp;{<br />
&nbsp;&nbsp;//<br />
&nbsp;&nbsp;// TODO: 在此处添加构造函数逻辑<br />
&nbsp;&nbsp;//<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; protected string sex=string.Empty;<br />
&nbsp;&nbsp;&nbsp; protected string name = string.Empty;<br />
&nbsp;&nbsp;&nbsp; protected int age;<br />
&nbsp;&nbsp;&nbsp; public string Sex<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return sex; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { sex = value; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string Name<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return name; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { name = value; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string Age<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return age; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { age = value; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public string Laugh()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "laugh ^_^";<br />
&nbsp;&nbsp;&nbsp; }<br />
}</font></font></p>
<p>好了，&#8220;人的共有属性和一个行为&#8221;我们定义完了，然后我们加入个美女把，^_^,当然她也是属于人这个种族的了。。。。所以她肯定继承了人的属性和方法了。</p>
<p><font face="Arial">public class Girl:Person<br />
{<br />
&nbsp;public Girl()<br />
&nbsp;{<br />
&nbsp;&nbsp;//<br />
&nbsp;&nbsp;// TODO: 在此处添加构造函数逻辑<br />
&nbsp;&nbsp;//<br />
&nbsp;}<br />
}</font></p>
<p>一个不能说明什么把，那我们在加入些别的把。。。</p>
<p><font face="Arial">public class Boy:Person<br />
{<br />
&nbsp;&nbsp;&nbsp; public Boy()<br />
&nbsp;{<br />
&nbsp;&nbsp;//<br />
&nbsp;&nbsp;// TODO: 在此处添加构造函数逻辑<br />
&nbsp;&nbsp;//<br />
&nbsp;}<br />
}</font></p>
<p><font face="Arial">public class Baby:Person<br />
{<br />
&nbsp;public Baby()<br />
&nbsp;{<br />
&nbsp;&nbsp;//<br />
&nbsp;&nbsp;// TODO: 在此处添加构造函数逻辑<br />
&nbsp;&nbsp;//<br />
&nbsp;}<br />
}</font></p>
<p>恩，好了，都加上了，然后我让他们笑一下把</p>
<p><font face="Arial">Girl a = new Girl();<br />
Boy b = new Boy();<br />
Baby ba = new Baby();<br />
Response.Write(a.Laugh());<br />
Response.Write(b.Laugh());<br />
Response.Write(ba.Laugh());</font></p>
<p>输出：laugh ^_^laugh ^_^laugh ^_^，恩，都笑了，虽然后边两个我没什么兴趣看到。。。不过都笑了。=_=..是不是看到继承的强大了呢？子类里我们可是什么都没写呀。恩，我们可以交差了。</p>
<p>&nbsp;&nbsp;&nbsp; 可是，有一天这个让人头疼的客户突然想到。。不能是一样的笑呀。。。要让美女&#8221;微笑&#8220;，让男生&#8220;狂笑&#8221;，让小孩&#8221;傻笑&#8220;，让XX&#8220;X笑&#8221;，他还想加入&#8220;去世的人&#8221;这中类别。。。你一听是不是也开始笑了。。。对，继承会让死人也笑的，好吧，我覆盖掉父类的方法把。让具体的人去实现具体的笑法。。</p>
<p><font face="Arial">public class Girl:Person<br />
{<br />
&nbsp;&nbsp;&nbsp; public override string Laugh()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "smile";<br />
&nbsp;&nbsp;&nbsp; }<br />
}</font></p>
<p><font face="Arial">public class Boy:Person<br />
{<br />
&nbsp;&nbsp;&nbsp; public override string Laugh()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "guffaw";<br />
&nbsp;&nbsp;&nbsp; }<br />
}</font></p>
<p>。。。。。。。。。。。</p>
<p>好了，改完了。。。各笑各的去吧。。。你也可以笑了。。。可是客户还没笑呢。当你那去交工的时候，他突然对你说，还不行。他想让美女能微笑也能傻笑~^_^...好了，如果你可以得罪他就给他一拳把。。。不行？那回去继续改把。。怎么改呢，好吧继续还是继承把。。。然后我在子类中扩展其他的行为。如果你不怕那个客户又出新花招的话。。那就这样该把。如果你怕了的话，恩，那开始考虑不用这样直接的继承了把。考虑用别的方式去实现把。。。或许你会想到的是围绕的就是&#8221;笑&#8220;这个行为出现的变化，那可不可以不要在继承中具体实现继承这个行为呢？如果我们在继承中定义了是人的属性，然后把&#8221;笑&#8220;这个行为拿出来，具体的时候再组装不就行了。。到时你的客户想让谁怎么笑就怎么笑了。。所以从父类开始下手把。先把集体的实现类改成抽像类</p>
<p><font face="Arial">public abstract class APersons<br />
{<br />
&nbsp;&nbsp;&nbsp; protected string sex=string.Empty;<br />
&nbsp;&nbsp;&nbsp; protected string name = string.Empty;<br />
&nbsp;&nbsp;&nbsp; protected int age;<br />
&nbsp;&nbsp;&nbsp; protected IAction action;//加入了一个行为的接口<br />
&nbsp;&nbsp;&nbsp; public IAction Action//指定具体的行为：我们这里当然是怎么&#8220;笑&#8221;了。。<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return action;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; action = value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public abstract string PerformLaugh();//子类在具体实现笑把。<br />
}</font></p>
<p>然后加入这个行为的接口把</p>
<p><font face="Arial">public interface IAction<br />
{<br />
&nbsp;&nbsp;&nbsp; string Laugh();<br />
}</font></p>
<p><font face="Arial">方正现实了这个接口的行为都要笑。。怎么笑就不理他了。。继续写实现了接口的行为类。。。</font></p>
<p><font face="Arial">public class smile : IAction<br />
{<br />
&nbsp;public smile()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public string Laugh()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "smile ^_^";<br />
&nbsp;&nbsp;&nbsp; }<br />
}</font></p>
<p><font face="Arial">public class guffaw:IAction<br />
{<br />
&nbsp;public guffaw()<br />
&nbsp;{<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; public string Laugh()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "guffaw ^_^";<br />
&nbsp;&nbsp;&nbsp; }<br />
}</font></p>
<p>然后测试一下把：先测试美女~</p>
<p><font face="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Arial">APersons </font>f = new Female();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.Action = new smile();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(f.PerformLaugh()+"微笑&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.Action = new guffaw();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(f.PerformLaugh() + "狂笑ing&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.Action = new giggle();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(f.PerformLaugh() + "傻笑&lt;br&gt;");</font></p>
<p>输出：</p>
<p>smile ^_^微笑<br />
guffaw ^_^狂笑ing<br />
giggle ^_^傻笑<br />
</p>
<p>再试试小破孩。。。</p>
<p><font face="Arial">APersons f = new Child();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.Action = new smile();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(f.PerformLaugh()+"微笑&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.Action = new guffaw();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(f.PerformLaugh() + "狂笑ing&lt;br&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.Action = new giggle();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(f.PerformLaugh() + "傻笑&lt;br&gt;");</font></p>
<p>输出：</p>
<p>smile ^_^微笑<br />
guffaw ^_^狂笑ing<br />
giggle ^_^傻笑</p>
<p>好了。这样就把属性和行为分离开了。。如果客户要多几种笑法也很容易加了，想让谁怎么笑也能了。。。如果他笑了，你也能&#8220;笑&#8221;了。。</p>
<p>这个好像就是策略模式了把。。。呵呵。。&nbsp;感觉呢，做项目就是在挖坑埋自己。。。。。如果你有足够的经验和预见的能力，良好的设计会成为你的救命稻草。所不定那一次很突然能把你从坑里拉出来，不然，呵呵，可能会埋完自己一次又一次的。。如果你已经习惯被埋了。。那恭喜你了。。实在太强大了。。我现在是看着前边挖的坑就头痛。。。。=_=</p>
<p><font face="Arial">&nbsp;&nbsp;&nbsp; <a href="http://www.cnblogs.com/Files/zhuibobo/StrategyPattren.rar">例子<br />
</a></font></p>
 <img src ="http://www.cnblogs.com/zhuibobo/aggbug/1024127.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42941/" target="_blank">[新闻]《星际争霸2》一分为三 各种族依次登场</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>读取sql2000,sql2005中的表结构[转贴]</title><link>http://www.cnblogs.com/zhuibobo/archive/2008/01/02/1023681.html</link><dc:creator>zhuibobo</dc:creator><author>zhuibobo</author><pubDate>Wed, 02 Jan 2008 12:19:00 GMT</pubDate><guid>http://www.cnblogs.com/zhuibobo/archive/2008/01/02/1023681.html</guid><wfw:comment>http://www.cnblogs.com/zhuibobo/comments/1023681.html</wfw:comment><comments>http://www.cnblogs.com/zhuibobo/archive/2008/01/02/1023681.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/zhuibobo/comments/commentRss/1023681.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zhuibobo/services/trackbacks/1023681.html</trackback:ping><description><![CDATA[<font face="Courier New">这是2005的<br />
SELECT <br />
TableName=CASE WHEN C.column_id=1 THEN O.name ELSE N'' END,<br />
TableDesc=ISNULL(CASE WHEN C.column_id=1 THEN PTB.[value] END,N''),<br />
Column_id=C.column_id,<br />
ColumnName=C.name,<br />
PrimaryKey=ISNULL(IDX.PrimaryKey,N''),<br />
[IDENTITY]=CASE WHEN C.is_identity=1 THEN N'&#8730;'ELSE N'' END,<br />
Computed=CASE WHEN C.is_computed=1 THEN N'&#8730;'ELSE N'' END,<br />
Type=T.name,<br />
Length=C.max_length,<br />
Precision=C.precision,<br />
Scale=C.scale,<br />
NullAble=CASE WHEN C.is_nullable=1 THEN N'&#8730;'ELSE N'' END,<br />
[Default]=ISNULL(D.definition,N''),<br />
ColumnDesc=ISNULL(PFD.[value],N''), <br />
IndexName=ISNULL(IDX.IndexName,N''),<br />
IndexSort=ISNULL(IDX.Sort,N''),<br />
Create_Date=O.Create_Date,<br />
Modify_Date=O.Modify_date <br />
FROM sys.columns C<br />
INNER JOIN sys.objects O<br />
ON C.[object_id]=O.[object_id]<br />
AND O.type='U'<br />
AND O.is_ms_shipped=0<br />
INNER JOIN sys.types T<br />
ON C.user_type_id=T.user_type_id<br />
LEFT JOIN sys.default_constraints D<br />
ON C.[object_id]=D.parent_object_id<br />
AND C.column_id=D.parent_column_id<br />
AND C.default_object_id=D.[object_id]<br />
LEFT JOIN sys.extended_properties PFD<br />
ON PFD.class=1 <br />
AND C.[object_id]=PFD.major_id <br />
AND C.column_id=PFD.minor_id<br />
-- AND PFD.name='Caption' -- 字段说明对应的描述名称(一个字段可以添加多个不同name的描述)<br />
LEFT JOIN sys.extended_properties PTB<br />
ON PTB.class=1 <br />
AND PTB.minor_id=0 <br />
AND C.[object_id]=PTB.major_id<br />
-- AND PFD.name='Caption' -- 表说明对应的描述名称(一个表可以添加多个不同name的描述) <br />
LEFT JOIN -- 索引及主键信息<br />
(<br />
SELECT <br />
IDXC.[object_id],<br />
IDXC.column_id,<br />
Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC.index_id,IDXC.index_column_id,'IsDescending')<br />
WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,<br />
PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'&#8730;'ELSE N'' END,<br />
IndexName=IDX.Name<br />
FROM sys.indexes IDX<br />
INNER JOIN sys.index_columns IDXC<br />
ON IDX.[object_id]=IDXC.[object_id]<br />
AND IDX.index_id=IDXC.index_id<br />
LEFT JOIN sys.key_constraints KC<br />
ON IDX.[object_id]=KC.[parent_object_id]<br />
AND IDX.index_id=KC.unique_index_id<br />
INNER JOIN -- 对于一个列包含多个索引的情况,只显示第1个索引信息<br />
(<br />
SELECT [object_id], Column_id, index_id=MIN(index_id)<br />
FROM sys.index_columns<br />
GROUP BY [object_id], Column_id<br />
) IDXCUQ<br />
ON IDXC.[object_id]=IDXCUQ.[object_id]<br />
AND IDXC.Column_id=IDXCUQ.Column_id<br />
AND IDXC.index_id=IDXCUQ.index_id<br />
) IDX<br />
ON C.[object_id]=IDX.[object_id]<br />
AND C.column_id=IDX.column_id <br />
--WHERE O.name=N'abc' -- 如果只查询指定表,加上此条件<br />
这是2000的<br />
<font face="Courier New">SELECT 表名=case when a.colorder=1 then d.name else '' end,<br />
表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,<br />
字段序号=a.colorder,<br />
字段名=a.name,<br />
标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '&#8730;'else '' end,<br />
主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (<br />
SELECT name FROM sysindexes WHERE indid in(<br />
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid <br />
))) then '&#8730;' else '' end,<br />
类型=b.name,<br />
占用字节数=a.length,<br />
长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),<br />
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),<br />
允许空=case when a.isnullable=1 then '&#8730;'else '' end,<br />
默认值=isnull(e.text,''),<br />
字段说明=isnull(g.[value],'')<br />
FROM syscolumns a <br />
left join systypes b on a.xusertype=b.xusertype <br />
inner join sysobjects d on a.id=d.id&nbsp; and d.xtype='U' and&nbsp; d.name&lt;&gt;'dtproperties'<br />
left join syscomments e on a.cdefault=e.id <br />
left join sysproperties g on a.id=g.id and a.colid=g.smallid <br />
left join sysproperties f on d.id=f.id and f.smallid=0 <br />
--where d.name=@ConfigurationTablName <br />
order by a.id,a.colorder<br />
拷贝进数据库中执行一下就看到了....以前在其它地方上搜集的~呵呵,不知道是那个强人写的...^_^</font></font>
<img src ="http://www.cnblogs.com/zhuibobo/aggbug/1023681.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42940/" target="_blank">[新闻]IBM花300万美元打造互联网三维虚拟紫禁城</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>代码生成器(Asp.net(C#))</title><link>http://www.cnblogs.com/zhuibobo/archive/2008/01/01/1022466.html</link><dc:creator>zhuibobo</dc:creator><author>zhuibobo</author><pubDate>Tue, 01 Jan 2008 13:28:00 GMT</pubDate><guid>http://www.cnblogs.com/zhuibobo/archive/2008/01/01/1022466.html</guid><wfw:comment>http://www.cnblogs.com/zhuibobo/comments/1022466.html</wfw:comment><comments>http://www.cnblogs.com/zhuibobo/archive/2008/01/01/1022466.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cnblogs.com/zhuibobo/comments/commentRss/1022466.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zhuibobo/services/trackbacks/1022466.html</trackback:ping><description><![CDATA[花了3个礼拜的时间写的一个简单的代码生成器,这是源码:^_^ ,生成简单的3层和基础页面
<p>&nbsp;&nbsp;&nbsp; <a href="http://www.cnblogs.com/Files/zhuibobo/HLSource.rar">HLSource源码</a></p>
<img src ="http://www.cnblogs.com/zhuibobo/aggbug/1022466.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42938/" target="_blank">[新闻]11个处于悬崖边缘的 Web 公司</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>JavaScript笔记(类)</title><link>http://www.cnblogs.com/zhuibobo/articles/980163.html</link><dc:creator>zhuibobo</dc:creator><author>zhuibobo</author><pubDate>Sun, 02 Dec 2007 11:59:00 GMT</pubDate><guid>http://www.cnblogs.com/zhuibobo/articles/980163.html</guid><wfw:comment>http://www.cnblogs.com/zhuibobo/comments/980163.html</wfw:comment><comments>http://www.cnblogs.com/zhuibobo/articles/980163.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/zhuibobo/comments/commentRss/980163.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zhuibobo/services/trackbacks/980163.html</trackback:ping><description><![CDATA[<div>在javaScript下并不像其他面向对象的语言那样有严格的没定义方法.规定的应该只是函数的定义function()</div>
<div>以下是几种看到过的类定义的方式:</div>
<div>工厂方式:</div>
<div>&lt;script language="javascript" type="text/javascript"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function Personsfactory(name,age)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var person=new Object();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; person.Name=name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; person.Age=age;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; person.Show=function()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(this.Name+this.Age);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return person;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var personeD=Personsfactory('do',10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var personeZ=Personsfactory('zb',11);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; personeD.Show();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; personeZ.Show();<br />
&nbsp;&nbsp;&nbsp; &lt;/script&gt;</div>
<div>构造函数方式:</div>
<div>&lt;script language="javascript" type="text/javascript"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function Person(name,age)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Name=name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Age=age;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Show=function()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(this.Name+this.Age);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var personeD=new Person('do',10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var personeZ=new Person('zb',11);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; personeD.Show();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; personeZ.Show();<br />
&nbsp;&nbsp;&nbsp; &lt;/script&gt;</div>
<div>构造函数&amp;原型方式:</div>
<div>&lt;script type="text/javascript" language="javascript"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function Person(name,age)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Name=name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Age=age;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Person.prototype.Show=function()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(this.Name+this.Age);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var personeD=new Person('do',10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var personeZ=new Person('zb',11);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; personeD.Show();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; personeZ.Show();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;</div>
<div>动态的原型方式:</div>
<div>&lt;script type="text/javascript" language="javascript"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function Person(a,b)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Name=a;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Age=b;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(typeof Person._initialize=="undefined")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Person.prototype.Show=function()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(this.Name+this.Age);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Person._initialize=true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var personeD=new Person('do',10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var personeZ=new Person('zb',11);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; personeD.Show();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; personeZ.Show();<br />
&nbsp;&nbsp;&nbsp; &lt;/script&gt;</div>
<div>构造函数&amp;原型方式和动态的原型方式是属于比较常用的js下的类定义方式了.</div>
<div>现在还有各种的框架提供了不同的类的定义方法:</div>
<div>还接触的比较少,接触过的prototype的类定义方法为:</div>
<div>&lt;script language="javascript" type="text/javascript"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var Person=Class.create();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Person.prototype={<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; initialize:function(name,age)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Name=name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Age=age;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Show:function()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(this.Name+this.Age);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var test=new Person('Do','11');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test.Show();</div>
<div>&lt;/script&gt;</div>
<img src ="http://www.cnblogs.com/zhuibobo/aggbug/980163.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42937/" target="_blank">[新闻]扎克博格：Facebook要先赚吆喝后赚钱</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>JavaScript笔记(展开的层)-4</title><link>http://www.cnblogs.com/zhuibobo/articles/978836.html</link><dc:creator>zhuibobo</dc:creator><author>zhuibobo</author><pubDate>Fri, 30 Nov 2007 13:13:00 GMT</pubDate><guid>http://www.cnblogs.com/zhuibobo/articles/978836.html</guid><wfw:comment>http://www.cnblogs.com/zhuibobo/comments/978836.html</wfw:comment><comments>http://www.cnblogs.com/zhuibobo/articles/978836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/zhuibobo/comments/commentRss/978836.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zhuibobo/services/trackbacks/978836.html</trackback:ping><description><![CDATA[<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&lt;!</span><span style="color: #000000">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">html&nbsp;xmlns</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://www.w3.org/1999/xhtml</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000">无标题页</span><span style="color: #000000">&lt;/</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">style&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/css</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#DivData<br />
<img id="_251_512_Open_Image" onclick="this.style.display='none'; document.getElementById('_251_512_Open_Text').style.display='none'; document.getElementById('_251_512_Closed_Image').style.display='inline'; document.getElementById('_251_512_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_251_512_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_251_512_Closed_Text').style.display='none'; document.getElementById('_251_512_Open_Image').style.display='inline'; document.getElementById('_251_512_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_251_512_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_251_512_Open_Text"><span style="color: #000000">{<br />
<img id="_281_300_Open_Image" onclick="this.style.display='none'; document.getElementById('_281_300_Open_Text').style.display='none'; document.getElementById('_281_300_Closed_Image').style.display='inline'; document.getElementById('_281_300_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_281_300_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_281_300_Closed_Text').style.display='none'; document.getElementById('_281_300_Open_Image').style.display='inline'; document.getElementById('_281_300_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overflow:hidden;</span><span id="_281_300_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="_281_300_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">层内的数据超过层的显示范围时隐藏</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z</span><span style="color: #000000">-</span><span style="color: #000000">index:&nbsp;</span><span style="color: #000000">101</span><span style="color: #000000">;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left:&nbsp;304px;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;450px;&nbsp;<br />
<img id="_414_430_Open_Image" onclick="this.style.display='none'; document.getElementById('_414_430_Open_Text').style.display='none'; document.getElementById('_414_430_Closed_Image').style.display='inline'; document.getElementById('_414_430_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_414_430_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_414_430_Closed_Text').style.display='none'; document.getElementById('_414_430_Open_Image').style.display='inline'; document.getElementById('_414_430_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position:&nbsp;absolute;&nbsp;</span><span id="_414_430_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="_414_430_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">绝对定位,设置层的显示位置</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="_457_464_Open_Image" onclick="this.style.display='none'; document.getElementById('_457_464_Open_Text').style.display='none'; document.getElementById('_457_464_Closed_Image').style.display='inline'; document.getElementById('_457_464_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_457_464_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_457_464_Closed_Text').style.display='none'; document.getElementById('_457_464_Open_Image').style.display='inline'; document.getElementById('_457_464_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;0px;&nbsp;</span><span id="_457_464_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="_457_464_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">初始高度</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background</span><span style="color: #000000">-</span><span style="color: #000000">color:#ff9933;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">style</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img id="_588_596_Open_Image" onclick="this.style.display='none'; document.getElementById('_588_596_Open_Text').style.display='none'; document.getElementById('_588_596_Closed_Image').style.display='inline'; document.getElementById('_588_596_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_588_596_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_588_596_Closed_Text').style.display='none'; document.getElementById('_588_596_Open_Image').style.display='inline'; document.getElementById('_588_596_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;lwheight</span><span style="color: #000000">=</span><span style="color: #000000">350</span><span style="color: #000000">;</span><span id="_588_596_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="_588_596_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">最大的高度</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="_624_632_Open_Image" onclick="this.style.display='none'; document.getElementById('_624_632_Open_Text').style.display='none'; document.getElementById('_624_632_Closed_Image').style.display='inline'; document.getElementById('_624_632_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_624_632_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_624_632_Closed_Text').style.display='none'; document.getElementById('_624_632_Open_Image').style.display='inline'; document.getElementById('_624_632_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;lwminheight</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;</span><span id="_624_632_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="_624_632_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">最小的高度</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="_654_669_Open_Image" onclick="this.style.display='none'; document.getElementById('_654_669_Open_Text').style.display='none'; document.getElementById('_654_669_Closed_Image').style.display='inline'; document.getElementById('_654_669_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_654_669_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_654_669_Closed_Text').style.display='none'; document.getElementById('_654_669_Open_Image').style.display='inline'; document.getElementById('_654_669_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;DivData;</span><span id="_654_669_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="_654_669_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">层对象,方便跨越函数使用</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;ShowDiv(sender)<br />
<img id="_712_954_Open_Image" onclick="this.style.display='none'; document.getElementById('_712_954_Open_Text').style.display='none'; document.getElementById('_712_954_Closed_Image').style.display='inline'; document.getElementById('_712_954_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_712_954_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_712_954_Closed_Text').style.display='none'; document.getElementById('_712_954_Open_Image').style.display='inline'; document.getElementById('_712_954_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_712_954_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_712_954_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DivData</span><span style="color: #000000">=</span><span style="color: #000000">document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">DivData</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="_837_859_Open_Image" onclick="this.style.display='none'; document.getElementById('_837_859_Open_Text').style.display='none'; document.getElementById('_837_859_Closed_Image').style.display='inline'; document.getElementById('_837_859_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_837_859_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_837_859_Closed_Text').style.display='none'; document.getElementById('_837_859_Open_Image').style.display='inline'; document.getElementById('_837_859_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DivData.style.top</span><span style="color: #000000">=</span><span style="color: #000000">sender.offsetTop</span><span style="color: #000000">+</span><span style="color: #000000">sender.offsetHeight;</span><span id="_837_859_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="_837_859_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">设置层的初始位置,根据文本框的位置设置</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DivData.style.left</span><span style="color: #000000">=</span><span style="color: #000000">sender.offsetLeft;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowOffset();</span><span style="color: #008000">//</span><span style="color: #008000">开始展开的效果</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;ShowOffset()<br />
<img id="_994_1381_Open_Image" onclick="this.style.display='none'; document.getElementById('_994_1381_Open_Text').style.display='none'; document.getElementById('_994_1381_Closed_Image').style.display='inline'; document.getElementById('_994_1381_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_994_1381_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_994_1381_Closed_Text').style.display='none'; document.getElementById('_994_1381_Open_Image').style.display='inline'; document.getElementById('_994_1381_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_994_1381_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_994_1381_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;nowoffest</span><span style="color: #000000">=</span><span style="color: #000000">parseInt(DivData.offsetHeight);</span><span style="color: #008000">//</span><span style="color: #008000">获取层的现有高度</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(nowoffest</span><span style="color: #000000">&lt;</span><span style="color: #000000">lwheight)</span><span style="color: #008000">//</span><span style="color: #008000">判断现有高度是否小于最大高度</span><span style="color: #008000"><br />
<img id="_1127_1371_Open_Image" onclick="this.style.display='none'; document.getElementById('_1127_1371_Open_Text').style.display='none'; document.getElementById('_1127_1371_Closed_Image').style.display='inline'; document.getElementById('_1127_1371_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_1127_1371_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1127_1371_Closed_Text').style.display='none'; document.getElementById('_1127_1371_Open_Image').style.display='inline'; document.getElementById('_1127_1371_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1127_1371_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_1127_1371_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(DivData</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">)</span><span style="color: #008000">//</span><span style="color: #008000">如果层对象存在</span><span style="color: #008000"><br />
<img id="_1188_1278_Open_Image" onclick="this.style.display='none'; document.getElementById('_1188_1278_Open_Text').style.display='none'; document.getElementById('_1188_1278_Closed_Image').style.display='inline'; document.getElementById('_1188_1278_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_1188_1278_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1188_1278_Closed_Text').style.display='none'; document.getElementById('_1188_1278_Open_Image').style.display='inline'; document.getElementById('_1188_1278_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1188_1278_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_1188_1278_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DivData.style.height</span><span style="color: #000000">=</span><span style="color: #000000">(nowoffest</span><span style="color: #000000">+</span><span style="color: #000000">10</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">px</span><span style="color: #000000">"</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">重新改变层的高度</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ti</span><span style="color: #000000">=</span><span style="color: #000000">window.setTimeout(</span><span style="color: #000000">"</span><span style="color: #000000">ShowOffset()</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">40</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">设置定时器,每40毫秒高度改变10px;</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;HidOffest()</span><span style="color: #008000">//</span><span style="color: #008000">显示的一个逆向过程</span><span style="color: #008000"><br />
<img id="_1431_1899_Open_Image" onclick="this.style.display='none'; document.getElementById('_1431_1899_Open_Text').style.display='none'; document.getElementById('_1431_1899_Closed_Image').style.display='inline'; document.getElementById('_1431_1899_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_1431_1899_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1431_1899_Closed_Text').style.display='none'; document.getElementById('_1431_1899_Open_Image').style.display='inline'; document.getElementById('_1431_1899_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1431_1899_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_1431_1899_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;nowoffest</span><span style="color: #000000">=</span><span style="color: #000000">parseInt(DivData.offsetHeight);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(ti</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">)</span><span style="color: #008000">//</span><span style="color: #008000">如果ti不为空的话就话就是说层处于展开的效果中,这是时候如果收缩的话必须先取消展开的效果</span><span style="color: #008000"><br />
<img id="_1574_1638_Open_Image" onclick="this.style.display='none'; document.getElementById('_1574_1638_Open_Text').style.display='none'; document.getElementById('_1574_1638_Closed_Image').style.display='inline'; document.getElementById('_1574_1638_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_1574_1638_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1574_1638_Closed_Text').style.display='none'; document.getElementById('_1574_1638_Open_Image').style.display='inline'; document.getElementById('_1574_1638_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1574_1638_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_1574_1638_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.clearTimeout(ti);</span><span style="color: #008000">//</span><span style="color: #008000">取消展开的效果</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(nowoffest</span><span style="color: #000000">&gt;</span><span style="color: #000000">lwminheight)<br />
<img id="_1690_1889_Open_Image" onclick="this.style.display='none'; document.getElementById('_1690_1889_Open_Text').style.display='none'; document.getElementById('_1690_1889_Closed_Image').style.display='inline'; document.getElementById('_1690_1889_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_1690_1889_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1690_1889_Closed_Text').style.display='none'; document.getElementById('_1690_1889_Open_Image').style.display='inline'; document.getElementById('_1690_1889_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1690_1889_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_1690_1889_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(DivData</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
<img id="_1742_1822_Open_Image" onclick="this.style.display='none'; document.getElementById('_1742_1822_Open_Text').style.display='none'; document.getElementById('_1742_1822_Closed_Image').style.display='inline'; document.getElementById('_1742_1822_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_1742_1822_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1742_1822_Closed_Text').style.display='none'; document.getElementById('_1742_1822_Open_Image').style.display='inline'; document.getElementById('_1742_1822_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1742_1822_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_1742_1822_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DivData.style.height</span><span style="color: #000000">=</span><span style="color: #000000">(nowoffest</span><span style="color: #000000">-</span><span style="color: #000000">10</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">px</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.setTimeout(</span><span style="color: #000000">"</span><span style="color: #000000">HidOffest()</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">40</span><span style="color: #000000">);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;SetValue(sender)<br />
<img id="_1943_2025_Open_Image" onclick="this.style.display='none'; document.getElementById('_1943_2025_Open_Text').style.display='none'; document.getElementById('_1943_2025_Closed_Image').style.display='inline'; document.getElementById('_1943_2025_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_1943_2025_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1943_2025_Closed_Text').style.display='none'; document.getElementById('_1943_2025_Open_Image').style.display='inline'; document.getElementById('_1943_2025_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1943_2025_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_1943_2025_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">TBSelectData</span><span style="color: #000000">"</span><span style="color: #000000">).value</span><span style="color: #000000">=</span><span style="color: #000000">sender.value;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">body</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">div&nbsp;style</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">margin-top:50;&nbsp;margin-left:100px</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">TBSelectData</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;style</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">position:relative</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;onclick</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">ShowDiv(this)</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">a</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;&lt;!--</span><span style="color: #000000">position:relative是必须的,为了设置展开的层处于文本框下</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">div&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">DivData</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;style</span><span style="color: #000000">=</span><span style="color: #000000">""</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">button&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">bt1</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;onclick</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">HidOffest();SetValue(this)</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">button&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">bt2</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;onclick</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">HidOffest();SetValue(this)</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">div</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">div</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">body</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">html</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span></div>
</div>
&nbsp;<br />
 <img src ="http://www.cnblogs.com/zhuibobo/aggbug/978836.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42936/" target="_blank">[新闻]金融风暴改写富豪榜排名　巴菲特资产超盖茨</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>JavaScript笔记(Table)-3</title><link>http://www.cnblogs.com/zhuibobo/articles/978833.html</link><dc:creator>zhuibobo</dc:creator><author>zhuibobo</author><pubDate>Fri, 30 Nov 2007 13:10:00 GMT</pubDate><guid>http://www.cnblogs.com/zhuibobo/articles/978833.html</guid><wfw:comment>http://www.cnblogs.com/zhuibobo/comments/978833.html</wfw:comment><comments>http://www.cnblogs.com/zhuibobo/articles/978833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/zhuibobo/comments/commentRss/978833.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zhuibobo/services/trackbacks/978833.html</trackback:ping><description><![CDATA[JavaScript中的Table
<table id="AutoNumber1" style="border-collapse: collapse" bordercolor="#111111" cellspacing="0" cellpadding="0" width="600" border="1">
    <tbody>
        <tr>
            <td>&lt;table/&gt;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td>caption</td>
            <td>指向&lt;caption/&gt;</td>
        </tr>
        <tr>
            <td>tBodies</td>
            <td>&lt;tbody/&gt;元素的集合</td>
        </tr>
        <tr>
            <td>tFoot</td>
            <td>指向&lt;tfoot&gt;元素</td>
        </tr>
        <tr>
            <td>tHead</td>
            <td>指向&lt;thead&gt;元素</td>
        </tr>
        <tr>
            <td>rows</td>
            <td>表格中所有行的集合</td>
        </tr>
        <tr>
            <td>createTHead()</td>
            <td>创建&lt;thead/&gt;元素并将其放入表格</td>
        </tr>
        <tr>
            <td>createTFoot()</td>
            <td>创建&lt;tfoot/&gt;元素并将其放入表格</td>
        </tr>
        <tr>
            <td>createCaption()</td>
            <td>创建&lt;caption/&gt;元素并将其放入表格</td>
        </tr>
        <tr>
            <td>deleteTHead()</td>
            <td>删除&lt;thead/&gt;元素</td>
        </tr>
        <tr>
            <td>deleteTFoot()</td>
            <td>删除&lt;tfoot/&gt;元素</td>
        </tr>
        <tr>
            <td>deleteCaption()</td>
            <td>删除&lt;caption/&gt;元素</td>
        </tr>
        <tr>
            <td>deleteRow(position)</td>
            <td>删除指定位置上的行</td>
        </tr>
        <tr>
            <td>insertRow(position)</td>
            <td>在rows集合中的指定位置上插入一个新行</td>
        </tr>
        <tr>
            <td>&lt;tbody/&gt;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td>rows</td>
            <td>&lt;tbody/&gt;中所有行的集合</td>
        </tr>
        <tr>
            <td>deleteRow(position)</td>
            <td>删除指定位置上的行</td>
        </tr>
        <tr>
            <td>insertRow(position)</td>
            <td>在rows集合中的指定位置上插入一个新行</td>
        </tr>
        <tr>
            <td>&lt;tr/&gt;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td>cells</td>
            <td>&lt;tr/&gt;元素中所有的单元格的集合</td>
        </tr>
        <tr>
            <td>deleteCell(position)</td>
            <td>删除给定位置上的单元格</td>
        </tr>
        <tr>
            <td>insertCell(position)</td>
            <td>在cells集合的给定位置上插入一个新的单元格</td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cnblogs.com/zhuibobo/aggbug/978833.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42936/" target="_blank">[新闻]金融风暴改写富豪榜排名　巴菲特资产超盖茨</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item></channel></rss>