﻿<?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>BlogJava-把永恒在一刹那间收藏-文章分类-javascript</title><link>http://www.blogjava.net/gm_jing/category/13226.html</link><description>生活之点点滴滴</description><language>zh-cn</language><lastBuildDate>Wed, 04 Apr 2012 09:34:37 GMT</lastBuildDate><pubDate>Wed, 04 Apr 2012 09:34:37 GMT</pubDate><ttl>60</ttl><item><title>[转]jQuery对象与dom对象相互转换</title><link>http://www.blogjava.net/gm_jing/articles/373100.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Sat, 31 Mar 2012 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/373100.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/373100.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/373100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/373100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/373100.html</trackback:ping><description><![CDATA[<p><strong>什么是jQuery对象？</strong></p>
<p>---<span style="background-color: yellow">就是通过jQuery包装DOM对象后产生的对象。jQuery对象是jQuery独有的，其可以使用jQuery里的方法。</span></p>
<p>比如：</p>
<p>$("#test").html() 意思是指：获取ID为test的元素内的html代码。其中html()是jQuery里的方法</p>
<p>这段代码等同于用DOM实现代码：</p>
<p>&nbsp;</p>
<table style="border-bottom: #0099cc 1px solid; border-left: #0099cc 1px solid; table-layout: fixed; border-top: #0099cc 1px solid; border-right: #0099cc 1px solid" border="0" cellspacing="0" cellpadding="6" width="95%" align="center">
<tbody>
<tr>
<td style="word-wrap: break-word" bgcolor="#ddedfb">document.getElementById("id").innerHTML;</td></tr></tbody></table>
<p>&nbsp;</p>
<p><span style="background-color: yellow">虽然jQuery对象是包装DOM对象后产生的，但是jQuery无法使用DOM对象的任何方法，同理DOM对象也不能使用jQuery里的方法.乱使用会报</span><span style="background-color: yellow">错</span>。比如：$("#test").innerHTML、document.getElementById("id").html()之类的写法都是错误的。</p>
<p>还有一个要注意的是：用#id作为选择符取得的是jQuery对象与document.getElementById("id")得到的DOM对象，这两者并不等价。请参看如下说的两者间的转换。</p>
<p>既然jQuery有区别但也有联系，那么jQuery对象与DOM对象也可以相互转换。在再两者转换前首先我们给一个约定：如果一个获取的是 jQuery对象，那么我们在变量前面加上$，如：var $variab = jQuery对象；如果获取的是DOM对象，则与习惯普通一样：var variab = DOM对象；这么约定只是便于讲解与区别，实际使用中并不规定。</p>
<p><strong>jQuery对象转成DOM对象：</strong></p>
<p>两种转换方式将一个jQuery对象转换成DOM对象：[index]和.get(index);</p>
<p><span style="background-color: yellow">(1)jQuery对象是一个数据对象，可以通过[index]的方法，来得到相应的DOM对象。</span></p>
<p>如：var $v =$("#v") ; //jQuery对象</p>
<p>var v=$v[0]; //DOM对象</p>
<p>alert(v.checked) //检测这个checkbox是否被选中</p>
<p><span style="background-color: yellow">(2)jQuery本身提供，通过.get(index)方法，得到相应的DOM对象</span></p>
<p>如：var $v=$("#v"); //jQuery对象</p>
<p>var v=$v.get(0); //DOM对象</p>
<p>alert(v.checked) //检测这个checkbox是否被选中</p>
<p><strong>DOM对象转成jQuery对象:</strong></p>
<p>对于已经是一个DOM对象，<span style="background-color: yellow">只需要用$()把DOM对象包装起来，就可以获得一个jQuery对象了。$(DOM对象)</span></p>
<p>如：var v=document.getElementById("v"); //DOM对象</p>
<p>var $v=$(v); //jQuery对象</p>
<p>转换后，就可以任意使用jQuery的方法了。</p>
<p>通过以上方法，可以任意的相互转换jQuery对象和DOM对象。需要再强调注意的是：DOM对象才能使用DOM中的方法，jQuery对象是不可以用DOM中的方法。</p><img src ="http://www.blogjava.net/gm_jing/aggbug/373100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2012-03-31 10:10 <a href="http://www.blogjava.net/gm_jing/articles/373100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用的js验证数字，电话号码，传真，邮箱，手机号码，邮编，日期 </title><link>http://www.blogjava.net/gm_jing/articles/322723.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Fri, 04 Jun 2010 05:16:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/322723.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/322723.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/322723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/322723.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/322723.html</trackback:ping><description><![CDATA[<br />
1、数字<br />
function testisNum(object)<br />
{<br />
&nbsp; &nbsp;var s =document.getElementById(object.id).value;<br />
&nbsp; &nbsp; if(s!="")<br />
&nbsp; &nbsp; {<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(isNaN(s))<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;alert("请输入数字");<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;object.value="";<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;object.focus();<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br />
&nbsp; &nbsp; }<br />
}<br />
<br />
2、电话号码，传真<br />
<br />
//校验普通电话、传真号码：可以&#8220;+&#8221;开头，除数字外，可含有&#8220;-&#8221;<br />
function isTel(object)<br />
{<br />
//国家代码(2到3位)-区号(2到3位)-电话号码(7到8位)-分机号(3位)"<br />
var s =document.getElementById(object.id).value; <br />
var pattern =/^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;<br />
//var pattern
=/(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/;
<br />
&nbsp; &nbsp;&nbsp;&nbsp;if(s!="")<br />
&nbsp; &nbsp;&nbsp;&nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(!pattern.exec(s))<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
alert('请输入正确的电话号码:电话号码格式为国家代码(2到3位)-区号(2到3位)-电话号码(7到8位)-分机号(3位)"');<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; object.value="";<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; object.focus();<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br />
&nbsp; &nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
3、邮箱<br />
function Check(object)<br />
{ <br />
var s =document.getElementById(object.id).value; <br />
&nbsp; &nbsp;var pattern
=/^[a-zA-Z0-9_\-]{1,}@[a-zA-Z0-9_\-]{1,}\.[a-zA-Z0-9_\-.]{1,}$/;<br />
&nbsp; &nbsp;&nbsp; &nbsp; if(s!="")<br />
&nbsp; &nbsp;&nbsp; &nbsp; {<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(!pattern.exec(s))<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;alert('请输入正确的邮箱地址');<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;object.value="";<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;object.focus();<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br />
&nbsp; &nbsp;&nbsp; &nbsp; }<br />
&nbsp; &nbsp;&nbsp; &nbsp;<br />
}<br />
<br />
4、手机号码<br />
<br />
//校验手机号码：必须以数字开头，除数字外，可含有&#8220;-&#8221;<br />
function isMobile(object)<br />
{<br />
&nbsp;&nbsp;var s =document.getElementById(object.id).value; <br />
&nbsp;&nbsp;var reg0 = /^13\d{5,9}$/;<br />
&nbsp;&nbsp;var reg1 = /^153\d{4,8}$/;<br />
&nbsp;&nbsp;var reg2 = /^159\d{4,8}$/;<br />
&nbsp;&nbsp;var reg3 = /^0\d{10,11}$/;<br />
&nbsp;&nbsp;var my = false;<br />
&nbsp;&nbsp;if (reg0.test(s))my=true;<br />
&nbsp;&nbsp;if (reg1.test(s))my=true;<br />
&nbsp;&nbsp;if (reg2.test(s))my=true;<br />
&nbsp;&nbsp;if (reg3.test(s))my=true;<br />
&nbsp; &nbsp; if(s!="")<br />
&nbsp; &nbsp; {<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if (!my)<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;alert('请输入正确的手机号码');<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;object.value="";<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;object.focus();<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br />
&nbsp; &nbsp; }<br />
}<br />
<br />
<br />
//校验日期<br />
function isdate(object)<br />
{<br />
var s =document.getElementById(object.id).value; <br />
var pattern
=/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\<img src="http://www.hanzuwang.com/bbs/images/smilies/default/sad.gif" smilieid="2" alt="" border="0" />[0-5]?[0-9])((\s)|(\<img src="http://www.hanzuwang.com/bbs/images/smilies/default/sad.gif" smilieid="2" alt="" border="0" />[0-5]?[0-9])))))?$/;<br />
&nbsp; &nbsp;&nbsp;&nbsp;if(s!="")<br />
&nbsp; &nbsp;&nbsp;&nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(!pattern.exec(s))<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; alert('请输入正确的日期');<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; object.value="";<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; object.focus();<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br />
&nbsp; &nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
}<br />
5、邮编<br />
<br />
//校验(国内)邮政编码<br />
function isPostalCode(object)<br />
{<br />
var s =document.getElementById(object.id).value; <br />
var pattern =/^[0-9]{6}$/;<br />
&nbsp; &nbsp;&nbsp;&nbsp;if(s!="")<br />
&nbsp; &nbsp;&nbsp;&nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(!pattern.exec(s))<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; alert('请输入正确的邮政编码');<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; object.value="";<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; object.focus();<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br />
&nbsp; &nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
6、日期<br />
//校验日期<br />
function isdate(object)<br />
{<br />
var s =document.getElementById(object.id).value; <br />
var pattern
=/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\<img src="http://www.hanzuwang.com/bbs/images/smilies/default/sad.gif" smilieid="2" alt="" border="0" />[0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$/;<br />
&nbsp; &nbsp;&nbsp;&nbsp;if(s!="")<br />
&nbsp; &nbsp;&nbsp;&nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(!pattern.exec(s))<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; alert('请输入正确的日期');<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; object.value="";<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; object.focus();<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br />
&nbsp; &nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
}<br />
<br />
一、清除空格<br />
String.prototype.trim = function()//去除空格<br />
{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return this.replace(/(^[\s]*)|([\s]*$)/g, "");<br />
}<br />
<br />
二、检查一个字符串是否包含特殊字符<br />
/*<br />
功能：检查传入的字符串中是否包含特殊字符<br />
参数：str-要检查的字符串<br />
输出："1"表示字符串不包含特殊字符，验证成功；否则返回"0"<br />
相关说明：空字符串可通过验证<br />
*/<br />
function CheckSpecialString(str)<br />
{<br />
StringFilter = new Array ("'" ,"\\", ".", ",", ";",
"/","&lt;","}","%","*");//可以向StringFilter中添加要过滤的字符<br />
i=StringFilter.length;<br />
j=str.length;<br />
for (k=0;k&lt;i;k++)<br />
{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;for (m=0;m&lt;j;m++)<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; temp1=str.charAt(m);<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; temp2=StringFilter[k];<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if (temp1==temp2)<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; {<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return 0;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br />
}<br />
return 1;<br />
}<br />
<br />
<font color="#ff99cc"></font><br />
1）&nbsp;&nbsp;"^\\d+$"　　//非负整数（正整数&nbsp; &nbsp;+&nbsp; &nbsp;0）&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;"^[0-9]*[1-9][0-9]*$"　　//正整数&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;"^((-\\d+)|(0+))$"　　//非正整数（负整数&nbsp; &nbsp;+&nbsp; &nbsp;0）&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;"^-[0-9]*[1-9][0-9]*$"　　//负整数&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;"^-?\\d+$"　　　　//整数&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;"^\\d+(\\.\\d+)?$"　　//非负浮点数（正浮点数&nbsp; &nbsp;+&nbsp; &nbsp;0）&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"
//正浮点数&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"　　//非正浮点数（负浮点数&nbsp; &nbsp;+&nbsp; &nbsp;0）&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"
//负浮点数&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;"^(-?\\d+)(\\.\\d+)?$"　　//浮点数 <br />
<br />
测试： <br />
&lt;script&gt; <br />
function forcheck(ss){ <br />
var&nbsp; &nbsp;type="^[0-9]*[1-9][0-9]*$"; <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;var&nbsp; &nbsp;re&nbsp; &nbsp;=&nbsp; &nbsp;new&nbsp; &nbsp;RegExp(type); <br />
&nbsp; &nbsp;&nbsp; &nbsp; if(ss.match(re)==null) <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{ <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;alert( "请输入大于零的整数!"); <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} <br />
} <br />
&lt;/script&gt;
<img src ="http://www.blogjava.net/gm_jing/aggbug/322723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-06-04 13:16 <a href="http://www.blogjava.net/gm_jing/articles/322723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[引用]apply/call/caller/callee/bi</title><link>http://www.blogjava.net/gm_jing/articles/320462.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Mon, 10 May 2010 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/320462.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/320462.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/320462.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/320462.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/320462.html</trackback:ping><description><![CDATA[<strong>一、call 方法 <br />
</strong>调用一个对象的一个方法，以另一个对象替换当前对象(其实就是更改对象的内部指针，即改
变对象的this指向的内容)。 <br />
Js代码 <br />
call([thisObj[,arg1[, arg2[, [,.argN]]]]]) <br />
参
数 <br />
thisObj <br />
可选项。将被用作当前对象的对象。 <br />
arg1, arg2, , argN <br />
可选项。将被传递方法
参数序列。 <br />
说明 <br />
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由
thisObj 指定的新对象。如果没有提供 thisObj 参数，那么 Global 对象被用作 thisObj。 <br />
Js代码 <br />
<div class="codetitle"><span style="cursor: pointer;" onclick="doCopy('code15348')"><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code15348"> <br />
&lt;input type="text" id="myText"
value="input text"&gt; Code <br />
function Obj(){this.value="对象！";} <br />
var
value="global 变量"; <br />
function Fun1(){alert(this.value);} <br />
window.Fun1();
//global 变量 <br />
Fun1.call(window); //global 变量 <br />
Fun1.call(document.getElementById('myText'));
//input text <br />
Fun1.call(new Obj()); //对象！ <br />
</div>
<br />
Js代码 <br />
Code
<br />
<div class="codetitle"><span style="cursor: pointer;" onclick="doCopy('code7062')"><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code7062"> <br />
var first_object = { <br />
num: 42 <br />
};
<br />
var second_object = { <br />
num: 24 <br />
}; <br />
function
multiply(mult) { <br />
return this.num * mult; <br />
} <br />
multiply.call(first_object,
5); // returns 42 * 5 <br />
multiply.call(second_object, 5); // returns
24 * 5 <br />
</div>
<br />
<strong>二、apply方法</strong> <br />
apply方法的第一个参数也是要传入给
当前对象的对象，即函数内部的this。后面的参数都是传递给当前对象的参数。 <br />
对于apply和call两者在作用上是相同的，但两者在参数上
有区别的。对于第一个参数意义都一样，但对第二个参数：apply传入的是一个参数数组，也就是将多个参数组合成为一个数组传入，而call则作为
call的参数传入（从第二个参数开始）。 <br />
如
func.call(func1,var1,var2,var3)对应的apply写法为：func.apply(func1,
[var1,var2,var3])同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入。 <br />
Js
代码 <br />
<div class="codetitle"><span style="cursor: pointer;" onclick="doCopy('code85036')"><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code85036"> <br />
var func=new
function(){this.a="func"} <br />
var myfunc=function(x,y){ <br />
var
a="myfunc"; <br />
alert(this.a); <br />
alert(x + y); <br />
} <br />
myfunc.call(func,"var","
fun");// "func" "var fun" <br />
myfunc.apply(func,["var"," fun"]);//
"func" "var fun" <br />
</div>
<br />
<strong>三、caller 属性 <br />
</strong>返回一个对函数
的引用，即调用了当前函数的函数体。 <br />
functionName.caller :functionName 对象是所执行函数的名称。 <br />
说
明: <br />
对于函数来说，caller 属性只有在函数执行时才有定义。 如果函数是由 JScript 程序的顶层调用的，那么 caller
包含的就是 null 。如果在字符串上下文中使用 caller 属性，那么结果和 functionName.toString
一样，也就是说，显示的是函数的反编译文本。 <br />
Js代码 <br />
<div class="codetitle"><span style="cursor: pointer;" onclick="doCopy('code24557')"><u>复制代码</u></span>
代码如下:</div>
<div class="codebody" id="code24557"> <br />
function
CallLevel(){ <br />
if (CallLevel.caller == null) <br />
alert("CallLevel was
called from the top level."); <br />
else <br />
alert("CallLevel was called
by another function:
"+CallLevel.caller); <br />
} <br />
function funCaller(){ <br />
CallLevel(); <br />
}
<br />
CallLevel(); <br />
funCaller() <br />
</div>
<br />
<strong>四、callee属性 <br />
</strong>返
回正被执行的 Function 对象，也就是所指定的 Function 对象的正文。 <br />
[function.]arguments.callee:
可选项 function 参数是当前正在执行的 Function 对象的名称。 <br />
说明: <br />
callee 属性的初始值就是正被执行的
Function 对象。 <br />
callee 属性是 arguments 对象的一个成员，它表示对函数对象本身的引用，这有利于匿 <br />
函
数的递归或者保证函数的封装性，例如下边示例的递归计算1到n的自然数之和。而该属性 <br />
仅当相关函数正在执行时才可用。还有需要注意的是
callee拥有length属性，这个属性有时 <br />
用于验证还是比较好的。arguments.length是实参长
度，arguments.callee.length是 <br />
形参长度，由此可以判断调用时形参长度是否和实参长度一致。 <br />
Js代码 <br />
<div class="codetitle"><span style="cursor: pointer;" onclick="doCopy('code5994')"><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code5994"> <br />
//callee可以打印其本身 <br />
function
calleeDemo() { <br />
alert(arguments.callee); <br />
} <br />
//用于验证参数 <br />
function
calleeLengthDemo(arg1, arg2) { <br />
if
(arguments.length==arguments.callee.length) { <br />
window.alert("验证形参和实参长
度正确！"); <br />
return; <br />
} else { <br />
alert("实参长度：" +arguments.length); <br />
alert("
形参长度： " +arguments.callee.length); <br />
} <br />
} <br />
//递归计算 <br />
var sum =
function(n){ <br />
if (n &lt;= 0) <br />
return 1; <br />
else <br />
return n
＋arguments.callee(n - 1) <br />
} <br />
</div>
<br />
<strong>五、bind</strong> <br />
Js
代码 <br />
<div class="codetitle"><span style="cursor: pointer;" onclick="doCopy('code88240')"><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code88240"> <br />
var first_object = { <br />
num: 42 <br />
};
<br />
var second_object = { <br />
num: 24 <br />
}; <br />
function
multiply(mult) { <br />
return this.num * mult; <br />
} <br />
Function.prototype.bind
= function(obj) { <br />
var method = this, <br />
temp = function() { <br />
return
method.apply(obj, arguments); <br />
}; <br />
return temp; <br />
} <br />
var
first_multiply = multiply.bind(first_object); <br />
first_multiply(5); //
returns 42 * 5 <br />
var second_multiply = multiply.bind(second_object); <br />
second_multiply(5);
// returns 24 * 5 <br />
</div>
<br />
<strong>六、JS闭包(Closure)</strong> <br />
所
谓&#8220;闭包&#8221;，指的是一个拥有许多变量和绑定了这些变量的环境的表达式（通常是一个函数），因而这些变量也是该表达式的一部分。 <br />
关于闭包，最简单
的描述就是 ECMAScript
允许使用内部函数－－即函数定义和函数表达式位于另一个函数的函数体内。而且，这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明
的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时，就会形成闭包。也就是说，内部函数会在外部函数返回后被执行。而当这个内部
函数执行时，它仍然必需访问其外部函数的局部变量、参数以及其他内部函数。这些局部变量、参数和函数声明（最初时）的值是外部函数返回时的值，但也会受到
内部函数的影响。 <br />
简而言之，闭包的作用就是在out
function执行完并返回后，闭包使得Javascript的垃圾回收机制GC不会收回out function所占用的资源，因为out
function的内部函数inner function的执行需要依赖out function中的变量。 <br />
闭包的两个特点： <br />
1、作
为一个函数变量的一个引用 - 当函数返回时，其处于激活状态。 <br />
2、一个闭包就是当一个函数返回时，一个没有释放资源的栈区。 <br />
例1：
<br />
Html代码 <br />
<div class="codetitle"><span style="cursor: pointer;" onclick="doCopy('code14943')"><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code14943"> <br />
&lt;script
type="text/javascript"&gt; <br />
function setupSomeGlobals() { <br />
//
Local variable that ends up within closure <br />
var num = 666; <br />
//
Store some references to functions as global variables <br />
gAlertNumber =
function() { alert(num); } <br />
gIncreaseNumber = function() { num++; } <br />
gSetNumber
= function(x) { num = x; } <br />
} <br />
&lt;/script&gt; <br />
&lt;button
onclick="setupSomeGlobals()"&gt;生成 - setupSomeGlobals()&lt;/button&gt; <br />
&lt;button
onclick="gAlertNumber()"&gt;输出值 - gAlertNumber()&lt;/button&gt; <br />
&lt;button
onclick="gIncreaseNumber()"&gt;增加 - gIncreaseNumber()&lt;/button&gt; <br />
&lt;button
onclick="gSetNumber(5)"&gt;赋值5 - gSetNumber(5)&lt;/button&gt; <br />
</div>
<br />
例2： <br />
Html代码 <br />
<div class="codetitle"><span style="cursor: pointer;" onclick="doCopy('code34833')"><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code34833"> <br />
&lt;script
type="text/javascript"&gt; <br />
function newClosure(someNum, someRef) { <br />
//
Local variables that end up within closure <br />
var num = someNum; <br />
var
anArray = [1,2,3]; <br />
var ref = someRef; <br />
return function(x) { <br />
num
+= x; <br />
anArray.push(num); <br />
alert('num: ' + num + <br />
' nanArray '
+ anArray.toString() + <br />
' nref.someVar ' + ref.someVar); <br />
} <br />
}
<br />
var closure1 = newClosure(40, {someVar:' never-online'}) <br />
var
closure2 = newClosure(99, {someVar:' BlueDestiny'}) <br />
closure1(4) <br />
closure2(3)
<br />
&lt;/script&gt; <br />
</div>
<br />
例3： <br />
Js代码 <br />
<div class="codetitle"><span style="cursor: pointer;" onclick="doCopy('code1721')"><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code1721"> <br />
&lt;script language="javascript"&gt;
<br />
/* 声明一个全局变量 - getImgInPositionedDivHtml -
并将一次调用一个外部函数表达式返回的内部函数赋给它。 <br />
这个内部函数会返回一个用于表示绝对定位的 DIV 元素包围着一个 IMG 元素 的
HTML 字符串，这样一来， <br />
所有可变的属性值都由调用该函数时的参数提供： <br />
*/ <br />
var
getImgInPositionedDivHtml = (function(){ <br />
/* 外部函数表达式的局部变量 - buffAr -
保存着缓冲数组。这个数组只会被创建一次，生成的数组实例对内部函数而言永远是可用的 <br />
因此，可供每次调用这个内部函数时使用。 <br />
其中的
空字符串用作数据占位符，相应的数据 <br />
将由内部函数插入到这个数组中： <br />
*/ <br />
var buffAr = [ <br />
'&lt;div
id="', <br />
'', //index 1, DIV ID 属性 <br />
'"
style="position:absolute;top:', <br />
'', //index 3, DIV 顶部位置 <br />
'px;left:',
<br />
'', //index 5, DIV 左端位置 <br />
'px;width:', <br />
'', //index 7, DIV 宽度 <br />
'px;height:',
<br />
'', //index 9, DIV 高度 <br />
'px;overflow:hidden;"&gt;&lt;img src="', <br />
'',
//index 11, IMG URL <br />
'" width="', <br />
'', //index 13, IMG 宽度 <br />
'"
height="', <br />
'', //index 15, IMG 调蓄 <br />
'" alt="', <br />
'', //index 17,
IMG alt 文本内容 <br />
'"&gt;&lt;/div&gt;' <br />
]; <br />
/*
返回作为对函数表达式求值后结果的内部函数对象。 <br />
这个内部函数就是每次调用执行的函数 <br />
-
getImgInPositionedDivHtml( ... ) - <br />
*/ <br />
return (function(url, id,
width, height, top, left, altText){ <br />
/* 将不同的参数插入到缓冲数组相应的位置： <br />
*/ <br />
buffAr[1]
= id; <br />
buffAr[3] = top; <br />
buffAr[5] = left; <br />
buffAr[13] =
(buffAr[7] = width); <br />
buffAr[15] = (buffAr[9] = height); <br />
buffAr[11]
= url; <br />
buffAr[17] = altText; <br />
/* 返回通过使用空字符串（相当于将数组元素连接起来） <br />
连接
数组每个元素后形成的字符串： <br />
*/ <br />
return buffAr.join(''); <br />
}); //:内部函数表达式结束。 <br />
})
();//自调用 <br />
alert(getImgInPositionedDivHtml);//显示返回的函数 <br />
alert(getImgInPositionedDivHtml("img.gif","img",100,50,0,0,"Test"));
<br />
&lt;/script&gt; <br />
</div>
<br />
说明：其中的关键技巧在于通过执行一个单行（in-line）函数表达式创建
一个额外的执行环境，而将该函数表达式返回的内部函数作为在外部代码中使用的函数。此时，缓冲数组被定义为函数表达式的一个局部变量。这个函数表达式只需
执行一次，而数组也只需创建一次，就可以供依赖它的函数重复使用。 <br />
七、原型链 <br />
ECMAScript 为 Object
类型定义了一个内部 [[prototype]]
属性。这个属性不能通过脚本直接访问，但在属性访问器解析过程中，则需要用到这个内部[[prototype]]
属性所引用的对象链－－即原型链。可以通过一个公共的 prototype 属性，来对与内部的 [[prototype]]
属性对应的原型对象进行赋值或定义。 <br />
例1： <br />
Js代码 <br />
<div class="codetitle"><span style="cursor: pointer;" onclick="doCopy('code1058')"><u>复制代码</u></span>
代码如下:</div>
<br />
&lt;script
language="javascript"&gt; <br />
function NumObject(formalParameter){ <br />
this.testNumber
= formalParameter; <br />
} <br />
function StrObject(formalParameter){ <br />
this.testString
= formalParameter; <br />
} <br />
//用 NumObject类的实例替换了所有与
StrObject类的实例相关联的原型。 <br />
StrObject.prototype =new NumObject(6); <br />
var
objRef = new StrObject( "String_Value" ); <br />
//当某个属性访问器尝试读取由 objectRef
所引用的对象的属性值时，整个原型链都会被搜索。 <br />
//不论是在对象或对象的原型中，读取命名属性值的时候只返回首先找到的属性值。而当为对象的
命名属性赋值时，如果对象自身不存在该属性则创建相应的属性。 <br />
alert(objRef.testString);//output
"String_Value" <br />
alert(objRef.testNumber);//output "6" <br />
alert(objRef.toString);
<br />
//StrObject 的实例拥有一个原型链。该链中的第一个对象是在创建后被指定给 StrObject 构造函数的 prototype
属性的 NumObject 的一个实例。NumObject 的实例也有一个原型，即与 Object.prototype
所引用的对象对应的默认的 Object 对象的原型。最后， Object.prototype 有一个值为 null
的原型，因此这条原型链到此结束。 <br />
objRef.testNumber = 3;//对象自身不存在该属性则创建相应的属性 <br />
alert(objRef.testNumber);//
自身有了属性，属性访问器不会再进一步搜索原型链 <br />
alert(NumObject.prototype.isPrototypeOf(objRef));//
output "true" <br />
&lt;/script&gt;
<img src ="http://www.blogjava.net/gm_jing/aggbug/320462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-05-10 10:51 <a href="http://www.blogjava.net/gm_jing/articles/320462.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【引用】 ExtJS--数据存储与传输</title><link>http://www.blogjava.net/gm_jing/articles/315776.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Thu, 18 Mar 2010 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/315776.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/315776.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/315776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/315776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/315776.html</trackback:ping><description><![CDATA[<p>Ext.data在命名空间中定义了一系列store、reader和proxy。Grid和ComboxBox都是以Ext.data为媒介获取数据的，它包含异步加载、类型转换、分页等功能。EXT默认支持Array、JSON、XML等数据格式，可以通过Memory、HTTP、 ScriptTag等方式获得这些格式的数据。如果要实现新的协议和新的数据结构，只需要扩展reader和proxy即可。本章主要介绍EXT中的数据存储与传输。</p>
<h3>一、Ext.data.Connection</h3>
<p>Ext.data.Connection主要用于在Ext.data.HttpProxy和Ext.data.ScriptTagProxy中执行与后台交互的任务，它会从指定的URL获得数据,并把后台返回的数据交给HttpProxy或ScriptTagProxy处理，Ext.data.Connection的使用方式如下面所示：</p>
<p>(1) 首先创建一个新的Ext.data.Connection实例。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;conn=</span><span class="keyword">new</span><span>&nbsp;Ext.data.Connection({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autoAbort:<span class="keyword">false</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defaultHeaders:{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;referer:<span class="string">'http://www.sina.com.cn'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disableCaching:<span class="keyword">false</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extraParams:{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:<span class="string">'name'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method:<span class="string">'GET'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeout:300,&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:<span class="string">'01-01.txt'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="82">var
conn=new Ext.data.Connection({
autoAbort:false,
defaultHeaders:{
referer:'http://www.sina.com.cn'
},
disableCaching:false,
extraParams:{
name:'name'
},
method:'GET',
timeout:300,
url:'01-01.txt'
});</textarea>
<p>&nbsp;</p>
<p>(2) 在创建conn之后，可以调用request()函数发送请求，处理返回的结果。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>conn.request({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:function(response){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert(<span class="string">'info'</span><span>,response.responseText);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;failure:function(){&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert(<span class="string">'warn'</span><span>,</span><span class="string">'failure'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="9" cols="84">conn.request({
success:function(response){
Ext.Msg.alert('info',response.responseText);
},
failure:function(){
Ext.Msg.alert('warn','failure');
}
});</textarea>&nbsp;&nbsp;
<p>&nbsp;</p>
<p>(3) Ext.data.Connection还提供了abort([Number transactionId])函数，当同时有多个请求发生时，根据指定的事务id放弃其中的某一个请求，如果不指定id,则会放弃最后一个请求。</p>
<h3>二、Ext.data.Record</h3>
<p>Ext.data.Record就是一个设定了内部数据类型的对象，它是Ext.data.Store的最基本组成部分。 Ext.data.Record的主要功能是保存数据，并且在内部数据发生改变时记录修改的状态，它还可以保留修改之前的原始值。</p>
<p>(1) 我们使用Ext.data.Record时，通常都是由create()函数开始,首先用create()函数创建一个自定义的Recore类型，如下所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;PersonRecord=Ext.data.Record.create([&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{name:<span class="string">'name'</span><span>,type:</span><span class="string">'string'</span><span>},&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{name:<span class="string">'sex'</span><span>,type:</span><span class="string">'int'</span><span>}&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]);&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="4" cols="77">var
PersonRecord=Ext.data.Record.create([
{name:'name',type:'string'},
{name:'sex',type:'int'}
]);</textarea>
<p>&nbsp;</p>
<p>(2) PersonRecord就是我们定义的新类型，然后我们使用new关键字创建PersonRecord的实例：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;boy=</span><span class="keyword">new</span><span>&nbsp;PersonRecord({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:<span class="string">'boy'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sex:0&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="6" cols="78">var
boy=new PersonRecord({
name:'boy',
sex:0
});</textarea>
<p>&nbsp;</p>
<p>(3) 现在，我们得到了PersonRecord的实例boy，如何得到它的属性值？以下有三种方法：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>alert(boy.data.name);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(boy.data[<span class="string">'name'</span><span>]);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(boy.<span class="keyword">get</span><span>[</span><span class="string">'name'</span><span>]);&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="4" cols="78">alert(boy.data.name);
alert(boy.data['name']);
alert(boy.get['name']);</textarea>
<p>&nbsp;</p>
<h3>三、Ext.data.Store</h3>
<p>Ext.data.Store是EXT中用来进行数据交换和数据交互的标准中间件，无论是Grid还是ComBox，都是通过它实现数据读取、类型转换、排序分列和搜索等操作。Ext.data.Store中有一个Ext.data.Record数组，所有数据都存放在这些 Ext.data.Record实例中，为后面的读取和修改操作做准备。</p>
<p>(1) 在使用之前，首先要创建一个Ext.data.Store的实例，如下面代码：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/17/4557183.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;data=[&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<span class="string">'boy'</span><span>,0],&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<span class="string">'girl'</span><span>,1]&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;];&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;store=<span class="keyword">new</span><span>&nbsp;Ext.data.Store({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy:<span class="keyword">new</span><span>&nbsp;Ext.data.MemoryProxy(data),&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reader:<span class="keyword">new</span><span>&nbsp;Ext.data.ArrayReader({},PersonRecord)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;store.load();&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="10" cols="75">var
data=[
['boy',0],
['girl',1]
];
var store=new Ext.data.Store({
proxy:new Ext.data.MemoryProxy(data),
reader:new Ext.data.ArrayReader({},PersonRecord)
});
store.load();</textarea>
<p>&nbsp;</p>
<p>(2) 每个store最少需要两个组件的支持，分别是proxy和reader，proxy是用于从某个途径读取原始数据，reader用于将原始数据转换成 Record实例。</p>
<h3>四、小结</h3>
<p>本章主要详细介绍了Ext.data.Record和Ext.data.Store的功能和基本使用方法，这两个类结合起来形成了Ext.data 中的主体数据模型，很多组件都是建立在它们之上的，至于其他的常用的proxy,reader,store:SimpleStore和JsonStore 则在后面学习中给出详细介绍。</p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/315776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-03-18 14:03 <a href="http://www.blogjava.net/gm_jing/articles/315776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【引用】ExtJS的--工具栏和菜单</title><link>http://www.blogjava.net/gm_jing/articles/315774.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Thu, 18 Mar 2010 06:02:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/315774.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/315774.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/315774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/315774.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/315774.html</trackback:ping><description><![CDATA[<p>菜单的种类很多，包括下拉菜单、分组菜单、右键菜单等等，右键菜单与Window桌面上单击右键弹出的菜单效果一样，只是样式不同，菜单上的内容包括文字、单选框、按钮等。对于EXT来说，这些菜单的实现都非常简单。</p>
<p>我们可以在一个面板的顶端或底端放置一横排功能按钮，按下不同的按钮时会执行不同的操作。我们把这个横条称为工具条，放在工具条上的按钮称为菜单。本章将详细介绍EXT中工具栏和菜单的使用方法。</p>
<h3>一、简单菜单</h3>
<p>创建一个简单工具条的方法如下，注意的一点是HTML代码必须要有：&lt;div id="toolbar"&gt;&lt;/div&gt;</p>
<p>过程大致包括：先创建一个工具条，用工具条的render()函数把它渲染在DIV上，然后调用Toolbar的add函数，向Toolbar添加 4个按钮，同时还可以添加单击处理事件。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;tb=<span class="keyword">new</span><span>&nbsp;Ext.Toolbar();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tb.render(<span class="string">'toolbar'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tb.add({&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">"新建N"</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler:function(){&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert(<span class="string">'提示'</span><span>,</span><span class="string">'新建'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">"修改C"</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">"删除"</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">"显示"</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="85">Ext.onReady(function(){
var tb=new Ext.Toolbar();
tb.render('toolbar');
tb.add({
text:"新建N",
handler:function(){
Ext.Msg.alert('提示','新建');
}
},{
text:"修改C"
},{
text:"删除"
},{
text:"显示"
});
});</textarea>
<p>&nbsp;</p>
<p>效果如图1所示：</p>
<p style="text-align: center"><strong><img height="207" alt="1" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/1633886278532968750.jpg" width="582" /></strong></p>
<p style="text-align: center"><strong>图1 简单的工具条</strong></p>
<h3>二、向菜单中添加分隔线</h3>
<p>分隔线显示就是一条水平线，可以使用它将菜单中不同类型的菜单项分隔显示，Ext中向菜单中添加分隔线的方式有两种。</p>
<p><span style="color: rgb(255,0,0)">1、使用连字符或'separator'作为参数，</span>如下面的代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;menu1=</span><span class="keyword">new</span><span>&nbsp;Ext.menu.Menu({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'菜单一'</span><span>},&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'菜单二'</span><span>}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//menu1.add('-');</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu1.add(<span class="string">'separator'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;tb=<span class="keyword">new</span><span>&nbsp;Ext.Toolbar();&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tb.render(<span class="string">'toolbar'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tb.add({&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'新建'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu:menu1&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="81">var
menu1=new Ext.menu.Menu({
items:[
{text:'菜单一'},
{text:'菜单二'}
]
});
//menu1.add('-');
menu1.add('separator');
var tb=new Ext.Toolbar();
tb.render('toolbar');
tb.add({
text:'新建',
menu:menu1
});</textarea>
<p>&nbsp;</p>
<p><span style="color: rgb(255,0,0)">2、用Ext.menu.Separator的实例作为参数</span>，如下面的代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>menu1.add(</span><span class="keyword">new</span><span>&nbsp;Ext.menu.Separator());&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" cols="81">menu1.add(new
Ext.menu.Separator());</textarea>&nbsp;
<p>&nbsp;</p>
<p>具体效果如图2所示：</p>
<p style="text-align: center"><strong><img height="86" alt="2.1" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/2633886286004218750.jpg" width="265" /></strong></p>
<p style="text-align: center"><strong>图2.1 无分隔线效果</strong></p>
<p style="text-align: center"><strong><img height="110" alt="2.2" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/3633886286048437500.jpg" width="322" /></strong></p>
<p style="text-align: center"><strong>图2.2 具有分隔线效果</strong></p>
<h3>三、多级菜单</h3>
<p>下拉菜单可以嵌套，而且嵌套的层数似乎任意的，我们先来看一个两层结构的菜单，实现方法很简单，只要在下拉菜单中再加一个menu菜单参数并指定对应的下级菜单即可，如下面代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;menuHistory=</span><span class="keyword">new</span><span>&nbsp;Ext.menu.Menu({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'今天'</span><span>},&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'昨天'</span><span>},&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'一周'</span><span>},&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'一年'</span><span>}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;menuFile=<span class="keyword">new</span><span>&nbsp;Ext.menu.Menu({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'新建'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'打开'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'保存'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'历史'</span><span>,menu:menuHistory&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'关闭'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;tb=<span class="keyword">new</span><span>&nbsp;Ext.Toolbar();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tb.render(<span class="string">'toolbar'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tb.add({&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'文件'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu:menuFile&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="85">var
menuHistory=new Ext.menu.Menu({
items:[
{text:'今天'},
{text:'昨天'},
{text:'一周'},
{text:'一年'}
]
});
var menuFile=new Ext.menu.Menu({
items:[{
text:'新建'
},{
text:'打开'
},{
text:'保存'
},{
text:'历史',menu:menuHistory
},{
text:'关闭'
}]
});
var tb=new Ext.Toolbar();
tb.render('toolbar');
tb.add({
text:'文件',
menu:menuFile
});</textarea>
<p>&nbsp;</p>
<p>实现效果图如下所示：</p>
<p style="text-align: center"><strong><img height="211" alt="4" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/4633886291343906250.jpg" width="368" /></strong></p>
<p style="text-align: center"><strong>图3 两层结构的嵌套菜单</strong></p>
<p>在上面的实例中，我们可以直接使用menu参数指定在菜单的哪个部分加上子菜单。利用这些方法，我们就可以轻易实现自己想要的功能菜单了。</p>
<h3>四、高级菜单</h3>
<p>除了上面提到的最基本的菜单按钮，EXT还为我们提供了一些功能比较复杂的菜单控件，供我们直接调用，本节将详细介绍这些高级菜单的使用方法和实例。</p>
<p><span style="color: rgb(255,0,0)">4.1 多选菜单和单选菜单</span></p>
<p>我们使用Ext.menu.CheckItem来创建多选菜单,text参数表示菜单上显示的文字，checked参数表示当前菜单项是否被选中.checkHandler用来指定选中菜单时执行的处理菜单.单选菜单也基本类似，具体使用代码如下：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;menuCheckbox=</span><span class="keyword">new</span><span>&nbsp;Ext.menu.Menu({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">new</span><span>&nbsp;Ext.menu.CheckItem({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'粗体'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">checked</span><span>:</span><span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkHandler:function(item,<span class="keyword">checked</span><span>){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert(<span class="string">'多选'</span><span>,(</span><span class="keyword">checked</span><span>?</span><span class="string">'选中'</span><span>:</span><span class="string">'取消'</span><span>)+</span><span class="string">'粗体'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}),&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">new</span><span>&nbsp;Ext.menu.CheckItem({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'斜体 '</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">checked</span><span>:</span><span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkHandler:function(item,<span class="keyword">checked</span><span>){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert(<span class="string">'多选'</span><span>,(</span><span class="keyword">checked</span><span>?</span><span class="string">'选中'</span><span>:</span><span class="string">'取消'</span><span>)+</span><span class="string">'斜体'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;tb=<span class="keyword">new</span><span>&nbsp;Ext.Toolbar();&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tb.render(<span class="string">'toolbar'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tb.add({&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'字体'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu:menuCheckbox&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="81">var
menuCheckbox=new Ext.menu.Menu({
items:[
new Ext.menu.CheckItem({
text:'粗体',
checked:true,
checkHandler:function(item,checked){
Ext.Msg.alert('多选',(checked?'选中':'取消')+'粗体');
}
}),
new Ext.menu.CheckItem({
text:'斜体',
checked:true,
checkHandler:function(item,checked){
Ext.Msg.alert('多选',(checked?'选中':'取消')+'斜体');
}
})
]
})
var tb=new Ext.Toolbar();
tb.render('toolbar');
tb.add({
text:'字体',
menu:menuCheckbox
});</textarea>
<p>&nbsp;</p>
<p>效果图如图4所示</p>
<p style="text-align: center"><strong><img height="92" alt="4" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/5633886298878593750.jpg" width="300" /></strong></p>
<p style="text-align: center"><strong>图4 多选菜单</strong></p>
<p><span style="color: rgb(255,0,0)">4.2 时间菜单</span></p>
<p>EXT为我们提供了选择日期的菜单Ext.menu.DateMenu，它可以让我们直接把日期选择功能加入到菜单中，实现的代码如下：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>tb.add({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'日期'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu:<span class="keyword">new</span><span>&nbsp;Ext.menu.DateMenu({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler:function(dp,date){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert(<span class="string">'选择日期'</span><span>,</span><span class="string">'你选择的日期是 {0}.'</span><span>,date.format(</span><span class="string">'Y年m月d日'</span><span>));&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="10" cols="87">tb.add({
text:'日期',
menu:new Ext.menu.DateMenu({
handler:function(dp,date){
Ext.Msg.alert('选择日期','你选择的日期是{0}.',date.format('Y年m月d日'));
}
})
});</textarea>
<p>&nbsp;</p>
<p>注意，这时Ext.menu.DateMenu时一个Menu而不是MenuItem,使用时应该用menu参数将它设置成上级菜单的子菜单。实现的效果图如图5所示。</p>
<p style="text-align: center"><strong><img height="226" alt="5" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/6633886301732656250.jpg" width="239" /></strong></p>
<p style="text-align: center"><strong>图5 日期菜单</strong></p>
<p><span style="color: rgb(255,0,0)">4.3 颜色菜单</span></p>
<p>EXT为我们提供了选择颜色的功能菜单Ext.menu.ColorMenu,效果图如图6所示。</p>
<p style="text-align: center"><strong><img height="145" alt="7" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/7633886307588281250.jpg" width="303" /></strong></p>
<p style="text-align: center"><strong>图6 颜色菜单</strong></p>
<p>颜色选择菜单虽然不常用，但它的效果十分绚丽，它的用法与日期菜单相似，也有特定的handler，如下面代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4555207.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>tb.add({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'颜色'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu:<span class="keyword">new</span><span>&nbsp;Ext.menu.ColorMenu({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler:function(cm,color){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(</span><span class="keyword">typeof</span><span>&nbsp;color==</span><span class="string">'string'</span><span>){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert(<span class="string">'选择颜色'</span><span>,</span><span class="string">'选择的颜色是'</span><span>+color);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="85">tb.add({
text:'颜色',
menu:new Ext.menu.ColorMenu({
handler:function(cm,color){
if(typeof color=='string'){
Ext.Msg.alert('选择颜色','选择的颜色是'+color);
}
}
})
});</textarea>
<p>&nbsp;</p>
<h3>五、小结</h3>
<p>本章主要介绍如何创建工具条和菜单，以及如何使用下拉菜单和分级菜单对我们需要的功能按钮进行分组显示，除此之外，还关于高级菜单进行了分析。至于分页控件Ext.PagingToolbar的使用方法在后面的章节会给出介绍。</p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/315774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-03-18 14:02 <a href="http://www.blogjava.net/gm_jing/articles/315774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【引用】 ExtJS--布局</title><link>http://www.blogjava.net/gm_jing/articles/315773.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Thu, 18 Mar 2010 06:01:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/315773.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/315773.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/315773.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/315773.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/315773.html</trackback:ping><description><![CDATA[<p>所谓布局，简单来说就是决定把什么东西放到什么位置上，对于管理软件来说，一般都是首部放标题，左边放菜单栏，空余的右下方用来显示具体的内容。本章将详细介绍EXT中布局的用法。</p>
<h3>一、传统的布局方式</h3>
<p>我们可以用Ext.Viewport类对整个页面进行整体布局，具体使用方法如下：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;viewport=</span><span class="keyword">new</span><span>&nbsp;Ext.Viewport({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout:<span class="string">'border'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'north'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:40,&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'&lt;h1&gt; 薛敬明专栏&lt;/h1&gt;'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'west'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:100,&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'&lt;p&gt;菜单一&lt;/p&gt;&lt;p&gt;菜单二&lt;/p&gt;'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'center'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'主要内容'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="81">var
viewport=new Ext.Viewport({
layout:'border',
items:[{
region:'north',
height:40,
html:'&lt;h1&gt;薛敬明专栏&lt;/h1&gt;'
},{
region:'west',
width:100,
html:'&lt;p&gt;菜单一&lt;/p&gt;&lt;p&gt;菜单二&lt;/p&gt;'
},{
region:'center',
html:'主要内容'
}]
});</textarea>
<p>&nbsp;</p>
<p>效果图如图1所示：</p>
<p style="text-align: center"><strong><img height="209" alt="1" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/1633886220008593750.jpg" width="600" /></strong></p>
<p style="text-align: center"><strong>图1 传统的布局形式</strong>&nbsp;</p>
<h3>二、最常用的边框布局BorderLayout</h3>
<p>Ext.layout.BorderLayout布局把整个布局区域分成东、西、南、北、中5个部分，除了中间区域以外，其他的区域又都是可以省略的，因此我们可以利用它制作出更复杂、更灵活的布局。具体代码如下：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;viewport2=</span><span class="keyword">new</span><span>&nbsp;Ext.Viewport({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;layout:<span class="string">'border'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;items:[{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'north'</span><span>,html:</span><span class="string">'north'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'south'</span><span>,html:</span><span class="string">'south'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'east'</span><span>,html:</span><span class="string">'east'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'west'</span><span>,html:</span><span class="string">'west'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'center'</span><span>,html:</span><span class="string">'center'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;</span></li>
    <li class=""><span>});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="84">            var viewport2=new Ext.Viewport({
layout:'border',
items:[{
region:'north',html:'north'
},{
region:'south',html:'south'
},{
region:'east',html:'east'
},{
region:'west',html:'west'
},{
region:'center',html:'center'
}]
});</textarea>
<p>&nbsp;</p>
<p>效果图如图2所示。&nbsp;</p>
<p style="text-align: center"><strong><img height="199" alt="2" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/2633886220073125000.jpg" width="596" /></strong></p>
<p style="text-align: center"><strong>图2 使用BorderLayout的布局</strong></p>
<p>注意：center是绝对不能省略的，如果items中缺少了region:'center'就会报错，会造成程序中断。</p>
<h4>2.1 设置子区域的大小</h4>
<p>我们仅仅需要添加width和height参数，这样就可以指定每个子区域的大小了。但是，north和south两个区域只能指定高度值，宽度值由BorderLayout自动计算；east和west只能指定宽度值，高度值由BorderLayout自动计算；center区域的大小由其他4个部分决定。设置的代码如下所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;viewport2=</span><span class="keyword">new</span><span>&nbsp;Ext.Viewport({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout:<span class="string">'border'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'north'</span><span>,html:</span><span class="string">'north'</span><span>,height:120&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'south'</span><span>,html:</span><span class="string">'south'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'east'</span><span>,html:</span><span class="string">'east'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'west'</span><span>,html:</span><span class="string">'west'</span><span>,width:40&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'center'</span><span>,html:</span><span class="string">'center'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="85">var
viewport2=new Ext.Viewport({
layout:'border',
items:[{
region:'north',html:'north',height:120
},{
region:'south',html:'south'
},{
region:'east',html:'east'
},{
region:'west',html:'west',width:40
},{
region:'center',html:'center'
}]
});</textarea>
<p>&nbsp;</p>
<h4>2.2 使用split并限制它的范围</h4>
<p>使用split后，我们可以允许用户自动拖放以改变某一个区域的大小，实现的方式只要设置split:true参数即可实现，具体代码如下。</p>
<p>实现效果图如图3所示。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;viewport=</span><span class="keyword">new</span><span>&nbsp;Ext.Viewport({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;layout:<span class="string">'border'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;items:[{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'north'</span><span>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:40,&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'&lt;h1&gt;薛敬明专栏&lt;/h1&gt;'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'west'</span><span>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'&lt;p&gt;菜单一&lt;/p&gt;&lt;p&gt;菜单二&lt;/p&gt;'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:100,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;split:<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'center'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'主要内容'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;</span></li>
    <li class=""><span>});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="84">            var viewport=new Ext.Viewport({
layout:'border',
items:[{
region:'north',
height:40,
html:'&lt;h1&gt;薛敬明专栏&lt;/h1&gt;'
},{
region:'west',
html:'&lt;p&gt;菜单一&lt;/p&gt;&lt;p&gt;菜单二&lt;/p&gt;',
width:100,
split:true
},{
region:'center',
html:'主要内容'
}]
});</textarea>
<p>&nbsp;</p>
<p style="text-align: center"><strong><img height="207" alt="3" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/3633886233185937500.jpg" width="599" /></strong></p>
<p style="text-align: center"><strong>图3 设置split:true后的效果图</strong></p>
<h4>2.3 子区域的展开和折叠</h4>
<p>该功能可以让一个区域展开和折叠(相当于隐藏)，实现的方式只需要配置几个参数即可，具体代码如下，主要配置参数是 collapsible:true，这个参数激活了某个区域的折叠功能，而且前面的title参数也是必须设置的。实现代码和效果图如下所示。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;viewport=</span><span class="keyword">new</span><span>&nbsp;Ext.Viewport({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout:<span class="string">'border'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'north'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:40,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'&lt;h1&gt; 薛敬明专栏&lt;/h1&gt;'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'west'</span><span>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'&lt;p&gt;菜单一&lt;/p&gt;&lt;p&gt;菜单二&lt;/p&gt;'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'west'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:100,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//split:true</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collapsible:<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'center'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'主要内容'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="84"> var viewport=new Ext.Viewport({
layout:'border',
items:[{
region:'north',
height:40,
html:'&lt;h1&gt;薛敬明专栏&lt;/h1&gt;'
},{
region:'west',
html:'&lt;p&gt;菜单一&lt;/p&gt;&lt;p&gt;菜单二&lt;/p&gt;',
title:'west',
width:100,
//split:true
collapsible:true
},{
region:'center',
html:'主要内容'
}]
});</textarea>
<p>&nbsp;</p>
<p style="text-align: center"><strong><img height="212" alt="4" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/4633886241732187500.jpg" width="602" /></strong></p>
<p style="text-align: center"><strong>图4 带有折叠效果的布局</strong></p>
<h3>三、制作伸缩菜单的布局——Accordion</h3>
<p>Accordion是EXT中默认布局的一部分，如果想用它，直接将区域加上layout:'accordion'即可，其他部分基本无需改动。我们利用ViewPort制作出只有west和center两个区域的BorderLayout，在west部分放上Accordion，实现方式如下面代码所示。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4554730.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;viewport=</span><span class="keyword">new</span><span>&nbsp;Ext.Viewport({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout:<span class="string">'border'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'west'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:200,&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout:<span class="string">'accordion'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layoutConfig:{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleCollapse:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;animate:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;activeOnTop:<span class="keyword">false</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'第一栏'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'第一栏'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'第二栏'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'第二栏'</span><span>&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'第三栏'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html:<span class="string">'第三栏'</span><span>&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region:<span class="string">'center'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;split:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border:<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="83">var
viewport=new Ext.Viewport({
layout:'border',
items:[{
region:'west',
width:200,
layout:'accordion',
layoutConfig:{
titleCollapse:true,
animate:true,
activeOnTop:false
},
items:[{
title:'第一栏',
html:'第一栏'
},{
title:'第二栏',
html:'第二栏'
},{
title:'第三栏',
html:'第三栏'
}]
},{
region:'center',
split:true,
border:true
}]
});</textarea>
<p>&nbsp;</p>
<p>效果图如图5所示。</p>
<p style="text-align: center"><strong><img height="211" alt="5" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/5633886250251718750.jpg" width="600" /></strong></p>
<p style="text-align: center"><strong>图5 使用了Accordion的示例</strong></p>
<p>设置了layout:'accordion'后，再使用items添加3个元素，记得每个子元素里都要加上title参数，accordion没有提供默认的标题，不设置标题是一定会出错的。与布局有关的配置项都写到layoutConfig里。</p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/315773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-03-18 14:01 <a href="http://www.blogjava.net/gm_jing/articles/315773.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【引用】 ExtJS的--树形结构 </title><link>http://www.blogjava.net/gm_jing/articles/315772.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Thu, 18 Mar 2010 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/315772.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/315772.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/315772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/315772.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/315772.html</trackback:ping><description><![CDATA[<p>在应用程序中，我们经常需要显示或处理树状结构的对象信息，比如部门信息和地区信息，树是一种非常典型的数据结构，这些信息都可以用树来表示。对于传统的HTML页面来说，完全依靠手动编码来实现树是比较困难的，因为需要写很多的JS代码，对基于AJAX异步加载来说尤其如此，不但涉及AJAX数据异步加载，还需要考虑跨浏览器支持，处理起来非常麻烦，EXT中提供了现成的树控件，通过这些控件，可以在B/S应用中快速开发出包含树形信息结构的应用。</p>
<p>本文就是详细介绍树形结构的使用过程和实例。</p>
<h3>一、创建一棵树</h3>
<p>树控件由Ext.tree.TreePanel类定义，控件的名称为TreePanel，TreePanel类继承自Panel面板，在EXT中使用树控件非常简单，我们先来看一下代码（包含配置信息）。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;html&nbsp;xmlns=</span><span class="string">"http://www.w3.org/1999/xhtml"</span><span>&nbsp;&gt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&lt;head&nbsp;id=<span class="string">"Head1"</span><span>&nbsp;runat=</span><span class="string">"server"</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;简单的树形&lt;/title&gt;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;link&nbsp;rel=<span class="string">"stylesheet"</span><span>&nbsp;type=</span><span class="string">"text/css"</span><span>&nbsp;href=</span><span class="string">"../resources/css/ext-all.css"</span><span>/&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;type=<span class="string">"text/javascript"</span><span>&nbsp;src=</span><span class="string">"../adapter/ext/ext-base.js"</span><span>&lt;/script&gt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;type=<span class="string">"text/javascript"</span><span>&nbsp;src=</span><span class="string">"../ext-all.js"</span><span>&gt;&lt;/script&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;type=<span class="string">"text/javascript"</span><span>&gt;&lt;!--&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.onReady(function(){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;tree=<span class="keyword">new</span><span>&nbsp;Ext.tree.TreePanel({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el:<span class="string">'tree'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;root=<span class="keyword">new</span><span>&nbsp;Ext.tree.TreeNode({text:</span><span class="string">'我是根'</span><span>});&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.setRootNode(root);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.render();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/head&gt;&nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;body&gt;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;div&nbsp;id=<span class="string">"tree"</span><span>&gt;&lt;/div&gt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&lt;/body&gt;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/html&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="84">&lt;html
xmlns="http://www.w3.org/1999/xhtml" &gt;
&lt;head id="Head1" runat="server"&gt;
&lt;title&gt;简单的树形&lt;/title&gt;
&lt;link rel="stylesheet" type="text/css"
href="../resources/css/ext-all.css"/&gt;
&lt;script type="text/javascript"
src="../adapter/ext/ext-base.js"&lt;/script&gt;
&lt;script type="text/javascript"
src="../ext-all.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;&lt;!--
Ext.onReady(function(){
var tree=new Ext.tree.TreePanel({
el:'tree'
});
var root=new Ext.tree.TreeNode({text:'我是根'});
tree.setRootNode(root);
tree.render();
});
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="tree"&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</textarea>
<p>&nbsp;</p>
<p>这里的参数tree表示渲染的DOM的id.HTML中应该要要有&lt;div id="tree"&gt;&lt;/div&gt;相对应，最后这棵树就出现在这个div的位置上。</p>
<p>在获得了树形面板后，就必须要设置根，因为必须有了根才可以生长枝节，最后生成完整的树，所以根是必须的。具体实现的效果如图1所示。</p>
<p style="text-align: center"><strong><img height="28" alt="1" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090914/1.jpg" width="149" /></strong></p>
<p style="text-align: center"><strong>图1 只有根的树</strong></p>
<h3>二、为树生枝展叶</h3>
<p>上面的实例代码生成一棵没有根的树，下面的代码就为树添加枝和叶，代码清单如下：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.onReady(function(){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;tree=<span class="keyword">new</span><span>&nbsp;Ext.tree.TreePanel({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el:<span class="string">'tree'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autoHeight:<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;root=<span class="keyword">new</span><span>&nbsp;Ext.tree.TreeNode({text:</span><span class="string">'区域信息'</span><span>});&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;node1=<span class="keyword">new</span><span>&nbsp;Ext.tree.TreeNode({text:</span><span class="string">'湖南省'</span><span>});&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;node3=<span class="keyword">new</span><span>&nbsp;Ext.tree.TreeNode({text:</span><span class="string">'广东省'</span><span>});&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;node2=<span class="keyword">new</span><span>&nbsp;Ext.tree.TreeNode({text:</span><span class="string">'广州市'</span><span>});&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node3.appendChild(node2);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root.appendChild(node1);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root.appendChild(node3);&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.setRootNode(root);&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.render();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;/script&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="83">&lt;script
type="text/javascript"&gt;
Ext.onReady(function(){
var tree=new Ext.tree.TreePanel({
el:'tree',
autoHeight:true
});
var root=new Ext.tree.TreeNode({text:'区域信息'});
var node1=new Ext.tree.TreeNode({text:'湖南省'});
var node3=new Ext.tree.TreeNode({text:'广东省'});
var node2=new Ext.tree.TreeNode({text:'广州市'});
node3.appendChild(node2);
root.appendChild(node1);
root.appendChild(node3);
tree.setRootNode(root);
tree.render();
});
&lt;/script&gt;</textarea>
<p>&nbsp;</p>
<p>效果图如图2所示：</p>
<p style="text-align: center"><strong><img height="79" alt="2" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090914/2.jpg" width="187" /></strong></p>
<p style="text-align: center"><strong>图2 完整的树控件</strong></p>
<p><span style="color: rgb(255,0,0)">注意：我们一方面可以通过修改&lt;div id="tree" style="height:300px;"&gt;&lt;/div&gt;来设置div高度；同时也可以设置treePanel的 autoHeight属性为tree，则可以自动计算高度，否则展开的树形控件看不到枝叶。</span></p>
<h3>三、使用TreeLoader获得数据</h3>
<p>使用上面的录入方式来获取数据不仅麻烦，而且还容易出错，Ext.tree.TreeLoader可以利用从后台获取的数据为我们组装出一棵树来，我们只需要提供数据，让treeLoader完成数据转换和装配节点的操作。</p>
<p>（1）我们要为TreePanel配置一个TreeLoader，如下面代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;tree=</span><span class="keyword">new</span><span>&nbsp;Ext.tree.TreePanel({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el:<span class="string">'tree'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loader:<span class="keyword">new</span><span>&nbsp;Ext.tree.TreeLoader({dataUrl:</span><span class="string">'data.txt'</span><span>}),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autoHeight:<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="7" cols="86">var
tree=new Ext.tree.TreePanel({
el:'tree',
loader:new Ext.tree.TreeLoader({dataUrl:'data.txt'}),
autoHeight:true
});</textarea>
<p>&nbsp;</p>
<p>（2）这里的TreeLoader仅包含一个参数{dataUrl:'data.txt'},这个dataUrl表示在树完成渲染后从何处读取数据。data.txt内容如下：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>[&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'not&nbsp;leaf'</span><span>},&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'is&nbsp;leaf'</span><span>,leaf:</span><span class="keyword">true</span><span>}&nbsp;&nbsp;</span></span></li>
    <li class=""><span>]&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="5" cols="58">[
{text:'not leaf'},
{text:'is leaf',leaf:true}
]</textarea>
<p>&nbsp;</p>
<p>(3) 现在查看页面依然只能看到根，没有读取数据并显示到页面上，因为我们使用的TreeNode不支持Ajax，我们需要将其改成 AsyncTreeNode,这样才可以实现我们想要的异步加载效果，如下面的代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;root=</span><span class="keyword">new</span><span>&nbsp;Ext.tree.AsyncTreeNode({text:</span><span class="string">'区域信息'</span><span>});&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="3" cols="66">var
root=new Ext.tree.AsyncTreeNode({text:'区域信息'});</textarea>&nbsp;
<p>&nbsp;</p>
<p>注意:必须将root.expand(true,true)修改成root.expand()避免无限循环展开树枝。</p>
<h3>四、读取本地JSON数据</h3>
<p>读取本地JSON其实是一种是用使用TreeLoader的另类方法。因为有时候树形的数据并不多，为了获取少量的数据而是用AJAX访问后台实在不划算。首先为TreePanel设置一个参数为空的TreeLoader，如下面代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;tree=</span><span class="keyword">new</span><span>&nbsp;Ext.tree.TreePanel({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el:<span class="string">'tree'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loader:<span class="keyword">new</span><span>&nbsp;Ext.tree.TreeLoader(),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autoHeight:<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="8" cols="77">var
tree=new Ext.tree.TreePanel({
el:'tree',
loader:new Ext.tree.TreeLoader(),
autoHeight:true
});</textarea>
<p>&nbsp;</p>
<p>然后，设置一个根节点，并为这个根节点设置children属性，如下面代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;root=</span><span class="keyword">new</span><span>&nbsp;Ext.tree.AsyncTreeNode({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'我是根'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;children:[&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'Leaf&nbsp;No.1'</span><span>,leaf:</span><span class="keyword">true</span><span>},&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'Leaf&nbsp;No.1'</span><span>,leaf:</span><span class="keyword">true</span><span>}&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.setRootNode(root);&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="10" cols="76">var
root=new Ext.tree.AsyncTreeNode({
text:'我是根',
children:[
{text:'Leaf No.1',leaf:true},
{text:'Leaf No.1',leaf:true}
]
});
tree.setRootNode(root); </textarea>
<p>&nbsp;</p>
<p>这里需要注意几点：</p>
<p>(1) 必须设置TreeLoader,否则根节点会一直处于在读取状态，无法获得children中定义的子节点</p>
<p>(2) 根节点必须是AsyncTreeNode,如果是TreeNode,也无法生成子节点</p>
<p>(3) 子节点中的叶子节点必须都加上leaf:true，否则会一直显示读取状态。</p>
<h3>五、右键菜单</h3>
<p>树形弹出的右键菜单效果图如图3所示：</p>
<p style="text-align: center"><strong><img height="182" alt="3" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090914/3.jpg" width="337" /></strong></p>
<p style="text-align: center"><strong>图3 右键菜单效果</strong></p>
<p>具体实现步骤如下：</p>
<p>(1) 制作自定义菜单，如下面的代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;contextmenu=</span><span class="keyword">new</span><span>&nbsp;Ext.menu.Menu({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:<span class="string">'theContextMenu'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'点击'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler:function(){&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">' 我被点中了'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="10" cols="73">var
contextmenu=new Ext.menu.Menu({
id:'theContextMenu',
items:[{
text:'点击',
handler:function(){
alert('我被点中了');
}
}]
});</textarea>
<p>&nbsp;</p>
<p>(2) 绑定contextmenu时间，如下面代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>tree.on(</span><span class="string">"contextmenu"</span><span>,function(node,e){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.preventDefault();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node.select();&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contextmenu.showAt(e.getXY());&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="7" cols="78">tree.on("contextmenu",function(node,e){
e.preventDefault();
node.select();
contextmenu.showAt(e.getXY());
});</textarea>
<p>&nbsp;</p>
<h3>六、修改节点的默认图标</h3>
<p>实际上，每个树形节点都有icon和iconCls属性，他们负责制定节点的图标，现在我们来修改树种节点的图标，无论是通过new手工创建的节点，还是通过JSON读取到的节点，设置方式都是一样，如下面代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;root1=</span><span class="keyword">new</span><span>&nbsp;Ext.tree.TreeNode({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'icon'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;icon:<span class="string">'user_female.png'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="6" cols="61">var
root1=new Ext.tree.TreeNode({
text:'icon',
icon:'user_female.png'
});</textarea>
<p>&nbsp;</p>
<h3>七、从节点弹出对话框</h3>
<p>下面的代码可以让对话框看起来像是从标题上飞出来的：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>tree.on(</span><span class="string">"click"</span><span>,function(node){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.show({&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'提示'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:<span class="string">"你单击了"</span><span>+node,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;animEl:node.ui.textNode&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="9" cols="72">tree.on("click",function(node){
Ext.Msg.show({
title:'提示',
msg:"你单击了"+node,
animEl:node.ui.textNode
});
});</textarea>&nbsp;&nbsp;
<p>&nbsp;</p>
<h3>八、节点提示信息</h3>
<p>当我们把鼠标停留在某个节点的上方时，便会出现提示信息，为了实现这种效果，我们需要对提供的JSON数据做一些修改，在JSON中添加对应的节点提示信息，我们给每个节点数据都加上<span style="color: rgb(255,0,0)">qtip:'xxx'</span>参数，这个节点就可以显示提示信息了。</p>
<p>不过，仅仅为JSON添加这个参数还不能在页面上显示提示信息，需要先在JS中对EXT的提示功能进行初始化。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.QuickTips.init();</span><span class="comment">//开启提示功能</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="1" cols="59">Ext.QuickTips.init();//
开启提示功能</textarea>
<p>&nbsp;</p>
<p>上面这行代码必须在其他功能加载前完成，建议写在onReady函数的第一行。具体代码如下：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.onReady(function(){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.QuickTips.init();&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;tree=<span class="keyword">new</span><span>&nbsp;Ext.tree.TreePanel({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el:<span class="string">'tree'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loader:<span class="keyword">new</span><span>&nbsp;Ext.tree.TreeLoader(),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autoHeight:<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;root=<span class="keyword">new</span><span>&nbsp;Ext.tree.AsyncTreeNode({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'我是根'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;children:[&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'Leaf&nbsp;No.1'</span><span>,qtip:</span><span class="string">'No1'</span><span>,leaf:</span><span class="keyword">true</span><span>},&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'Leaf&nbsp;No.1'</span><span>,qtip:</span><span class="string">'No2'</span><span>,leaf:</span><span class="keyword">true</span><span>}&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;root1=<span class="keyword">new</span><span>&nbsp;Ext.tree.TreeNode({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'icon'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;icon:<span class="string">'user_female.png'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.setRootNode(root);&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//root.expand(true,true);</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;contextmenu=<span class="keyword">new</span><span>&nbsp;Ext.menu.Menu({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:<span class="string">'theContextMenu'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'点击'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler:function(){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">'我被点中了'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.on(<span class="string">"contextmenu"</span><span>,function(node,e){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.preventDefault();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node.select();&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contextmenu.showAt(e.getXY());&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.on(<span class="string">"click"</span><span>,function(node){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.show({&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'提示'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:<span class="string">"你单击了"</span><span>+node,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;animEl:node.ui.textNode&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.render();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="83">&lt;script
type="text/javascript"&gt;
Ext.onReady(function(){
Ext.QuickTips.init();
var tree=new Ext.tree.TreePanel({
el:'tree',
loader:new Ext.tree.TreeLoader(),
autoHeight:true
});
var root=new Ext.tree.AsyncTreeNode({
text:'我是根',
children:[
{text:'Leaf No.1',qtip:'No1',leaf:true},
{text:'Leaf No.1',qtip:'No2',leaf:true}
]
});
var root1=new Ext.tree.TreeNode({
text:'icon',
icon:'user_female.png'
});
tree.setRootNode(root);
//root.expand(true,true);
var contextmenu=new Ext.menu.Menu({
id:'theContextMenu',
items:[{
text:'点击',
handler:function(){
alert('我被点中了');
}
}]
});
tree.on("contextmenu",function(node,e){
e.preventDefault();
node.select();
contextmenu.showAt(e.getXY());
});
tree.on("click",function(node){
Ext.Msg.show({
title:'提示',
msg:"你单击了"+node,
animEl:node.ui.textNode
});
});
tree.render();
});
&lt;/script&gt;</textarea>
<p>&nbsp;</p>
<h3>九、为节点设置超链接</h3>
<p>虽然我们完全可以监听click事件，但是直接在节点树形中设置超链接的地址也是一个好主意，这是很多人想实现的功能，具体的代码如下：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/15/4551429.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;root=</span><span class="keyword">new</span><span>&nbsp;Ext.tree.AsyncTreeNode({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'我是根'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;children:[&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'新浪网'</span><span>,qtip:</span><span class="string">'新浪网 '</span><span>,leaf:</span><span class="keyword">true</span><span>,href:</span><span class="string">'http://www.sina.com.cn'</span><span>},&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:<span class="string">'百度中国'</span><span>,qtip:</span><span class="string">'搜索引擎'</span><span>,leaf:</span><span class="keyword">true</span><span>,href:</span><span class="string">'http://www.baidu.cn'</span><span>,hrefTarget:</span><span class="string">'_blank'</span><span>}&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="10" cols="87">var
root=new Ext.tree.AsyncTreeNode({
text:'我是根',
children:[
{text:'新浪网',qtip:'新浪网',leaf:true,href:'http://www.sina.com.cn'},
{text:'百度中国',qtip:'搜索引擎
',leaf:true,href:'http://www.baidu.cn',hrefTarget:'_blank'}
]
});</textarea>
<p>&nbsp;</p>
<p class="right articalinfo"></p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/315772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-03-18 13:58 <a href="http://www.blogjava.net/gm_jing/articles/315772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[引用]ExtJS—表单与输入控件 </title><link>http://www.blogjava.net/gm_jing/articles/315771.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Thu, 18 Mar 2010 05:56:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/315771.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/315771.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/315771.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/315771.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/315771.html</trackback:ping><description><![CDATA[<p>表单在EXT中非常受欢迎，初看这些输入控件，好像只是修改了CSS样式而已，但是如果用Firebug查看一下DOM，似乎确实只有CSS发生了变化，隐藏在漂亮界面下的依然是原来的input控件，如果你想使用EXT提供的一些绚丽的功能，建议尝试EXT的表单(Form)和对应的输入控件。本文就是简单介绍表单与输入控件的使用方法。</p>
<h3>一、创建一个简单的表单</h3>
<p>1、具体配置信息参考上篇文章</p>
<p>2、创建简单表单的实现代码如下所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;mce:script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&gt;&lt;!--&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.onReady(function(){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form=<span class="keyword">new</span><span>&nbsp;Ext.form.FormPanel({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defaultType:<span class="string">'textfield'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labelAlign:<span class="string">'right'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'form'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labelWidth:50,&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:220,&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:[{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:<span class="string">' 文本框'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}],&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buttons:[{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:<span class="string">'按钮'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.render(<span class="string">"div1"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="comment">//&nbsp;--&gt;&lt;/mce:script&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="87">&lt;mce:script
type="text/javascript"&gt;&lt;!--
Ext.onReady(function(){
var form=new Ext.form.FormPanel({
defaultType:'textfield',
labelAlign:'right',
title:'form',
labelWidth:50,
frame:true,
width:220,
items:[{
fieldLabel:'文本框'
}],
buttons:[{
text:'按钮'
}]
});
form.render("div1");
});
// --&gt;&lt;/mce:script&gt;</textarea>
<p>&nbsp;</p>
<p>3、注意HTML中无需定义太多东西，只需要定义个div id='div1'就可以实现，初始配置显然变得更紧凑，利用items和buttons指定包含的控件和按钮。具体实现效果如图1所示。</p>
<p style="text-align: center"><strong><img height="103" alt="1" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090910/1.jpg" width="221" /></strong></p>
<p style="text-align: center"><strong>图1 简单的表单</strong></p>
<h3>二、FormPanel和BasicForm详解</h3>
<p>如上面的实例所示，我们需要定义一个Ext.form.FormPanel,然后在里面设置field,引入Ext.form.FormPanel 的最大好处就是利于布局，Ext.form.FormPanel继承了Ext.Panel,作为一个Panel,我们可以把 Ext.form.FormPanel放到Ext.Viewport中作为整个页面布局的一部分，同时也可以利用items指定 Ext.form.FormPanel内部的子组件。如其他的Panel一样，我们可以通过xtype来指定每个子组件的类型，而不必手工创建它们。</p>
<h3>三、EXT支持的控件</h3>
<p>EXT提供了TextField、TextArea、CheckBox、Radio、ComboBox、DateField、HtmlEditor 这些通用控件，以及Ext 2.0新增的Hidden和TimeField.</p>
<h4>3.1 文本输入控件Ext.form.TextField</h4>
<p>直接继承Ext.form.Field，这是一个专门用来输入文本数据的输入控件，最常用的功能就是可以检测内部输入的数据是否为空，还可以控制输入数据的内容以及最大最小长度，如下面的代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form=<span class="keyword">new</span><span>&nbsp;Ext.form.TextField({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:<span class="string">'输入'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allowBlank:<span class="keyword">false</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emptyText:<span class="string">'请输入&#8230;'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxLenght:50,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minLength:10&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.render(<span class="string">"div1"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="10" cols="76">Ext.onReady(function(){
var form=new Ext.form.TextField({
fieldLabel:'输入',
allowBlank:false,
emptyText:'请输入&#8230;',
maxLenght:50,
minLength:10
});
form.render("div1");
});</textarea>
<p>&nbsp;</p>
<h4>3.2 多行文本输入控件Ext.form.TextArea</h4>
<p>Ext.form.TextArea也是用来输入文本的输入控件，与Ext.form.TextField不同之处在于它可以输入多行文本，除此以外，两者的用法都是相同的。如下面代码所示,preventScrollbars是用于防止出现滚动条的。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form=<span class="keyword">new</span><span>&nbsp;Ext.form.TextArea({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:200,&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grow:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preventScrollbars:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:<span class="string">'empty'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allowBank:<span class="keyword">false</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emptyText:<span class="string">'空'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxLength:50,&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minLength:10&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.render(<span class="string">"div1"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="13" cols="82">Ext.onReady(function(){
var form=new Ext.form.TextArea({
width:200,
grow:true,
preventScrollbars:true,
fieldLabel:'empty',
allowBank:false,
emptyText:'空',
maxLength:50,
minLength:10
});
form.render("div1");
});</textarea>
<p>&nbsp;</p>
<h4>3.3 日期输入控件Ext.form.DateField</h4>
<p>Ext.form.DateField是平时经常用到的日期选择控件，除了弹出日历选择日期的功能之外，还支持所有Ext.form.Field以及Ext.form.TextField中定义的功能，如下面代码所示，format表示如何保存显示选中的日期，我们可以采用任意的模式显示选中的日期，disableDays的参数值是一个数组，内部可以包括0至7的整数，它可以禁止用户选择一周内的指定日期。效果图如图2所示。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form=<span class="keyword">new</span><span>&nbsp;Ext.form.DateField({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:<span class="string">'日期'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emptyText:<span class="string">'请选择'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format:<span class="string">'Y-m-d'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disabledDays:[0,6]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.render(<span class="string">"div1"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="11" cols="82">Ext.onReady(function(){
var form=new Ext.form.DateField({
fieldLabel:'日期',
emptyText:'请选择',
format:'Y-m-d',
disabledDays:[0,6]
});
form.render("div1");
});</textarea>
<p>&nbsp;</p>
<p style="text-align: center"><img height="220" alt="2" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090910/2.jpg" width="182" /></p>
<p style="text-align: center"><strong>图2 日期输入控件(禁止选择每周的周六和周日)</strong></p>
<h4>3.4 时间输入控件Ext.form.TimeField</h4>
<p>Ext.form.TimeField是用来选择时间的输入控件，它可以通过制定一天中的起始时间、结束时间以及时间间隔的方式来为用户提供可供选择的时间，如下面的代码所示,我们将起始时间设置为上午10点，结束时间设置为下午14点，时间间隔为30分钟。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form=<span class="keyword">new</span><span>&nbsp;Ext.form.TimeField({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:<span class="string">'时间'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emptyText:<span class="string">'请选择'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minValue:<span class="string">'10:00&nbsp;AM'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxValue:<span class="string">'14:00&nbsp;PM'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;increment:30&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.render(<span class="string">"div1"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="11" cols="85">Ext.onReady(function(){
var form=new Ext.form.TimeField({
fieldLabel:'时间',
emptyText:'请选择',
minValue:'10:00 AM',
maxValue:'14:00 PM',
increment:30
});
form.render("div1");
});</textarea>
<p>&nbsp;</p>
<h4>3.5&nbsp;&nbsp;在线编辑器Ext.form.HtmlEditor</h4>
<p>Ext.form.HtmlEditor是一个简易的在线编辑器，能对文本进行各项设置。Ext.form.HtmlEditor的页面显示样式如图3所示。</p>
<p style="text-align: center"><strong><img height="187" alt="3" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090910/3.jpg" width="504" /></strong></p>
<p style="text-align: center"><strong>图3 使用在线编辑器编辑文本样式</strong></p>
<p>Ext.form.HtmlEditor的使用方法如下面的代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form=<span class="keyword">new</span><span>&nbsp;Ext.form.HtmlEditor({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:<span class="string">'在线编辑器'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableAlignments:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableColors:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableFont:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableFontSize:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableFormat:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableLinks:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableLists:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableSourceEdit:<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.render(<span class="string">"div1"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="84">Ext.onReady(function(){
var form=new Ext.form.HtmlEditor({
fieldLabel:'在线编辑器',
enableAlignments:true,
enableColors:true,
enableFont:true,
enableFontSize:true,
enableFormat:true,
enableLinks:true,
enableLists:true,
enableSourceEdit:true
});
form.render("div1");
});</textarea>
<p>&nbsp;</p>
<h4>3.6&nbsp;&nbsp;隐藏域Ext.form.Hidden</h4>
<p>Ext.form.Hidden直接继承自Ext.form.Field，我们可以通过它的setValue()和getValue()函数对它执行赋值和取值操作，但它不会显示在页面上。具体代码如下：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;field=</span><span class="keyword">new</span><span>&nbsp;Ext.form.Hidden({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;name:<span class="string">'hiddenId'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>});&nbsp;&nbsp;</span></li>
    <li class=""><span>field.setValue(<span class="string">'some&nbsp;thing'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>var&nbsp;value=filed.getValue();&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="6" cols="69">var
field=new Ext.form.Hidden({
name:'hiddenId'
});
field.setValue('some thing');
var value=filed.getValue();</textarea>
<p>&nbsp;</p>
<h4>3.7&nbsp;&nbsp;下拉输入框Ext.form.TriggerField</h4>
<p>Ext.form.TriggerField是ComboBox、DateField和TimeField的父类，它既可以手工录入数据，也可以通过选择录入数据，为了显示下拉选择的功能，我们需要覆写它的onTriggerClick()函数以实现弹出窗口，如下面的代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form=<span class="keyword">new</span><span>&nbsp;Ext.form.TriggerField({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:<span class="string">'选择'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:<span class="string">'name'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSelect:function(record){&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onTriggerClick:function(){&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(</span><span class="keyword">this</span><span>.menu==</span><span class="keyword">null</span><span>){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.menu=selectMenu;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.menu.show(</span><span class="keyword">this</span><span>.el,</span><span class="string">'tl-bl?'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.render(<span class="string">"div1"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="15" cols="85">Ext.onReady(function(){
var form=new Ext.form.TriggerField({
fieldLabel:'选择',
name:'name',
onSelect:function(record){
},
onTriggerClick:function(){
if(this.menu==null){
this.menu=selectMenu;
}
this.menu.show(this.el,'tl-bl?');
}
});
form.render("div1");
});</textarea>
<p>&nbsp;</p>
<h3>四、数据校验</h3>
<p>数据校验非常有必要，因为用户输入的数据有时候是不可靠的，EXT把验证封装到了表单的控件中，下面详细介绍如何使用它们。</p>
<h4>4.1 输入不能为空</h4>
<p>最基本的验证就是文本框或者其他控件中必须输入值，如下面的代码，allowBlank默认值为true，也就是说可以不输入数据，将它改成 false,文本框如果没有输入值就会出现红线。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form=<span class="keyword">new</span><span>&nbsp;Ext.form.TextField({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:<span class="string">'text'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:<span class="string">'文本框'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allowBlank:<span class="keyword">false</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.render(<span class="string">"div1"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="8" cols="80">Ext.onReady(function(){
var form=new Ext.form.TextField({
name:'text',
fieldLabel:'文本框',
allowBlank:false
});
form.render("div1");
});</textarea>
<p>&nbsp;</p>
<h4>4.2 最大长度和最小长度</h4>
<p>限制输入的最大长度和最小长度是一种常见的校验方式，数据库只容许输入255个字符，当用户输入的数据超出最大长度时就会引起错误。如下面代码所示，我们设置最大长度不能超过10个字符，最小长度不能小于5个字符。效果图如图4所示。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form=<span class="keyword">new</span><span>&nbsp;Ext.form.TextField({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:<span class="string">'text'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:<span class="string">'文本框'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxLength:10,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minLenght:5&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.render(<span class="string">"div1"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="9" cols="68">Ext.onReady(function(){
var form=new Ext.form.TextField({
name:'text',
fieldLabel:'文本框',
maxLength:10,
minLenght:5
});
form.render("div1");
});</textarea>
<p>&nbsp;</p>
<p style="text-align: center"><strong><img height="26" alt="4" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090910/4.jpg" width="130" /></strong></p>
<p style="text-align: center"><strong>图4 最大长度校验</strong></p>
<h4>4.3 借助vtype</h4>
<p>EXT提供了一套默认的校验方案，其实就是一系列输入规则和错误提示。如果使用它们，就不需要再去背那一长串正则表达式，只要记住vtype的值即可，然后配置在空间中即可，如下面代码所示,这里我们给vtype设置的是E-mail，限制text只能使用邮箱地址的格式，非常简单。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form=<span class="keyword">new</span><span>&nbsp;Ext.form.TextField({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:<span class="string">'text'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:<span class="string">'文本框'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtype:<span class="string">'email'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.render(<span class="string">"div1"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<textarea class="c-sharp" style="display: none" name="code" rows="8" cols="76">Ext.onReady(function(){
var form=new Ext.form.TextField({
name:'text',
fieldLabel:'文本框',
vtype:'email'
});
form.render("div1");
});</textarea>
<p>&nbsp;</p>
<p>默认情况下，vtype一共有4种验证信息：alpha:只能输入英文字母;alphanum:只能输入字母和数字;email:电子邮箱;url:网址</p>
<h4>4.4 自定义校验规则</h4>
<p>其实自定义校验规则就是允许自定义正则表达式，可以编写一个regex对输入数据进行校验，这样一来，无论是何种形式的数据，都能对其进行判断，如下面代码所示，我们使用regex验证只能输入汉字的情况。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/11/4538843.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form=<span class="keyword">new</span><span>&nbsp;Ext.form.TextField({&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:<span class="string">'text'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:<span class="string">'文本框'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regex:&nbsp;/^[\u4E00-\u9FA5]+$/,&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regexText:<span class="string">'只能输入汉字'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.render(<span class="string">"div1"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/315771.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-03-18 13:56 <a href="http://www.blogjava.net/gm_jing/articles/315771.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> [引]ExtJS-配置和表格控件使用</title><link>http://www.blogjava.net/gm_jing/articles/315768.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Thu, 18 Mar 2010 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/315768.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/315768.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/315768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/315768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/315768.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ExtJS时一套AJAX控件,本人认为它是目前我见过最好最美的JS控件库，所以非常有学习和使用价值，如果你还没有接触过ExtJS或者压根对其不感兴趣，那么没有必要看下去了,ExtJS是一套完整的RIA解决方案，也因为功能完整造成了ext-all.js有400多k,由于是基于JS和 CSS的功能实现，对客户端机器性能也有一定的要求，即不支持IE6以下的版本。如果您的项目对网页响应时间有严格的限制，或...&nbsp;&nbsp;<a href='http://www.blogjava.net/gm_jing/articles/315768.html'>阅读全文</a><img src ="http://www.blogjava.net/gm_jing/aggbug/315768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-03-18 13:48 <a href="http://www.blogjava.net/gm_jing/articles/315768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[引用]ExtJs-拖放以及弹出窗口</title><link>http://www.blogjava.net/gm_jing/articles/315765.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Thu, 18 Mar 2010 05:29:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/315765.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/315765.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/315765.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/315765.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/315765.html</trackback:ping><description><![CDATA[<p>本章主要简单介绍下拖放以及弹出窗口的简单应用。</p>
<h3>一、拖放</h3>
<p>拖放在EXT的组件体系中占有很重要的地位，很多组件内部都封装了对拖放功能的实现，本节主要讨论拖放的组件结构和范例，重点是单独使用 Ext.dd包实现拖放功能，而不是与其他的组件相结合。</p>
<h4>1.1 使用范围</h4>
<p>(1) 可以拖放表格里的行，让他们按照指定的方式排列</p>
<p>(2) 可以拖放树里的节点，把节点从一个枝干拖向另外一个枝干</p>
<p>(3) 在表格和树之间也可以进行拖放</p>
<p>(4) 布局的split也是一种拖放</p>
<p>(5) resize也算是拖放，改变大小。</p>
<h4>1.2 简单应用</h4>
<p>对于B/S系统而言，拖放一直是一项很少用到的功能，我们一直认为实现拖放功能很复杂，其实在EXT中只要很少的代码即可实现，如下面代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(function(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">new</span><span>&nbsp;Ext.dd.DDProxy(</span><span class="string">'block'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="4" cols="75">Ext.onReady(function(){
new Ext.dd.DDProxy('block');
});</textarea> </p>
<p>&nbsp;</p>
<p>对应的HTML部分的代码如下：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;div&nbsp;id=</span><span class="string">"block"</span><span>&nbsp;style=</span><span class="string">"background:red;"</span><span>&nbsp;mce_style=</span><span class="string">"background:red;"</span><span>&gt;&nbsp;&lt;/div&gt;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" cols="87">&lt;div
id="block" style="background:red;"
mce_style="background:red;"&gt;&nbsp;&lt;/div&gt;</textarea> </p>
<p>&nbsp;</p>
<h4>1.3 另外一个实例</h4>
<p>我们先查看一下详细的代码：</p>
<p>
<div class="dp-highlighter ">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;html&nbsp;xmlns=</span><span class="string">"http://www.w3.org/1999/xhtml"</span><span>&nbsp;&gt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&lt;head&nbsp;id=<span class="string">"Head1"</span><span>&nbsp;runat=</span><span class="string">"server"</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;拖放效果&lt;/title&gt;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;link&nbsp;rel=<span class="string">"stylesheet"</span><span>&nbsp;type=</span><span class="string">"text/css"</span><span>&nbsp;href=</span><span class="string">"../resources/css/ext-all.css"</span><span>&nbsp;mce_href=</span><span class="string">"resources/css/ext-all.css"</span><span>&nbsp;/&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mce:script&nbsp;type=<span class="string">"text/javascript"</span><span>&nbsp;src=</span><span class="string">"../adapter/ext/ext-base.js"</span><span>&nbsp;mce_src=</span><span class="string">"adapter/ext/ext-base.js"</span><span>&gt;&lt;/mce:script&gt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mce:script&nbsp;type=<span class="string">"text/javascript"</span><span>&nbsp;src=</span><span class="string">"../ext-all.js"</span><span>&nbsp;mce_src=</span><span class="string">"ext-all.js"</span><span>&gt;&lt;/mce:script&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mce:script&nbsp;type=<span class="string">"text/javascript"</span><span>&gt;&lt;!--&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.onReady(function(){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//new&nbsp;Ext.dd.DDProxy('block');</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;proxy=<span class="keyword">new</span><span>&nbsp;Ext.dd.DragSource(</span><span class="string">'proxy'</span><span>,{group:</span><span class="string">'dd'</span><span>});&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy.afterDragDrop=function(target,e,id){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;destEl=Ext.<span class="keyword">get</span><span>(id);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;srcEl=Ext.<span class="keyword">get</span><span>(proxy.getEl());&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcEl.insertBefore(destEl);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;target=<span class="keyword">new</span><span>&nbsp;Ext.dd.DDTarget(</span><span class="string">'target'</span><span>,</span><span class="string">'dd'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="comment">//&nbsp;--&gt;&lt;/mce:script&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&lt;/head&gt;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;body&gt;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;div&nbsp;id=<span class="string">"proxy"</span><span>&gt;item&lt;/div&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&lt;hr&nbsp;/&gt;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;div&nbsp;id=<span class="string">"target"</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&lt;hr&nbsp;/&gt;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;/div&gt;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/body&gt;&nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/html&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><textarea class="c-sharp:collapse" style="display: none" name="code" rows="15" cols="87">&lt;html xmlns="http://www.w3.org/1999/xhtml"
&gt;
&lt;head id="Head1" runat="server"&gt;
&lt;title&gt;拖放效果&lt;/title&gt;
&lt;link rel="stylesheet" type="text/css"
href="../resources/css/ext-all.css" mce_href="resources/css/ext-all.css"
/&gt;
&lt;mce:script type="text/javascript"
src="../adapter/ext/ext-base.js"
mce_src="adapter/ext/ext-base.js"&gt;&lt;/mce:script&gt;
&lt;mce:script type="text/javascript" src="../ext-all.js"
mce_src="ext-all.js"&gt;&lt;/mce:script&gt;
&lt;mce:script type="text/javascript"&gt;&lt;!--
Ext.onReady(function(){
//new Ext.dd.DDProxy('block');
var proxy=new Ext.dd.DragSource('proxy',{group:'dd'});
proxy.afterDragDrop=function(target,e,id){
var destEl=Ext.get(id);
var srcEl=Ext.get(proxy.getEl());
srcEl.insertBefore(destEl);
};
var target=new Ext.dd.DDTarget('target','dd');
});
// --&gt;&lt;/mce:script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="proxy"&gt;item&lt;/div&gt;
&lt;hr /&gt;
&lt;div id="target"&gt;
&lt;hr /&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</textarea> </p>
<p>&nbsp;</p>
<p>(1) &nbsp;首先是定义拖放的部分，具体代码为：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;proxy=</span><span class="keyword">new</span><span>&nbsp;Ext.dd.DragSource(</span><span class="string">'proxy'</span><span>,{group:</span><span class="string">'dd'</span><span>});&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" cols="73">var
proxy=new Ext.dd.DragSource('proxy',{group:'dd'});</textarea> </p>
<p>&nbsp;</p>
<p>(2) target告诉我们可以把上面的proxy防盗哪些地方，如下面的代码：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>var&nbsp;target=</span><span class="keyword">new</span><span>&nbsp;Ext.dd.DDTarget(</span><span class="string">'target'</span><span>,</span><span class="string">'dd'</span><span>);&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="1" cols="74">var
target=new Ext.dd.DDTarget('target','dd');</textarea> </p>
<p>&nbsp;</p>
<p>(3) 注意：两者之间有相同的'dd'，这是分组标志，用来限制拖放的目的地，只有相同的组名的目的地才可以接收它。</p>
<p>(4) 不过，这仅仅只能实现拖放功能，没有任何效果，下面的代码可以实现，将proxy拖放到指定的区域，并且停留在该区域，如下面所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>proxy.afterDragDrop=function(target,e,id){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;destEl=Ext.<span class="keyword">get</span><span>(id);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;srcEl=Ext.<span class="keyword">get</span><span>(proxy.getEl());&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcEl.insertBefore(destEl);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="5" cols="79">proxy.afterDragDrop=function(target,e,id){
var destEl=Ext.get(id);
var srcEl=Ext.get(proxy.getEl());
srcEl.insertBefore(destEl);
};</textarea>&nbsp; </p>
<p>&nbsp;</p>
<h3>二、弹出窗口</h3>
<p>从外观上来讲，浏览器自带的alert、confirm、prompt等对话框并不好看，而且配置也不灵活。诸如按钮的添加、删除、以及修改按下按钮所触发的事件等操作都非常难以执行，而在EXT的msgbox里都能实现，而且外观相当漂亮，本节将详细介绍EXT中的弹出窗口。</p>
<h4>2.1 Ext.MessageBox的使用方法</h4>
<p>Ext.MessageBox为我们提供了弹出提示框的简单方法，使用它提供的alert、confirm、prompt等对话框完全可以代替浏览器原生的alert、confirm、prompt邓对话框，除此之外，Ext.MessageBox还提供了诸如进度条等更多的功能。</p>
<p><span style="color: rgb(255,0,0)">1、Ext.MessageBox.alert()的使用方法和效果图(图1所示)</span></p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.MessageBox.alert(</span><span class="string">'标题'</span><span>,</span><span class="string">'内容'</span><span>,function(btn){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">'你刚刚点击了'</span><span>+btn);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>});&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="4" cols="74">
Ext.MessageBox.alert('标题','内容',function(btn){
alert('你刚刚点击了'+btn);
});</textarea> </p>
<p>&nbsp;</p>
<p style="text-align: center"><strong><img height="103" alt="1" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/1.jpg" width="101" /></strong></p>
<p style="text-align: center"><strong>图1 alert效果图</strong></p>
<p><span style="color: rgb(255,0,0)">2、Ext.MessageBox.confirm()的使用方法和效果图(如图2所示)</span></p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.MessageBox.confirm(</span><span class="string">'选择框'</span><span>,</span><span class="string">'你到底选择Yes 还是No?'</span><span>,function(btn){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">'您刚刚选择了'</span><span>+btn);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="5" cols="74">Ext.MessageBox.confirm('
选择框','你到底选择Yes还是No?',function(btn){
alert('您刚刚选择了'+btn);
});</textarea> </p>
<p>&nbsp;</p>
<p style="text-align: center"><strong><img height="121" alt="2" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/2.jpg" width="218" /></strong></p>
<p style="text-align: center"><strong>图2 confirm效果图</strong></p>
<p><span style="color: rgb(255,0,0)">3、Ext.MessageBox.prompt()的使用方法和效果图(如图3所示)</span></p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.MessageBox.prompt(</span><span class="string">'输入框'</span><span>,</span><span class="string">'随便输入一些东西 '</span><span>,function(btn,text){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">'你刚刚点击了'</span><span>+btn+</span><span class="string">",&nbsp;刚刚输入了"</span><span>+text);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>});&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="3" cols="77">
Ext.MessageBox.prompt('输入框','随便输入一些东西',function(btn,text){
alert('你刚刚点击了'+btn+", 刚刚输入了"+text);
});</textarea> </p>
<p>&nbsp;</p>
<p style="text-align: center">&nbsp;<strong><img height="141" alt="3" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/3.jpg" width="280" /></strong></p>
<p style="text-align: center"><strong>图3 prompt效果图</strong></p>
<h4>2.2 对话框的更多配置</h4>
<p><span style="color: rgb(255,0,0)">1、可以输入多行的输入框</span></p>
<p>首先，我们修改原来的prompt函数，将原来只能接收单行字符串数据的文本框修改成可以支持多行文字的形式，相关代码以及效果图如下所示。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.MessageBox.show({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'多行输入框'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:<span class="string">'可以输入多行:'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:300,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buttons:Ext.MessageBox.OKCANCEL,&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multiline:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fn:function(btn,text){&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">'你刚刚点击了&nbsp;'</span><span>,btn+</span><span class="string">",刚刚输入了&nbsp;"</span><span>+text);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="11" cols="84">Ext.MessageBox.show({
title:'多行输入框',
msg:'可以输入多行:',
width:300,
buttons:Ext.MessageBox.OKCANCEL,
multiline:true,
fn:function(btn,text){
alert('你刚刚点击了 ',btn+",刚刚输入了 "+text);
}
});</textarea> </p>
<p>&nbsp;</p>
<p style="text-align: center"><strong><img height="190" alt="4" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/4.jpg" width="323" /></strong></p>
<p style="text-align: center"><strong>图4 多行输入效果图</strong></p>
<p><span style="color: rgb(255,0,0)">2、自定义对话框的按钮</span></p>
<p>我们可以使用Ext.Message.show()设置对话框中按钮的样式，如下面的代码所示。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.MessageBox.show({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'自定义对话框的按钮'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:<span class="string">'从三个按钮中选择一个'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buttons:Ext.MessageBox.YESNOCANCEL,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fn:function(btn){&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">'您刚刚点击了&nbsp;'</span><span>+btn);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="10" cols="81">Ext.MessageBox.show({
title:'自定义对话框的按钮',
msg:'从三个按钮中选择一个',
buttons:Ext.MessageBox.YESNOCANCEL,
fn:function(btn){
alert('您刚刚点击了 '+btn);
}
});</textarea> </p>
<p>&nbsp;</p>
<p style="text-align: center"><strong><img height="128" alt="5" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/5.jpg" width="291" /></strong></p>
<p style="text-align: center"><strong>图5 自定义按钮</strong></p>
<p><span style="color: rgb(255,0,0)">3、进度条</span></p>
<p>进度条经常用于需要用户等待某一操作完成的场景，当执行一些十分耗时的操作时，我们需要用它来提示用户耐心等待，Ext.MessageBox为我们提供了默认的进度条，只要将progress参数设置为true，对话框中就会出现进度条，如下面的代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.MessageBox.show({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'请等待'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:<span class="string">'读取数据中&#8230;&#8230;'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:240,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;progress:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closable:<span class="keyword">false</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="8" cols="79">Ext.MessageBox.show({
title:'请等待',
msg:'读取数据中&#8230;&#8230;',
width:240,
progress:true,
closable:false
});</textarea> </p>
<p>&nbsp;</p>
<p style="text-align: center"><strong><img height="120" alt="6" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/6.jpg" width="259" /></strong></p>
<p style="text-align: center"><strong>图6 普通进度条</strong></p>
<p>上面我们虽然已经得到了进度条，但是它的进度状态不会发生变化，我们需要调用Ext.MessageBox.updateProgree()函数让进度条状态发生变化，通常，我们会使用closable:false来隐藏对话框右上角的关闭按钮，从而禁止用户关掉进度条。</p>
<p>现在，我们为上面添加更新进度条的功能，我们使用timeout定时器对进度条进行修改，进度条的状态会随着时间而变化，10秒后整个进度条对话框将隐藏。关键代码如下：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.MessageBox.show({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'请等待'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:<span class="string">'读取数据中&#8230;&#8230;'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:240,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;progress:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closable:<span class="keyword">false</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;f=function(v){&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;function(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(v==11){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.MessageBox.hide();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span class="keyword">else</span><span>{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.MessageBox.updateProgress(v/10,<span class="string">'正在读取第&nbsp;'</span><span>+v+</span><span class="string">'&nbsp;个，一共10个。'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(var&nbsp;i=1;i&lt;12;i++)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setTimeout(f(i),i*1000);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
</ol>
<div><embed src="http://hi.images.csdn.net/js/blog/SyntaxHighlighter/Scripts/clipboard.swf" width="0" height="0" type="application/x-shockwave-flash" flashvars="clipboard=Ext.MessageBox.show(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%3A'%E8%AF%B7%E7%AD%89%E5%BE%85'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20msg%3A'%E8%AF%BB%E5%8F%96%E6%95%B0%E6%8D%AE%E4%B8%AD%E2%80%A6%E2%80%A6'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20width%3A240%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20progress%3Atrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20closable%3Afalse%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20f%3Dfunction(v)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20function()%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(v%3D%3D11)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Ext.MessageBox.hide()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7Delse%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Ext.MessageBox.updateProgress(v%2F10%2C'%E6%AD%A3%E5%9C%A8%E8%AF%BB%E5%8F%96%E7%AC%AC%20'%2Bv%2B'%20%E4%B8%AA%EF%BC%8C%E4%B8%80%E5%85%B110%E4%B8%AA%E3%80%82')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for(var%20i%3D1%3Bi%3C12%3Bi%2B%2B)%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout(f(i)%2Ci*1000)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D"></div>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="15" cols="87">Ext.MessageBox.show({
title:'请等待',
msg:'读取数据中&#8230;&#8230;',
width:240,
progress:true,
closable:false
});
var f=function(v){
return function(){
if(v==11){
Ext.MessageBox.hide();
}else{
Ext.MessageBox.updateProgress(v/10,'正在读取第 '+v+'
个，一共10个。');
}
};
};
for(var i=1;i&lt;12;i++)
{
setTimeout(f(i),i*1000);
}</textarea> </p>
<p>&nbsp;</p>
<p style="text-align: center"><strong><img height="126" alt="7" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090915/7.jpg" width="255" /></strong></p>
<p style="text-align: center"><strong>图7 带有更新功能的进度条</strong></p>
<p>除了这种可以精确控制进度的进度条，我们还可以使用一种自动变化的进度条提示框，这时只要使用Ext.MessageBox.wait()即可，这时弹出的对话框中的进度条就会自动向前推进了，不过我们无法对进度条的值进行精确控制。</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.MessageBox.show({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'请等待'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:<span class="string">'读取数据中&#8230;&#8230;'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:240,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;progress:<span class="keyword">true</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closable:<span class="keyword">false</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.MessageBox.wait();&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="9" cols="83">Ext.MessageBox.show({
title:'请等待',
msg:'读取数据中&#8230;&#8230;',
width:240,
progress:true,
closable:false
});
Ext.MessageBox.wait();</textarea> </p>
<p>&nbsp;</p>
<p><span style="color: rgb(255,0,0)">4、动画效果</span></p>
<p>我们可以为对话框设置弹出和关闭的动画效果，使用animEl参数指定一个HTML元素，对话框就会依据制定的HTML元素播放弹出和关闭的动画。我们修改前面的代码，加入animEl参数实现动画效果,如下面的代码所示：</p>
<p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/rocket5725/archive/2009/09/16/4553726.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.MessageBox.show({&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:<span class="string">'自定义对话框的按钮'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:<span class="string">'从三个按钮中选择一个'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buttons:Ext.MessageBox.YESNOCANCEL,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fn:function(btn){&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">'您刚刚点击了&nbsp;'</span><span>+btn);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;animEl:<span class="string">'dialog'</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><textarea class="c-sharp" style="display: none" name="code" rows="9" cols="86">
Ext.MessageBox.show({
title:'自定义对话框的按钮',
msg:'从三个按钮中选择一个',
buttons:Ext.MessageBox.YESNOCANCEL,
fn:function(btn){
alert('您刚刚点击了 '+btn);
},
animEl:'dialog'
});</textarea> </p>
<p>&nbsp;</p>
<p>animEl参数的值是一个字符串，它与HTML中的一个元素的id相对应，例如&lt;div id="dialog"&gt;&lt;/div&gt;。依据这个元素的id，我们创建的对话框才知道根据哪个元素播放弹出和关闭的动画。&nbsp;</p>
<p><span style="color: rgb(255,0,0)">除了Ext.MessageBox的基本应用，实际使用时还需要注意一下几点：</span></p>
<p>(1) 为了简化调用，我们可以把Ext.MessageBox直接写成Ext.Msg</p>
<p>(2) 我们使用Ext.MessageBox弹出的对话框都是基于同一个内部Ext.Window实例的，因此我们不能使用Ext.MessageBox弹出多个对话框，这样操作的结果是页面只会显示最后一个窗口</p>
<p><font style="background-color: #cce8cf"></font>&nbsp;</p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/315765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-03-18 13:29 <a href="http://www.blogjava.net/gm_jing/articles/315765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery Validation范例 </title><link>http://www.blogjava.net/gm_jing/articles/309926.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Mon, 18 Jan 2010 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/309926.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/309926.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/309926.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/309926.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/309926.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 验证操作类formValidatorClass.js&nbsp;Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;&nbsp;1/**//**&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;*&nbsp;@autho...&nbsp;&nbsp;<a href='http://www.blogjava.net/gm_jing/articles/309926.html'>阅读全文</a><img src ="http://www.blogjava.net/gm_jing/aggbug/309926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-01-18 10:34 <a href="http://www.blogjava.net/gm_jing/articles/309926.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>window.print打印指定div </title><link>http://www.blogjava.net/gm_jing/articles/301973.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Wed, 11 Nov 2009 07:55:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/301973.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/301973.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/301973.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/301973.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/301973.html</trackback:ping><description><![CDATA[<h1 class="postTitle">&nbsp;</h1>
<div class="clear"></div>
<div class="postBody">
<p>window.print可以打印网页，但有时候我们只希望打印特定控件或内容，怎么办呢？</p>
<p>首先我们可以把要打印的内容放在div中，然后用下面的代码进行打印。</p>
<p>&lt;<span class="tag">html</span>&gt;<br />
&lt;<span class="tag">head</span>&gt;<br />
&lt;<span class="tag">script</span><span class="attr"> language=</span><span class="attrv">"javascript"</span>&gt;<br />
function printdiv(printpage)<br />
{<br />
var headstr = "&lt;<span class="tag">html</span>&gt;&lt;<span class="tag">head</span>&gt;&lt;<span class="tag">title</span>&gt;&lt;/<span class="tag">title</span>&gt;&lt;/<span class="tag">head</span>&gt;&lt;<span class="tag">body</span>&gt;";<br />
var footstr = "&lt;/<span class="tag">body</span>&gt;";<br />
var newstr = document.all.item(printpage).innerHTML;<br />
var oldstr = document.body.innerHTML;<br />
document.body.innerHTML = headstr+newstr+footstr;<br />
window.print(); <br />
document.body.innerHTML = oldstr;<br />
return false;<br />
}<br />
&lt;/<span class="tag">script</span>&gt;<br />
&lt;<span class="tag">title</span>&gt;div print&lt;/<span class="tag">title</span>&gt;<br />
&lt;/<span class="tag">head</span>&gt;<br />
<br />
&lt;<span class="tag">body</span>&gt;<br />
//HTML Page<br />
//Other content you wouldn't like to print<br />
&lt;<span class="tag">input</span><span class="attr"> name=</span><span class="attrv">"b_print"</span><span class="attr"> type=</span><span class="attrv">"button"</span><span class="attr"> class=</span><span class="attrv">"ipt"</span><span class="attr">&nbsp;&nbsp; onClick=</span><span class="attrv">"printdiv('div_print');"</span><span class="attr"> value=</span><span class="attrv">" Print "</span>&gt;<br />
<br />
&lt;<span class="tag">div</span><span class="attr"> id=</span><span class="attrv">"div_print"</span>&gt;<br />
<br />
&lt;<span class="tag">h1</span><span class="attr"> style=</span><span class="attrv">"Color:Red"</span>&gt;The Div content which you want to print&lt;/<span class="tag">h1</span>&gt;<br />
<br />
&lt;/<span class="tag">div</span>&gt;<br />
//Other content you wouldn't like to print<br />
//Other content you wouldn't like to print<br />
&lt;/<span class="tag">body</span>&gt;<br />
<br />
&lt;/<span class="tag">html</span>&gt;</p>
</div>
<img src ="http://www.blogjava.net/gm_jing/aggbug/301973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2009-11-11 15:55 <a href="http://www.blogjava.net/gm_jing/articles/301973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【引】javascript 作用域 </title><link>http://www.blogjava.net/gm_jing/articles/289816.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Tue, 04 Aug 2009 09:35:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/289816.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/289816.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/289816.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/289816.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/289816.html</trackback:ping><description><![CDATA[<p>1. javascript无块级作用域，变量在函数内部可见。</p>
<div class="hl-surround">
<ol class="hl-main ln-hide" ondblclick="linenumber(this)" title="Double click to show line number.">
    <li class="hl-firstline"><span style="color: green">function</span><span style="color: gray"> </span><span style="color: blue">func_scope</span><span style="color: olive">(){</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: green">var</span><span style="color: gray">&nbsp;</span><span style="color: blue">x</span><span style="color: gray">=</span><span style="color: maroon">1</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: green">if</span><span style="color: gray">&nbsp;</span><span style="color: olive">(</span><span style="color: green">true</span><span style="color: olive">)</span><span style="color: gray"> </span><span style="color: olive">{</span>
    <li><span style="color: gray">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: green">var</span><span style="color: gray">&nbsp;</span><span style="color: blue">x</span><span style="color: gray">=</span><span style="color: maroon">2</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: green">if</span><span style="color: gray">&nbsp;</span><span style="color: olive">(</span><span style="color: green">true</span><span style="color: olive">)</span><span style="color: gray"> </span><span style="color: olive">{</span>
    <li><span style="color: gray">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: green">var</span><span style="color: gray">&nbsp;</span><span style="color: blue">x</span><span style="color: gray">=</span><span style="color: maroon">3</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: blue">x</span><span style="color: olive">)</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: olive">}</span>
    <li><span style="color: gray">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: blue">x</span><span style="color: olive">)</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: olive">}</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: blue">x</span><span style="color: olive">)</span><span style="color: gray">;</span>
    <li><span style="color: olive">}</span>
    <li><span style="color: blue">func_scope</span><span style="color: olive">()</span><span style="color: gray">;</span></li>
</ol>
这个地方具体是一个x变量，还是3个真不清楚？其实也没人有毛病这样定义变量</div>
<p>输出：<br />
3<br />
3<br />
3<br />
2. 对象初始化可以对自身的属性执行修改，可以修改全局变量的值。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" ondblclick="linenumber(this)" title="Double click to hide line number.">
    <li class="hl-firstline"><span style="color: green">function</span><span style="color: gray"> </span><span style="color: blue">foo</span><span style="color: olive">(){</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: blue">foo</span><span style="color: gray">.</span><span style="color: blue">abc</span><span style="color: gray"> = </span><span style="color: green">function</span><span style="color: olive">(){</span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: #8b0000">'</span><span style="color: red">def</span><span style="color: #8b0000">'</span><span style="color: olive">)}</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: green">this</span><span style="color: gray">.</span><span style="color: blue">abc</span><span style="color: gray"> = </span><span style="color: green">function</span><span style="color: olive">(){</span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: #8b0000">'</span><span style="color: red">xyz</span><span style="color: #8b0000">'</span><span style="color: olive">)}</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: blue">abc</span><span style="color: gray"> = </span><span style="color: green">function</span><span style="color: olive">(){</span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: #8b0000">'</span><span style="color: red">@@@@@</span><span style="color: #8b0000">'</span><span style="color: olive">)}</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: green">var</span><span style="color: gray">&nbsp;</span><span style="color: blue">abc</span><span style="color: gray"> = </span><span style="color: green">function</span><span style="color: olive">(){</span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: #8b0000">'</span><span style="color: red">$$$$$$</span><span style="color: #8b0000">'</span><span style="color: olive">)}</span><span style="color: gray">;</span>
    <li><span style="color: olive">}</span>
    <li><span style="color: blue">foo</span><span style="color: gray">.</span><span style="color: blue">prototype</span><span style="color: gray">.</span><span style="color: blue">abc</span><span style="color: gray"> = </span><span style="color: green">function</span><span style="color: olive">(){</span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: #8b0000">'</span><span style="color: red">456</span><span style="color: #8b0000">'</span><span style="color: olive">)</span><span style="color: gray">;</span><span style="color: olive">}</span>
    <li><span style="color: blue">foo</span><span style="color: gray">.</span><span style="color: blue">abc</span><span style="color: gray"> = </span><span style="color: green">function</span><span style="color: olive">(){</span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: #8b0000">'</span><span style="color: red">123</span><span style="color: #8b0000">'</span><span style="color: olive">)</span><span style="color: gray">;</span><span style="color: olive">}</span>
    <li><span style="color: green">var</span><span style="color: gray">&nbsp;</span><span style="color: blue">f</span><span style="color: gray"> = </span><span style="color: green">new</span><span style="color: gray"> </span><span style="color: blue">foo</span><span style="color: olive">()</span><span style="color: gray">;</span>
    <li><span style="color: blue">f</span><span style="color: gray">.</span><span style="color: blue">abc</span><span style="color: olive">()</span><span style="color: gray">;</span>
    <li><span style="color: blue">foo</span><span style="color: gray">.</span><span style="color: blue">abc</span><span style="color: olive">()</span><span style="color: gray">;</span>
    <li><span style="color: blue">abc</span><span style="color: olive">()</span><span style="color: gray">;</span></li>
</ol>
</div>
<p>输出：<br />
xyz<br />
def<br />
错误： abc is not defined （相应解释在第3个例子中）<br />
3. 函数内，只要变量名前面出现var则该变量为局部变量。</p>
<div class="hl-surround">
<ol class="hl-main ln-hide" ondblclick="linenumber(this)" title="Double click to show line number.">
    <li class="hl-firstline"><span style="color: green">var</span><span style="color: gray"> </span><span style="color: blue">myVar</span><span style="color: gray"> =&nbsp; </span><span style="color: #8b0000">"</span><span style="color: red">GLOBAL</span><span style="color: #8b0000">"</span><span style="color: gray">;</span>
    <li><span style="color: green">function</span><span style="color: gray">&nbsp;</span><span style="color: blue">foo</span><span style="color: olive">()</span><span style="color: gray"> </span><span style="color: olive">{</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: #ffa500">// myVar已经在下面声明，但是在此之前却没有定义</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: #8b0000">"</span><span style="color: red">myVar evaluates to '</span><span style="color: #8b0000">"</span><span style="color: gray">+</span><span style="color: blue">myVar</span><span style="color: gray">+</span><span style="color: #8b0000">"</span><span style="color: red">'</span><span style="color: #8b0000">"</span><span style="color: olive">)</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: #ffa500">// 这个myVar其实是局部变量</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: blue">myVar</span><span style="color: gray"> = </span><span style="color: #8b0000">"</span><span style="color: red">NEW_GLOBAL_VALUE</span><span style="color: #8b0000">"</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: #8b0000">"</span><span style="color: red">myVar evaluates to '</span><span style="color: #8b0000">"</span><span style="color: gray">+</span><span style="color: blue">myVar</span><span style="color: gray">+</span><span style="color: #8b0000">"</span><span style="color: red">'</span><span style="color: #8b0000">"</span><span style="color: olive">)</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: #ffa500">// window.myVar指向全局的myVar</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: #8b0000">"</span><span style="color: red">myVar evaluates to '</span><span style="color: #8b0000">"</span><span style="color: gray">+</span><span style="color: teal">window</span><span style="color: gray">.</span><span style="color: blue">myVar</span><span style="color: gray">+</span><span style="color: #8b0000">"</span><span style="color: red">'</span><span style="color: #8b0000">"</span><span style="color: olive">)</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: #ffa500">// 声明一个局部变量myVar，去掉这个则输出结果就完全不同</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: green">var</span><span style="color: gray">&nbsp;</span><span style="color: blue">myVar</span><span style="color: gray"> = </span><span style="color: #8b0000">"</span><span style="color: red">LOCAL</span><span style="color: #8b0000">"</span><span style="color: gray">;</span>
    <li><span style="color: gray">&nbsp; &nbsp; </span><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: #8b0000">"</span><span style="color: red">myVar evaluates to '</span><span style="color: #8b0000">"</span><span style="color: gray">+</span><span style="color: blue">myVar</span><span style="color: gray">+</span><span style="color: #8b0000">"</span><span style="color: red">'</span><span style="color: #8b0000">"</span><span style="color: olive">)</span><span style="color: gray">;</span>
    <li><span style="color: olive">}</span>
    <li><span style="color: blue">foo</span><span style="color: olive">()</span><span style="color: gray">;</span>
    <li><span style="color: blue">alert</span><span style="color: olive">(</span><span style="color: #8b0000">"</span><span style="color: red">myVar evaluates to '</span><span style="color: #8b0000">"</span><span style="color: gray">+</span><span style="color: blue">myVar</span><span style="color: gray">+</span><span style="color: #8b0000">"</span><span style="color: red">'</span><span style="color: #8b0000">"</span><span style="color: olive">)</span><span style="color: gray">;</span></li>
</ol>
</div>
<p>输出：<br />
myVar evaluates to &#8216;undefined&#8217;<br />
myVar evaluates to &#8216;NEW_GLOBAL_VALUE&#8217;<br />
myVar evaluates to &#8216;GLOBAL&#8217;<br />
myVar evaluates to &#8216;LOCAL&#8217;<br />
myVar evaluates to &#8216;GLOBAL&#8217;</p>
<p>对应第2个例子，foo中的abc（abc = function(){alert(&#8217;@@@@@&#8217;)};）为局部变量，全局变量中没有定义过abc所以会报undefine的错误。</p>
<p><br />
结论：<br />
* 1.只要在函数内部声明变量使用了var，不管是if(false){var aa}, 他都是局部变量；反之，是全局变量；<br />
* 2.声明所有的变量都应该加上var，防止产生歧义；<br />
* 3.尽量避免引入全局变量。</p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/289816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2009-08-04 17:35 <a href="http://www.blogjava.net/gm_jing/articles/289816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]解剖JavaScript中的null和undefined </title><link>http://www.blogjava.net/gm_jing/articles/265924.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Thu, 16 Apr 2009 03:00:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/265924.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/265924.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/265924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/265924.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/265924.html</trackback:ping><description><![CDATA[<div class="posthead">http://www.cnblogs.com/leadzen/archive/2009/02/18/1387750.html</div>
<div class="postbody">
<p>&nbsp; &nbsp; 在JavaScript开发中，被人问到：null与undefined到底有啥区别？</p>
<p>&nbsp;&nbsp;&nbsp; 一时间不好回答，特别是undefined，因为这涉及到undefined的实现原理。于是，细想之后，写下本文，请各位大侠拍砖。</p>
<p>&nbsp;&nbsp;&nbsp; 总所周知：null == undefined<br />
</p>
<p>&nbsp; &nbsp; 但是：null !== undefined <br />
</p>
<p>&nbsp;&nbsp;&nbsp; 那么这两者到底有啥区别呢？</p>
<p>&nbsp;&nbsp;&nbsp; 请听俺娓娓道来...</p>
<p><br />
</p>
<p><strong>null</strong></p>
<p>&nbsp; &nbsp; 这是一个对象，但是为空。因为是对象，所以 typeof null&nbsp; 返回 'object' 。<br />
</p>
<p>&nbsp; &nbsp; null 是 JavaScript 保留关键字。<br />
</p>
<p>&nbsp; &nbsp; null 参与数值运算时其值会自动转换为 0 ，因此，下列表达式计算后会得到正确的数值：</p>
<p>　　　　表达式：123 + null　　　　结果值：123</p>
<p>　　　　表达式：123 * null　　　　结果值：0</p>
<p><br />
</p>
<p><strong>undefined</strong></p>
<p>　　undefined是全局对象（window）的一个特殊属性，其值是未定义的。但 typeof undefined 返回 'undefined' 。<br />
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 虽然undefined是有特殊含义的，但它确实是一个属性，而且是全局对象（window）的属性。请看下面的代码：</p>
<div class="cnblogs_code"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">'</span><span style="color: #000000">undefined</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;window);&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">输出：true</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;anObj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;{};<br />
&nbsp;&nbsp;&nbsp;&nbsp; alert(</span><span style="color: #000000">'</span><span style="color: #000000">undefined</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;anObj);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">输出：false</span><span style="color: #008000"><br />
</span></div>
<p>&nbsp;<br />
从中可以看出，undefined是window对象的一个属性，但却不是anObj对象的一个属性。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>　　注意：尽管undefined是有特殊含义的属性，但却不是JavaScript的保留关键字。 <br />
</p>
<p>　　undefined参与任何数值计算时，其结果一定是NaN。</p>
<p>　　随便说一下，NaN是全局对象（window）的另一个特殊属性，Infinity也是。这些特殊属性都不是JavaScript的保留关键字！ </p>
<p>&nbsp;</p>
<p><strong>提高undefined性能</strong><br />
</p>
<p>　　当我们在程序中使用undefined值时，实际上使用的是window对象的undefined属性。 <br />
</p>
<p>　　同样，当我们定义一个变量但未赋予其初始值，例如：</p>
<p>　　　　var aValue;<br />
</p>
<p>　　这时，JavaScript在所谓的预编译时会将其初始值设置为对window.undefined属性的引用， <br />
</p>
<p>　　于是，当我们将一个变量或值与undefined比较时，实际上是与window对象的undefined属性比较。这个比较过程中，JavaScript会搜索window对象名叫&#8216;undefined'的属性，然后再比较两个操作数的引用指针是否相同。</p>
<p>　　由于window对象的属性值是非常多的，在每一次与undefined的比较中，搜索window对象的undefined属性都会花费时间。在需要频繁与undefined进行比较的函数中，这可能会是一个性能问题点。因此，在这种情况下，我们可以自行定义一个局部的undefined变量，来加快对undefined的比较速度。例如： <br />
</p>
<div class="cnblogs_code"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;anyFunc()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;undefined;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">自定义局部undefined变量</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.cnblogs.com/Images/dot.gif" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(x&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;undefined)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">作用域上的引用比较</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.cnblogs.com/Images/dot.gif" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(y&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;undefined)&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">作用域上的引用比较</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.cnblogs.com/Images/dot.gif" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;};</span></div>
<p>&nbsp;　　其中，定义undefined局部变量时，其初始值会是对window.undefined属性值的引用。新定义的局部undefined变量存在与该函数的作用域上。在随后的比较操作中，JavaScript代码的书写方式没有任何的改变，但比较速度却很快。因为作用域上的变量数量会远远少于window对象的属性，搜索变量的速度会极大提高。</p>
<p>　　这就是许多前端JS框架为什么常常要自己定义一个局部undefined变量的原因！</p>
<p>&nbsp;</p>
<p><span style="color: #000080">原著：李战(leadzen).杭州-阿里软件 2009-2-18<br />
原址：</span>http://blog.csdn.net/leadzen/archive/2009/02/17/3899392.aspx<br />
</p>
</div>
<img src ="http://www.blogjava.net/gm_jing/aggbug/265924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2009-04-16 11:00 <a href="http://www.blogjava.net/gm_jing/articles/265924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]悟透JavaScript</title><link>http://www.blogjava.net/gm_jing/articles/265889.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Wed, 15 Apr 2009 17:19:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/265889.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/265889.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/265889.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/265889.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/265889.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;悟透JavaScript[size=small]关于javascript入门文章，说的比较透彻： 原文地址： http://www.cnblogs.com/leadzen/archive/2008/02/25/1073404.html 引子 &nbsp;&nbsp;&nbsp; 编程世界里只存在两种基本元素，一个是数据，一个是代码...&nbsp;&nbsp;<a href='http://www.blogjava.net/gm_jing/articles/265889.html'>阅读全文</a><img src ="http://www.blogjava.net/gm_jing/aggbug/265889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2009-04-16 01:19 <a href="http://www.blogjava.net/gm_jing/articles/265889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>无刷新文件上传系统</title><link>http://www.blogjava.net/gm_jing/articles/265337.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Mon, 13 Apr 2009 09:44:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/265337.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/265337.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/265337.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/265337.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/265337.html</trackback:ping><description><![CDATA[<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<br />
&lt;title&gt;仿163网盘无刷新文件上传系统&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;style&gt;<br />
.fu_list {<br />
&nbsp;width:600px;<br />
&nbsp;background:#ebebeb;<br />
&nbsp;font-size:12px;<br />
}<br />
.fu_list td {<br />
&nbsp;padding:5px;<br />
&nbsp;line-height:20px;<br />
&nbsp;background-color:#fff;<br />
}<br />
.fu_list table {<br />
&nbsp;width:100%;<br />
&nbsp;border:1px solid #ebebeb;<br />
}<br />
.fu_list thead td {<br />
&nbsp;background-color:#f4f4f4;<br />
}<br />
.fu_list b {<br />
&nbsp;font-size:14px;<br />
}</p>
<p>/*file容器样式*/<br />
a.files {<br />
&nbsp;width:90px;<br />
&nbsp;height:30px;<br />
&nbsp;overflow:hidden;<br />
&nbsp;display:block;<br />
&nbsp;border:1px solid #BEBEBE;<br />
&nbsp;background:url(http://images.cnblogs.com/cnblogs_com/cloudgamer/fu_btn.gif) left top no-repeat;<br />
&nbsp;text-decoration:none;<br />
}<br />
a.files:hover {<br />
&nbsp;background-color:#FFFFEE;<br />
&nbsp;background-position:0 -30px;<br />
}<br />
/*file设为透明，并覆盖整个触发面*/<br />
a.files input {<br />
&nbsp;margin-left:-350px;<br />
&nbsp;font-size:30px;<br />
&nbsp;cursor:pointer;<br />
&nbsp;filter:alpha(opacity=0);<br />
&nbsp;opacity:0;<br />
}<br />
/*取消点击时的虚线框*/<br />
a.files, a.files input {<br />
&nbsp;outline:none;/*ff*/<br />
&nbsp;hide-focus:expression(this.hideFocus=true);/*ie*/<br />
}<br />
&lt;/style&gt;<br />
&lt;form id="uploadForm" action="File.ashx"&gt;<br />
&nbsp; &lt;table border="0" cellspacing="1" class="fu_list"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;thead&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan="2"&gt;&lt;b&gt;上传文件&lt;/b&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/thead&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td align="right" width="15%" style="line-height:35px;"&gt;添加文件：&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;a href="javascript:void(0);" class="files" id="idFile"&gt;&lt;/a&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan="2"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;table border="0" cellspacing="0"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;thead&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;文件路径&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td width="100"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/thead&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;tbody id="idFileList"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tbody&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/table&gt;<br />
&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan="2" style="color:gray"&gt;温馨提示：最多可同时上传 &lt;b id="idLimit"&gt;&lt;/b&gt; 个文件，只允许上传 &lt;b id="idExt"&gt;&lt;/b&gt; 文件。 &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan="2" align="center" id="idMsg"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;input type="button" value="开始上传" id="idBtnupload" disabled="disabled" /&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;input type="button" value="全部取消" id="idBtndel" disabled="disabled" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/tbody&gt;<br />
&nbsp; &lt;/table&gt;<br />
&lt;/form&gt;<br />
&lt;script type="text/javascript"&gt;<br />
var isIE = (document.all) ? true : false;<br />
var $ = function (id) {<br />
&nbsp;&nbsp;&nbsp; return "string" == typeof id ? document.getElementById(id) : id;<br />
};<br />
var Class = {<br />
&nbsp; create: function() {<br />
&nbsp;&nbsp;&nbsp; return function() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.initialize.apply(this, arguments);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp; }<br />
}<br />
var Extend = function(destination, source) {<br />
&nbsp;for (var property in source) {<br />
&nbsp; destination[property] = source[property];<br />
&nbsp;}<br />
}<br />
var Bind = function(object, fun) {<br />
&nbsp;return function() {<br />
&nbsp; return fun.apply(object, arguments);<br />
&nbsp;}<br />
}<br />
var Each = function(list, fun){<br />
&nbsp;for (var i = 0, len = list.length; i &lt; len; i++) { fun(list[i], i); }<br />
};<br />
//文件上传类<br />
var FileUpload = Class.create();<br />
FileUpload.prototype = {<br />
&nbsp; //表单对象，文件控件存放空间<br />
&nbsp; initialize: function(form, folder, options) {<br />
&nbsp;<br />
&nbsp;this.Form = $(form);//表单<br />
&nbsp;this.Folder = $(folder);//文件控件存放空间<br />
&nbsp;this.Files = [];//文件集合<br />
&nbsp;<br />
&nbsp;this.SetOptions(options);<br />
&nbsp;<br />
&nbsp;this.FileName = this.options.FileName;<br />
&nbsp;this._FrameName = this.options.FrameName;<br />
&nbsp;this.Limit = this.options.Limit;<br />
&nbsp;this.Distinct = !!this.options.Distinct;<br />
&nbsp;this.ExtIn = this.options.ExtIn;<br />
&nbsp;this.ExtOut = this.options.ExtOut;<br />
&nbsp;<br />
&nbsp;this.onIniFile = this.options.onIniFile;<br />
&nbsp;this.onEmpty = this.options.onEmpty;<br />
&nbsp;this.onNotExtIn = this.options.onNotExtIn;<br />
&nbsp;this.onExtOut = this.options.onExtOut;<br />
&nbsp;this.onLimite = this.options.onLimite;<br />
&nbsp;this.onSame = this.options.onSame;<br />
&nbsp;this.onFail = this.options.onFail;<br />
&nbsp;this.onIni = this.options.onIni;<br />
&nbsp;<br />
&nbsp;if(!this._FrameName){<br />
&nbsp; //为每个实例创建不同的iframe<br />
&nbsp; this._FrameName = "uploadFrame_" + Math.floor(Math.random() * 1000);<br />
&nbsp; //ie不能修改iframe的name<br />
&nbsp; var oFrame = isIE ? document.createElement("&lt;iframe name=\"" + this._FrameName + "\"&gt;") : document.createElement("iframe");<br />
&nbsp; //为ff设置name<br />
&nbsp; oFrame.name = this._FrameName;<br />
&nbsp; oFrame.style.display = "none";<br />
&nbsp; //在ie文档未加载完用appendChild会报错<br />
&nbsp; document.body.insertBefore(oFrame, document.body.childNodes[0]);<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;//设置form属性，关键是target要指向iframe<br />
&nbsp;this.Form.target = this._FrameName;<br />
&nbsp;this.Form.method = "post";<br />
&nbsp;//注意ie的form没有enctype属性，要用encoding<br />
&nbsp;this.Form.encoding = "multipart/form-data";<br />
&nbsp;//整理一次<br />
&nbsp;this.Ini();<br />
&nbsp; },<br />
&nbsp; //设置默认属性<br />
&nbsp; SetOptions: function(options) {<br />
&nbsp;&nbsp;&nbsp; this.options = {//默认值<br />
&nbsp; FileName: "",//文件上传控件的name，配合后台使用<br />
&nbsp; FrameName: "",//iframe的name，要自定义iframe的话这里设置name<br />
&nbsp; onIniFile: function(){},//整理文件时执行(其中参数是file对象)<br />
&nbsp; onEmpty: function(){},//文件空值时执行<br />
&nbsp; Limit:0,//文件数限制，0为不限制<br />
&nbsp; onLimite: function(){},//超过文件数限制时执行<br />
&nbsp; Distinct: true,//是否不允许相同文件<br />
&nbsp; onSame:&nbsp; function(){},//有相同文件时执行<br />
&nbsp; ExtIn:&nbsp; [],//允许后缀名<br />
&nbsp; onNotExtIn: function(){},//不是允许后缀名时执行<br />
&nbsp; ExtOut:&nbsp; [],//禁止后缀名，当设置了ExtIn则ExtOut无效<br />
&nbsp; onExtOut: function(){},//是禁止后缀名时执行<br />
&nbsp; onFail:&nbsp; function(){},//文件不通过检测时执行(其中参数是file对象)<br />
&nbsp; onIni:&nbsp; function(){}//重置时执行<br />
&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp; Extend(this.options, options || {});<br />
&nbsp; },<br />
&nbsp; //整理空间<br />
&nbsp; Ini: function() {<br />
&nbsp;//整理文件集合<br />
&nbsp;this.Files = [];<br />
&nbsp;//整理文件空间，把有值的file放入文件集合<br />
&nbsp;Each(this.Folder.getElementsByTagName("input"), Bind(this, function(o){<br />
&nbsp; if(o.type == "file"){ o.value&nbsp; &amp;&amp;&nbsp; this.Files.push(o); this.onIniFile(o); }<br />
&nbsp;}))<br />
&nbsp;//插入一个新的file<br />
&nbsp;var file = document.createElement("input");<br />
&nbsp;file.name = this.FileName; file.type = "file"; file.onchange = Bind(this, function(){ this.Check(file); this.Ini(); });<br />
&nbsp;this.Folder.appendChild(file);<br />
&nbsp;//执行附加程序<br />
&nbsp;this.onIni();<br />
&nbsp; },<br />
&nbsp; //检测file对象<br />
&nbsp; Check: function(file) {<br />
&nbsp;//检测变量<br />
&nbsp;var bCheck = true;<br />
&nbsp;//空值、文件数限制、后缀名、相同文件检测<br />
&nbsp;if(!file.value){<br />
&nbsp; bCheck = false; this.onEmpty();<br />
&nbsp;} else if(this.Limit&nbsp; &amp;&amp;&nbsp; this.Files.length &gt;= this.Limit){<br />
&nbsp; bCheck = false; this.onLimite();<br />
&nbsp;} else if(!!this.ExtIn.length&nbsp; &amp;&amp;&nbsp; !RegExp("\.(" + this.ExtIn.join("|") + ")$", "i").test(file.value)){<br />
&nbsp; //检测是否允许后缀名<br />
&nbsp; bCheck = false; this.onNotExtIn();<br />
&nbsp;} else if(!!this.ExtOut.length&nbsp; &amp;&amp;&nbsp; RegExp("\.(" + this.ExtOut.join("|") + ")$", "i").test(file.value)) {<br />
&nbsp; //检测是否禁止后缀名<br />
&nbsp; bCheck = false; this.onExtOut();<br />
&nbsp;} else if(!!this.Distinct) {<br />
&nbsp; Each(this.Files, function(o){ if(o.value == file.value){ bCheck = false; } })<br />
&nbsp; if(!bCheck){ this.onSame(); }<br />
&nbsp;}<br />
&nbsp;//没有通过检测<br />
&nbsp;!bCheck&nbsp; &amp;&amp;&nbsp; this.onFail(file);<br />
&nbsp; },<br />
&nbsp; //删除指定file<br />
&nbsp; Delete: function(file) {<br />
&nbsp;//移除指定file<br />
&nbsp;this.Folder.removeChild(file); this.Ini();<br />
&nbsp; },<br />
&nbsp; //删除全部file<br />
&nbsp; Clear: function() {<br />
&nbsp;//清空文件空间<br />
&nbsp;Each(this.Files, Bind(this, function(o){ this.Folder.removeChild(o); })); this.Ini();<br />
&nbsp; }<br />
}<br />
var fu = new FileUpload("uploadForm", "idFile", { Limit: 3, ExtIn: ["jpg", "gif"],<br />
&nbsp;onIniFile: function(file){ file.value ? file.style.display = "none" : this.Folder.removeChild(file); },<br />
&nbsp;onEmpty: function(){ alert("请选择一个文件"); },<br />
&nbsp;onLimite: function(){ alert("超过上传限制"); },<br />
&nbsp;onSame: function(){ alert("已经有相同文件"); },<br />
&nbsp;onNotExtIn: function(){ alert("只允许上传" + this.ExtIn.join("，") + "文件"); },<br />
&nbsp;onFail: function(file){ this.Folder.removeChild(file); },<br />
&nbsp;onIni: function(){<br />
&nbsp; //显示文件列表<br />
&nbsp; var arrRows = [];<br />
&nbsp; if(this.Files.length){<br />
&nbsp;&nbsp; var oThis = this;<br />
&nbsp;&nbsp; Each(this.Files, function(o){<br />
&nbsp;&nbsp;&nbsp; var a = document.createElement("a"); a.innerHTML = "取消"; a.href = "javascript:void(0);";<br />
&nbsp;&nbsp;&nbsp; a.onclick = function(){ oThis.Delete(o); return false; };<br />
&nbsp;&nbsp;&nbsp; arrRows.push([o.value, a]);<br />
&nbsp;&nbsp; });<br />
&nbsp; } else { arrRows.push(["&lt;font color='gray'&gt;没有添加文件&lt;/font&gt;", " "]); }<br />
&nbsp; AddList(arrRows);<br />
&nbsp; //设置按钮<br />
&nbsp; $("idBtnupload").disabled = $("idBtndel").disabled = this.Files.length &lt;= 0;<br />
&nbsp;}<br />
});<br />
$("idBtnupload").onclick = function(){<br />
&nbsp;//显示文件列表<br />
&nbsp;var arrRows = [];<br />
&nbsp;Each(fu.Files, function(o){ arrRows.push([o.value, " "]); });<br />
&nbsp;AddList(arrRows);<br />
&nbsp;<br />
&nbsp;fu.Folder.style.display = "none";<br />
&nbsp;//$("idProcess").style.display = "";<br />
&nbsp;$("idMsg").innerHTML = "正在添加文件到您的网盘中，请稍候&#8230;&#8230;&lt;br /&gt;有可能因为网络问题，出现程序长时间无响应，请点击&#8220;&lt;a href='?'&gt;&lt;font color='red'&gt;取消&lt;/font&gt;&lt;/a&gt;&#8221;重新上传文件";<br />
&nbsp;<br />
&nbsp;//fu.Form.submit();<br />
}<br />
//用来添加文件列表的函数<br />
function AddList(rows){<br />
&nbsp;//根据数组来添加列表<br />
&nbsp;var FileList = $("idFileList"), oFragment = document.createDocumentFragment();<br />
&nbsp;//用文档碎片保存列表<br />
&nbsp;Each(rows, function(cells){<br />
&nbsp; var row = document.createElement("tr");<br />
&nbsp; Each(cells, function(o){<br />
&nbsp;&nbsp; var cell = document.createElement("td");<br />
&nbsp;&nbsp; if(typeof o == "string"){ cell.innerHTML = o; }else{ cell.appendChild(o); }<br />
&nbsp;&nbsp; row.appendChild(cell);<br />
&nbsp; });<br />
&nbsp; oFragment.appendChild(row);<br />
&nbsp;})<br />
&nbsp;//ie的table不支持innerHTML所以这样清空table<br />
&nbsp;while(FileList.hasChildNodes()){ FileList.removeChild(FileList.firstChild); }<br />
&nbsp;FileList.appendChild(oFragment);<br />
}<br />
$("idLimit").innerHTML = fu.Limit;<br />
$("idExt").innerHTML = fu.ExtIn.join("，");<br />
$("idBtndel").onclick = function(){ fu.Clear(); }<br />
//在后台通过window.parent来访问主页面的函数<br />
function Finish(msg){ alert(msg); location.href = location.href; }<br />
&lt;/script&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/265337.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2009-04-13 17:44 <a href="http://www.blogjava.net/gm_jing/articles/265337.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax技术</title><link>http://www.blogjava.net/gm_jing/articles/252991.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Mon, 02 Feb 2009 10:31:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/252991.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/252991.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/252991.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/252991.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/252991.html</trackback:ping><description><![CDATA[<dt>引语
<dd>
<p>　　毫无疑问，Ajax作为当前最火爆的技术之一，其优秀的框架层出不穷。Prototype、Dwr、Dojo、JQuery、YUi&#8230;&#8230; 都是非常出色的产品。本专题为您介绍了目前十大流行的Ajax框架及各自特性，供您在开发过程中参阅。 <br />
　　您当前正在使用的Ajax框架是什么？哪一个又是您心目中最优秀的呢？欢迎您发表评论，与他人分享您的观点。<span><a href="http://remark.csdn.net/NewsCsdnNetViewComment/606e036b20654a8385c19cb10903083f62ed0534d84949b4ad1510cd8518deaf-1.Ashx?References=5" color="#FF0000">[发表评论]</a></span>　</p>
</dd>
<dt>十大Ajax框架(排名不分先后)
<dd>
<p><a>No1—Prototype</a></p>
<p>　　特点：一个非常优雅的JS库，定义了JS的面向对象扩展，DOM操作API，事件等等，之上还有rico/script.aculo.us实现一些JS组件功能和效果(尚不够完善)，以prototype为核心，形成了一个外围的各种各样的JS扩展库，是相当有前途的JS底层框架，突出特点就是非常易学易用，门槛很低，常常是一两行JS代码就可以搞定一个相关的功能。同时它也是RoR集成的AJAX JS库。</p>
<p align="right"><a href="http://www.prototypejs.org/"><font color="#ff0000">Prototype官方站点</font></a></p>
<p><a>No2—Dojo</a></p>
<p>　　特点：Dojo包括了Javascript本身的语言扩展，以及各个方面的工具类库，和比较完善的UI组件库；Dojo设计的包加载机制(Package System)和模块化(Libraries)的结构，能保持更好的扩展性，提高执行性能，减轻了用户开发的工作量，并保持一定的灵活性(用户可以自己编写扩展)；Dojo官方网站有着丰富的学习资源；专业的开发团队，可以保证更新速度及质量。 </p>
<p align="right"><a href="http://www.dojotoolkit.org/"><font color="#ff0000">Dojo官方站点</font></a></p>
<p><a>No3—Mootools</a></p>
<p>　　特点：小巧高效，完整下载36k；模块化设计，合理规范，优雅的OOP风格；创新的下载过程，可以跟据自己的需要勾选相应的模块下载，Build Your Own Framework；Effects模块(moo.fx)轻量高效,可以实现优雅、可定制、easing的动画；完整的API文档，丰富的范例。 </p>
<p align="right"><a href="http://mootools.net/"><font color="#ff0000">Mootools官方站点</font></a></p>
<p><a>No4—JQuery</a></p>
<p>　　特点：短小精悍(19k)，接口设计得精妙(自然语言的风格)，与程序思路配合精密。极大限度地体现了javascript的特性；支持xpath查询，dom1-3，轻松选择需要的元素；css支持；简单的动画实现，支持自定义动画；支持插件开发，现有插件多；完整的api文档以及范例，易学；拥有官方UI程序供使用，效果好。 </p>
<p align="right"><a href="http://jquery.com/"><font color="#ff0000">JQuery官方站点</font></a></p>
<p><a>No5—Dwr</a></p>
<p>　　特点：把java类转化为javascript类由dwr自动完成，只需简单的配置；应用起来极其简单。开发者不要该服务器代码就可以集成；容易测试。和webwork一样，隐藏的http协议；强扩展性。例如与spring集成，只需修改一点代码；性能。就与jason等简单比较，dwr性能可能是最好的。 </p>
<p align="right"><a href="http://tag.csdn.net/tag/dwr/1.html"><font color="#ff0000">Dwr实用技术汇总</font></a></p>
<p><a>No6—Buffalo</a></p>
<p>　　特点：国人开发的Ajax框架。定义了Web远程调用的传输基础，并且将远程调用对象完整的序列化到了本地，成为可以被JavaScript编程触及的对象。Buffalo中的重要组件-BuffaloBinding，提供了将JavaScript对象绑定到HTML元素的能力。这种绑定将是无侵入的，只需要在HTML元素中加入若干个不影响排版的属性，即可将数据与界面绑定。 </p>
<p align="right"><a href="http://tag.csdn.net/tag/Buffalo/1.html"><font color="#ff0000">Buffalo实用技术汇总</font></a></p>
<p><a>No7—Yui</a></p>
<p>　　特点：Yahoo发布的AJAX组件库，是一个包含了各个方面，从工具类库到通讯，到UI组件的综合性JS库。YUL的最大优势在于文档非常齐全，而且有Yahoo的支持，缺点是库目前还不全，功能也不强大。 </p>
<p align="right"><a href="http://developer.yahoo.com/yui/"><font color="#ff0000">Yui官方站点</font></a></p>
<p><a>No8—Ext</a></p>
<p>　　特点：Ext来自于对YUI的扩展，扩展後功能和界面都有了很大的提高。初期仅仅是对YUI的对话框扩展，后来逐渐有了自己的特色，深受网友的喜爱。 </p>
<p align="right"><a href="http://extjs.com/"><font color="#ff0000">Ext官方站点</font></a></p>
<p><a>No9—Qooxdoo</a></p>
<p>　　特点：不通过常规的HTML来构造页面，完全使用JS以类似VB/Delphi风格的编程方式构造Web GUI界面，比较适合内网面向C/S风格的web应用，而不适合面向Internet的界面多变风格的应用。 </p>
<p align="right"><a href="http://tag.csdn.net/tag/qooxdoo/1.html"><font color="#ff0000">Qooxdoo实用技术汇总</font></a></p>
<p><a>No10—Spry</a></p>
<p>　　特点：设计规范，功能全面，文档丰富,面向设计人员而不是开发人员。与其它一些Ajax框架相比，它的服务器端的技术不是很可靠。它依赖于XML，XML可以很容易被Spry组件接受。 </p>
<p align="right"><a href="http://tag.csdn.net/tag/Spry/1.html"><font color="#ff0000">Spry实用技术汇总</font></a></p>
</dd>
<dt>框架比较
<dd>
<p><a href="http://blog.csdn.net/jhonney/archive/2007/03/14/1528773.aspx">◆ jquery和prototype比较，以及冲突解决 </a></p>
<p>　　初次试用jQuery，到底是prototype好还是jquery好？之前的项目已经使用了prototype，现加入jquery后，立刻罢工，搜了一下，虽然后来解决了，但最后我还是抛弃prototype，开始使用jquery了。 </p>
<p><a href="http://blog.csdn.net/zhanghandong/archive/2006/12/23/1455803.aspx">◆Buffalo和Dwr的比较</a> </p>
<p>　　本文简单比较一下Buffalo和DWR，两者的思路基本类似，有很多共性的东西。总的看来，Buffalo能满足基本的需要，但DWR已经在整体 系统结构上有了更多优势。框架的生命周期是有限的，如果不能与时俱进，将迟早面临被淘汰的局面。 </p>
<p class="more"><a href="http://tag.csdn.net/tag/Ajax框架/1.html">更多信息&gt;&gt;&gt;</a></p>
</dd>
<img src ="http://www.blogjava.net/gm_jing/aggbug/252991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2009-02-02 18:31 <a href="http://www.blogjava.net/gm_jing/articles/252991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>prototype.js　1.4版开发者手册</title><link>http://www.blogjava.net/gm_jing/articles/249885.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Mon, 05 Jan 2009 04:20:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/249885.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/249885.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/249885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/249885.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/249885.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;【引用】http://www.cnblogs.com/thinhunan/archive/2006/04/01/DeveloperNotesForPrototype.html&nbsp;prototype.js是一个非常优雅的javascript基础类库，对javascript做了大量的扩展，而且很好的支持Ajax，国外有多个基于此类库实现的效果库，也做得很棒。pr...&nbsp;&nbsp;<a href='http://www.blogjava.net/gm_jing/articles/249885.html'>阅读全文</a><img src ="http://www.blogjava.net/gm_jing/aggbug/249885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2009-01-05 12:20 <a href="http://www.blogjava.net/gm_jing/articles/249885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个特牛的日期时间判断正则表达式</title><link>http://www.blogjava.net/gm_jing/articles/248112.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Wed, 24 Dec 2008 08:23:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/248112.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/248112.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/248112.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/248112.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/248112.html</trackback:ping><description><![CDATA[这里是判断yyyy-mm-dd这种格式的，基本上把闰年和2月等的情况都考虑进去了，不过我已经忘了在哪里找到的。 <br />
<br />
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$ <br />
<br />
<br />
<br />
下面的是加了时间验证的 <br />
<br />
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$ <br />
 <img src ="http://www.blogjava.net/gm_jing/aggbug/248112.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2008-12-24 16:23 <a href="http://www.blogjava.net/gm_jing/articles/248112.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于checkbox</title><link>http://www.blogjava.net/gm_jing/articles/244934.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Mon, 08 Dec 2008 01:12:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/244934.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/244934.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/244934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/244934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/244934.html</trackback:ping><description><![CDATA[js里没有两维数组,但Array对象是个Object,里面可以放任何东西, <br />
js里的两维数组是,Array套Array <br />
<br />
你可以选择用两个数组来做 <br />
<br />
&lt;HTML&gt; <br />
&lt;HEAD&gt; <br />
&lt;/HEAD&gt; <br />
&lt;SCRIPT LANGUAGE="JavaScript"&gt; <br />
&lt;!-- <br />
function fun(){ <br />
var arr1 = new Array(); <br />
var arr2 = new Array(); <br />
var boxObj = document.getElementsByName("chkBox"); <br />
<br />
var str = ""; <br />
var index = 0; <br />
for(i=0;i&lt;boxObj.length;i++){ <br />
if(boxObj[i].checked){ <br />
arr1[index] = i+1; <br />
arr2[index++] = boxObj[i].value; <br />
} <br />
} <br />
<br />
for(i=0;i&lt;arr1.length;i++){ <br />
str += arr1[i] + " " + arr2[i] + "&lt;br&gt;"; <br />
} <br />
document.getElementById("txt").innerHTML=str; <br />
<br />
} <br />
//--&gt; <br />
&lt;/SCRIPT&gt; <br />
&lt;BODY&gt; <br />
&lt;input type="button" name="btn" value="click" onclick="fun();"&gt;&lt;br&gt; <br />
&lt;input type="checkbox" name="chkBox" value="a"&gt; 1 a&lt;br&gt; <br />
&lt;input type="checkbox" name="chkBox" value="b"&gt; 1 b&lt;br&gt; <br />
&lt;input type="checkbox" name="chkBox" value="c"&gt; 1 c&lt;br&gt; <br />
&lt;input type="checkbox" name="chkBox" value="d"&gt; 1 d&lt;br&gt; <br />
&lt;input type="checkbox" name="chkBox" value="e"&gt; 1 e&lt;br&gt; <br />
&lt;input type="checkbox" name="chkBox" value="f"&gt; 1 f&lt;br&gt; <br />
&lt;div id="txt"&gt;&lt;/div&gt; <br />
&lt;/BODY&gt; <br />
&lt;/HTML&gt;</ca> <br />
<br />
<br />
<br />
<p><br />
<br />
&nbsp;&nbsp;&nbsp;var familyMembers = document.getElementsByName("chkBox");</p>
<p>&nbsp;&nbsp;&nbsp;for(var i=0; i&lt;familyMemberArray.length; i++) {&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;for(var j=0; j&lt;familyMembers.length;j++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(familyMemberArray[i] == familyMembers[j].value) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;familyMembers[j].checked = true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;} </p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/244934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2008-12-08 09:12 <a href="http://www.blogjava.net/gm_jing/articles/244934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX原理和XmlHttpRequest对象</title><link>http://www.blogjava.net/gm_jing/articles/238530.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Tue, 04 Nov 2008 03:56:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/238530.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/238530.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/238530.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/238530.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/238530.html</trackback:ping><description><![CDATA[<div class="articleTitle">&nbsp;</div>
<div class="articleContent" id="articleBody">
<p align="left">ajax原理和XmlHttpRequest对象</p>
<p align="left">Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求，从服务器获得数据，然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理，我们必须对 XMLHttpRequest有所了解。</p>
<p align="left">XMLHttpRequest是ajax的核心机制，它是在IE5中首先引入的，是一种支持异步请求的技术。简单的说，也就是javascript可以及时向服务器提出请求和处理响应，而不阻塞用户。达到无刷新的效果。</p>
<p align="left">所以我们先从XMLHttpRequest讲起，来看看它的工作原理。</p>
<p align="left">首先，我们先来看看XMLHttpRequest这个对象的属性。</p>
<p align="left">0 (未初始化) 对象已建立，但是尚未初始化（尚未调用open方法）</p>
<p align="left">1 (初始化) 对象已建立，尚未调用send方法</p>
<p align="left">2 (发送数据) send方法已调用，但是当前的状态及http头未知</p>
<p align="left">3 (数据传送中) 已接收部分数据，因为响应及http头不全，这时通过responseBody和responseText获取部分数据会出现错误，</p>
<p align="left">4 (完成) 数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据</p>
<p align="left">但是，由于各浏览器之间存在差异，所以创建一个XMLHttpRequest对象可能需要不同的方法。这个差异主要体现在IE和其它浏览器之间。下面是一个比较标准的创建XMLHttpRequest对象的方法。</p>
<p align="left">function CreateXmlHttp()</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr> {</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> if(window.XmlHttpRequest) //非IE浏览器创建XmlHttpRequest对象</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> {</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> xmlhttp=new XmlHttpRequest();</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }&nbsp;<wbr>&nbsp;<wbr></p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> if(window.ActiveXObject)&nbsp;<wbr> //IE浏览器创建XmlHttpRequest对象</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> {</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> try</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> {</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> catch(e)</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> {</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> try{</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> xmlhttp=new ActiveXObject("msxml2.XMLHTTP");</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> catch(ex){}</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> } } }</p>
<p align="left">&nbsp;<wbr>function Ustbwuyi()</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr> {</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> var data=document.getElementById("username").value;&nbsp;<wbr>&nbsp;<wbr></p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> CreateXmlHttp();</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> if(!xmlhttp)</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> {</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> alert("创建xmlhttp对象异常！");</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> return false;</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> xmlhttp.open("POST",url,false);</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> xmlhttp.onreadystatechange=function()</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> {&nbsp;<wbr>&nbsp;<wbr></p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> if(xmlhttp.readyState==4)</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> {</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> document.getElementById("user1").innerHTML="数据正在加载...";</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> if(xmlhttp.status==200)</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> {</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> document.write(xmlhttp.responseText);</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> xmlhttp.send();</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr> }</p>
<p align="left">如上所示，函数首先检查XMLHttpRequest的整体状态并且保证它已经完成（readyStatus=4），即数据已经发送完毕。然后根据服务器的设定询问请求状态，如果一切已经就绪（status=200），那么就执行下面需要的操作。</p>
<p align="left">对于XmlHttpRequest的两个方法，open和send，其中open方法指定了：</p>
<p align="left">a、向服务器提交数据的类型，即post还是get。</p>
<p align="left">b、请求的url地址和传递的参数。</p>
<p align="left">c、传输方式，false为同步，true为异步。默认为true。如果是异步通信方式(true)，客户机就不等待服务器的响应；如果是同步方式(false)，客户机就要等到服务器返回消息后才去执行其他操作。我们需要根据实际需要来指定同步方式，在某些页面中，可能会发出多个请求，甚至是有组织有计划有队形大规模的高强度的request，而后一个是会覆盖前一个的，这个时候当然要指定同步方式。</p>
<p align="left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Send方法用来发送请求。</p>
<p align="left">知道了XMLHttpRequest的工作流程，我们可以看出，XMLHttpRequest是完全用来向服务器发出一个请求的，它的作用也局限于此，但它的作用是整个ajax实现的关键，因为ajax无非是两个过程，发出请求和响应请求。并且它完全是一种客户端的技术。而XMLHttpRequest正是处理了服务器端和客户端通信的问题所以才会如此的重要。</p>
<p align="left">现在，我们对ajax的原理大概可以有一个了解了。我们可以把服务器端看成一个数据接口，它返回的是一个纯文本流，当然，这个文本流可以是XML格式，可以是Html，可以是Javascript代码，也可以只是一个字符串。这时候，XMLHttpRequest向服务器端请求这个页面，服务器端将文本的结果写入页面，这和普通的web开发流程是一样的，不同的是，客户端在异步获取这个结果后，不是直接显示在页面，而是先由javascript来处理，然后再显示在页面。至于现在流行的很多ajax控件，比如magicajax等，可以返回DataSet等其它数据类型，只是将这个过程封装了的结果，本质上他们并没有什么太大的区别。</p>
</div>
<img src ="http://www.blogjava.net/gm_jing/aggbug/238530.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2008-11-04 11:56 <a href="http://www.blogjava.net/gm_jing/articles/238530.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>奇妙的Scriptaculous</title><link>http://www.blogjava.net/gm_jing/articles/91017.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Sat, 30 Dec 2006 06:49:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/91017.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/91017.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/91017.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/91017.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/91017.html</trackback:ping><description><![CDATA[
		<br />
		<br />
		<h2>
				<a name="Scriptaculous-1.%26nbsp%3B%E6%A6%82%E8%BF%B0%26nbsp%3B">
				</a>
				<b>1. 概述</b> </h2>
		<p>官方主页：<a title="Visit page outside Confluence" href="http://script.aculo.us/">http://script.aculo.us/</a><br />官方WIKI：<a title="Visit page outside Confluence" href="http://wiki.script.aculo.us/scriptaculous/show/Usage">http://wiki.script.aculo.us/scriptaculous/show/Usage</a></p>
		<p>Scriptaculous是基于<a title="Prototypejs" href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\SpringSide%202.0%20Reference.chm::/Prototypejs.html">Prototype.js</a>框架的JS效果。</p>
		<h3>
				<a name="Scriptaculous-1.1%E4%B8%8B%E8%BD%BD%26%E5%AE%89%E8%A3%85%EF%BC%9A">
				</a>1.1 <b>下载&amp;安装：</b></h3>
		<p>Scriptaculous包含了6个.js，scriptaculous.js是主文件。</p>
		<p>把这6个文件放于同一个目录下，引入scriptaculous.js，会默认把其他5个都都引入了(原理见本文最后)<br /> <br />&lt;head&gt;中引入如下：</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;script src=<span class="code-quote">"javascripts/prototype.js"</span> type=<span class="code-quote">"text/javascript"</span>&gt;&lt;/script&gt;
&lt;script src=<span class="code-quote">"javascripts/scriptaculous.js"</span> type=<span class="code-quote">"text/javascript"</span>&gt;&lt;/script&gt;</pre>
				</div>
		</div>
		<p>如果只需要引入其中一部分，可以通过以下方式：</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;script src=<span class="code-quote">"scriptaculous.js?load=effects,dragdrop"</span> type=<span class="code-quote">"text/javascript"</span>&gt;&lt;/script&gt;</pre>
				</div>
		</div>
		<h2>
				<a name="Scriptaculous-2.Effective%26nbsp%3B">
				</a>
				<b>2.Effective</b> </h2>
		<p>Scriptaculous的Effective效果，显示操作成功与失败的信息<br />Effective 是 scriptaculous 最主要的功能之一, 可以直接以html 的 element_id为参数调用API, 比如：</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;script type=<span class="code-quote">"text/javascript"</span> language=<span class="code-quote">"javascript"</span>&gt;
      Effect.Appear('element_id');
 &lt;/script&gt;</pre>
				</div>
		</div>
		<p>也可以通过事件机制</p>
		<p>  ---- 层的开关效果：</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;div onclick=<span class="code-quote">"<span class="code-keyword">new</span> Effect.SwitchOff(<span class="code-keyword">this</span>)"</span>&gt;
    Click here <span class="code-keyword">if</span> you've seen enough.
  &lt;/div&gt;</pre>
				</div>
		</div>
		<p>  ---- 帘幕上拉效果<br /> </p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;div onclick=<span class="code-quote">"<span class="code-keyword">new</span> Effect.BlindUp(<span class="code-keyword">this</span>, {duration: 16})"</span>&gt;
    Click here <span class="code-keyword">if</span> you want <span class="code-keyword">this</span> to go slooooow.
  &lt;/div&gt;</pre>
				</div>
		</div>
		<p>  通过 duration（持续事件）,fps（每秒帧数）,delay（岩石）之类的参数，可以实现更多效果。<br /> </p>
		<p>  更多Demo查看scriptaculous  wiki上的Demos</p>
		<h2>
				<a name="Scriptaculous-DomBuilder">
				</a>Dom Builder</h2>
		<p>与语法超简洁的Builder相比，W3c的Dom Builder语法简直是噩梦。html片断不复杂时如果用JSTemplate有点大炮打蚊子，用Builder就够了。</p>
		<p>Builder很有Ruby的风格，请看下面一句</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">foo= Builder.node('a', {href:<span class="code-quote">"foo.jsp"</span>},categorys[i].name)</pre>
				</div>
		</div>
		<p>第1个参数是element类型，第2个是可选的attribbute，第3个是节点内的子节点。</p>
		<p>如果要换成W3c的Dom函数写法，善哉善哉。</p>
		<p>下面这段更明显直接照元素的页面顺序来生成对象，而不是像W3C Dom Builder很逻辑抽象的，先生成对象，然后append到父元素。</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">div = Builder.node('div',{className:linkDiv},[
             Builder.node('a', {href:<span class="code-quote">"foo.jsp"</span>}, categorys[i].name)
       ]);</pre>
				</div>
		</div>
		<p>当然了，还是没有JS Template清晰，所以Builder只作为html片断非常短时使用。 </p>
		<br />
<img src ="http://www.blogjava.net/gm_jing/aggbug/91017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2006-12-30 14:49 <a href="http://www.blogjava.net/gm_jing/articles/91017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>免费AJAX,Javascript IDE</title><link>http://www.blogjava.net/gm_jing/articles/90081.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Tue, 26 Dec 2006 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/90081.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/90081.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/90081.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/90081.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/90081.html</trackback:ping><description><![CDATA[暴强的免费AJAX,Javascript IDE，还有eclipse插件<br /><br /><a href="http://www.aptana.com">www.aptana.com</a><br /><img src ="http://www.blogjava.net/gm_jing/aggbug/90081.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2006-12-26 13:20 <a href="http://www.blogjava.net/gm_jing/articles/90081.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 赏析</title><link>http://www.blogjava.net/gm_jing/articles/87159.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Tue, 12 Dec 2006 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/87159.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/87159.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/87159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/87159.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/87159.html</trackback:ping><description><![CDATA[<h4 class="TextColor1" id="subjcns!3C5C2B662D4D4B51!538" style="margin-bottom: 0px">&nbsp;</h4>
<h4 class="TextColor1" style="margin-bottom: 0px">&nbsp;</h4>
<div id="msgcns!3C5C2B662D4D4B51!538">
<div><em>1、一行代码暴出网页源代码</em> <br />
s=document.documentElement.outerHTML;<br />
document.write('&lt;body&gt;&lt;/body&gt;');<br />
document.body.innerText=s;<br />
<br />
<strong><em>2、</em></strong><br />
&nbsp;&lt;script language="JavaScript" for="window" event="onload"&gt;<br />
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");<br />
xmlDoc.async="false";<br />
xmlDoc.load("hello.xml");<br />
nodes = xmlDoc.documentElement.childNodes;<br />
greeting.innerText = nodes.item(0).text;<br />
&lt;/script&gt;<br />
<br />
3、<br />
function jump(url){<br />
&nbsp;&nbsp;&nbsp; var e = document.createElement("a");<br />
&nbsp;&nbsp;&nbsp; e.href = url;<br />
&nbsp;&nbsp;&nbsp; document.body.appendChild(e);<br />
&nbsp;&nbsp;&nbsp; e.click();<br />
}<br />
<br />
<br />
<pre>function flexisum(a) {
var total = 0;
for(var i = 0; i &lt; arguments.length; i++) {
var element = arguments[i];
if (!element) continue;  // Ignore null and undefined arguments
// Try to convert the argument to a number n,
// based on its type
var n;
switch(typeof element) {
case "number":
n = element;                  // No conversion needed here
break;
case "object":
if (element instanceof Array) // Recurse for arrays
n = flexisum.apply(this, element);
else n = element.valueOf();   // valueOf method for other objects
break;
case "function":
n = element();                // Try to invoke functions
break;
case "string":
n = parseFloat(element);      // Try to parse strings
break;
case "boolean":
n = NaN;                      // Can't convert boolean values
break;
}
// If we got a valid number, add it to the total.
if (typeof n == "number" &amp;&amp; !isNaN(n)) total += n;
// Otherwise report an error
else throw new Error("sum(): can't convert " + element + " to number");
}
return total;
}
</pre>
<br />
</div>
<br />
</div>
<img src ="http://www.blogjava.net/gm_jing/aggbug/87159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2006-12-12 10:57 <a href="http://www.blogjava.net/gm_jing/articles/87159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>疯狂的Lightbox</title><link>http://www.blogjava.net/gm_jing/articles/85770.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Wed, 06 Dec 2006 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/85770.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/85770.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/85770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/85770.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/85770.html</trackback:ping><description><![CDATA[
		<h1>
				<a name="Lightbox-%E7%96%AF%E7%8B%82%E7%9A%84Lightbox">
				</a>
				<b>疯狂的Lightbox</b>
		</h1>
		<p>原文：<a title="Visit page outside Confluence" href="http://particletree.com/features/lightbox-gone-wild/">http://particletree.com/features/lightbox-gone-wild/</a><br /> </p>
		<h2>
				<a name="Lightbox-1.Lightbox%E7%AE%80%E4%BB%8B%EF%BC%9A">
				</a>1.<b>Lightbox简介：</b></h2>
		<p>LightBox是一个很棒的模组窗口Javascript包，用它展示信息，要比新开个窗口，或者强制弹出一个页面都来的要好.<br /> <br />SpringSide2中在<a title="Visit page outside Confluence" href="http://demo.springside.org.cn/bookstore/">书店前台</a>用户登录里引入了LightBox。 </p>
		<h2>
				<a name="Lightbox-2.LightBox%E4%BD%BF%E7%94%A8">
				</a>2.LightBox使用</h2>
		<h3>
				<a name="Lightbox-2.1%E6%89%80%E9%9C%80%E6%96%87%E4%BB%B6">
				</a>
				<b>2.1 所需文件</b>
		</h3>
		<p>springside将lightbox文件都放在了widgets/lightbox目录里 ，要注意的是，必须要有激发LightBox效果的语句，才好引用lightbox.js，否则会js出错。</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;script src=<span class="code-quote">"${ctx}/scripts/prototype.js"</span>  type=<span class="code-quote">"text/javascript"</span>&gt;&lt;/script&gt;
&lt;script src=<span class="code-quote">"${ctx}/widgets/lightbox/lightbox.js"</span> type=<span class="code-quote">"text/javascript"</span>&gt;&lt;/script&gt;
&lt;link href=<span class="code-quote">"${ctx}/widgets/lightbox/lightbox.css"</span> type=<span class="code-quote">"text/css"</span> rel=<span class="code-quote">"stylesheet"</span>&gt;</pre>
				</div>
		</div>
		<h3>
				<a name="Lightbox-2.2%E6%BF%80%E5%8F%91LightBox%E6%95%88%E6%9E%9C">
				</a>2.2 <b>激发LightBox效果</b></h3>
		<p>仅仅通过 class="lbOn"即可完成这个效果，会用lightbox打开login.jsp</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;a href=<span class="code-quote">"login.jsp"</span>  class=<span class="code-quote">"lbOn"</span>&gt;SignUp&lt;/a&gt;</pre>
				</div>
		</div>
		<h3>
				<a name="Lightbox-2.3%E9%80%80%E5%87%BALightBox%E6%95%88%E6%9E%9C">
				</a>2.3 <b>退出LightBox效果</b></h3>
		<p>也是仅仅使用class="lbAction" rel="deactivate"</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;a href=<span class="code-quote">"#"</span> class=<span class="code-quote">"lbAction"</span> rel=<span class="code-quote">"deactivate"</span>&gt;Cancel&lt;a&gt;</pre>
				</div>
		</div>
		<h3>
				<a name="Lightbox-2.4%E5%9C%A8LightBox%E5%86%85%E9%83%A8%E8%BF%9E%E6%8E%A5%E8%87%B3%E5%8F%A6%E5%A4%96%E4%B8%80%E4%B8%AA%E9%A1%B5%E9%9D%A2%EF%BC%9A">
				</a>2.4 <b>在LightBox内部连接至另外一个页面：</b></h3>
		<p>直接使用a href连接过去即可，class仍然使用 class="lbAction" ,rel="insert";</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;a href=<span class="code-quote">"confirm.html"</span> class=<span class="code-quote">"lbAction"</span> rel=<span class="code-quote">"insert"</span>&gt;Go to Another Lightbox&lt;/a&gt;</pre>
				</div>
		</div>
		<h3>
				<a name="Lightbox-2.5%E9%81%AE%E7%9B%96%E6%95%88%E6%9E%9C%E9%85%8D%E7%BD%AE">
				</a>2.5 遮盖效果配置</h3>
		<p>    修改lightbox.css</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">#overlay {
 display: none;
 position: absolute;
 top: 0;
 left: 0;
 width: 100%;
 height: 100%;
 z-index: 5000;
 background-color: #000;
 -moz-opacity: 0.5;
 opacity: .50;
 filter: alpha( opacity = 50 );
}</pre>
				</div>
		</div>
		<h2>
				<a name="Lightbox-3.LightBox%7B%7D%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%EF%BC%9A">
				</a>3. LightBox<b>工作原理：</b></h2>
		<p> 当用户点击了class="lbOn"样式的a href连接，一个透明层会覆盖页面顶层，并且在第一次载入的调入下面这些：<br /> </p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;div id=<span class="code-quote">"overlay"</span>&gt;&lt;/div&gt;
&lt;div id=<span class="code-quote">"lightbox"</span>&gt;
    &lt;div id=<span class="code-quote">"lbLoadMessage"</span>&gt;
        &lt;p&gt;Loading&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;</pre>
				</div>
		</div>
		<p>  如果想改变载入事的消息，只需要修改 &lt;div id="lightbox"&gt;中的&lt;div id="lbLoadMessage"&gt;的信息，如改为 "载入中"。</p>
		<p>  载入的代码如下：</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java"> function initialize(){
     lbox = document.getElementsByClassName('lbOn');
     <span class="code-keyword">for</span>(i = 0; i &lt; lbox.length; i++) {
         valid = <span class="code-keyword">new</span> lightbox(lbox[i]);
     }
}</pre>
				</div>
		</div>
		<p>CSS覆盖效果代码:</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">#lightbox{
    display:none;
    position: absolute;
    top:50%;
    left:50%;
    z-index:9999;
    width:500px;
    height:400px;
    margin:-220px 0 0 -250px;
    }
#lightbox[id]{ /* IE6 and below Can't See This */
    position:fixed;
    }

#overlay{
    display:none;
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
    z-index:5000;  
    background-color:#000;
    -moz-opacity: 0.8;
    opacity:.80;
    filter: alpha(opacity=80);
    }
#overlay[id]{ /* IE6 and below Can't See This */
    position:fixed;
    }</pre>
				</div>
		</div>
		<p>覆盖IE的html动过下面这段：</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">prepareIE: function(height, overflow){
    bod = document.getElementsByTagName('body')[0];
    bod.style.height = height;
    bod.style.overflow = overflow;

    htm = document.getElementsByTagName('html')[0];
    htm.style.height = height;
    htm.style.overflow = overflow;
}</pre>
				</div>
		</div>
		<p>  </p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">getScroll() &amp; setScroll()getScroll:function (){
    <span class="code-keyword">var</span> yScroll;

    <span class="code-keyword">if</span> (self.pageYOffset) {
        yScroll = self.pageYOffset;
    } <span class="code-keyword">else</span><span class="code-keyword">if</span> (document.documentElement &amp;&amp; document.documentElement.scrollTop){  <span class="code-comment">// Explorer 6 Strict
</span>        yScroll = document.documentElement.scrollTop;
    } <span class="code-keyword">else</span><span class="code-keyword">if</span> (document.body) {<span class="code-comment">// all other Explorers
</span>        yScroll = document.body.scrollTop;
    }
        <span class="code-keyword">this</span>.yPos = yScroll;
}</pre>
				</div>
		</div>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">setScroll:function(x, y){
    window.scrollTo(x, y);
}</pre>
				</div>
		</div>
		<p>在IE中,select表单位于页面的顶层，&lt;DIV/&gt;会覆盖不掉，同样的FireFox中的Flash8夜是如此，我们都过以下代码吧它们遮盖掉。</p>
		<p>hideSelects()</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">hideSelects: function(visibility){
   selects = document.getElementsByTagName('select');
   <span class="code-keyword">for</span>(i = 0; i &lt; selects.length; i++) {
      selects\[i\].style.visibility = visibility;
 }
},</pre>
				</div>
		</div>
		<h2>
				<a name="Lightbox-4.LightboxClass%E4%BB%8B%E7%BB%8D">
				</a>4. Lightbox Class介绍</h2>
		<p>初始化时：<br /><b>initialize</b></p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">initialize: function(ctrl) {
      <span class="code-keyword">this</span>.content = ctrl.href;
      Event.observe(ctrl, 'click', <span class="code-keyword">this</span>.activate.bindAsEventListener(<span class="code-keyword">this</span>), <span class="code-keyword">false</span>);
     ctrl.onclick = function(){<span class="code-keyword">return</span><span class="code-keyword">false</span>;};
}</pre>
				</div>
		</div>
		<p>激活时：</p>
		<p>
				<b>activate():</b>
		</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">activate: function(){
    <span class="code-keyword">if</span> (browser == 'Internet Explorer'){
        <span class="code-keyword">this</span>.getScroll();
        <span class="code-keyword">this</span>.prepareIE('100%', 'hidden');
        <span class="code-keyword">this</span>.setScroll(0,0);
        <span class="code-keyword">this</span>.hideSelects('hidden');
    }
    <span class="code-keyword">this</span>.displayLightbox(<span class="code-quote">"block"</span>);
},</pre>
				</div>
		</div>
		<p>
				<b>displayLightbox():</b>
		</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">displayLightbox: function(display){
    $('overlay').style.display = display;
    $('lightbox').style.display = display;
   <span class="code-keyword">if</span>(display \!= 'none') <span class="code-keyword">this</span>.loadInfo();
},</pre>
				</div>
		</div>
		<p>
				<b>loadInfo():</b>
		</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">loadInfo: function() {
    <span class="code-keyword">var</span> myAjax = <span class="code-keyword">new</span> Ajax.Request(
    <span class="code-keyword">this</span>.content,

    {method: 'post', parameters: "", onComplete: <span class="code-keyword">this</span>.processInfo.bindAsEventListener(<span class="code-keyword">this</span>)}
    );
},</pre>
				</div>
		</div>
		<p>
				<b>processInfo():</b>
		</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">processInfo: function(response){
    info = <span class="code-quote">"&lt;div id='lbContent'&gt;"</span> + response.responseText + <span class="code-quote">"&lt;/div&gt;"</span>;
    <span class="code-keyword">new</span> Insertion.Before($('lbLoadMessage'), info)
    $('lightbox').className = <span class="code-quote">"done"</span>;
    <span class="code-keyword">this</span>.actions();
},</pre>
				</div>
		</div>
		<p>
				<b>actions():</b>
		</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;a href=<span class="code-quote">"http:<span class="code-comment">//wiki.springside.org.cn/pages/editpage.action#"</span>  class=<span class="code-quote">"lbAction"</span> rel=<span class="code-quote">"deactivate"</span>&gt;cancel&lt;/a&gt;</span></pre>
				</div>
		</div>
		<p>actions预先先吧 class="lbAction"给读取到了。这样点击的时候，就知道改做什么动作了。主要包括 rel="deactiveate" 和 rel="insert";</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">actions:function(){
lbActions = document.getElementsByClassName('lbAction');

<span class="code-keyword">for</span>(i = 0; i &lt; lbActions.length; i++) {
Event.observe(lbActions[i], 'click', <span class="code-keyword">this</span>\[lbActions[i].rel\].bindAsEventListener(<span class="code-keyword">this</span>), <span class="code-keyword">false</span>);
lbActions[i].onclick = function()
{<span class="code-keyword">return</span><span class="code-keyword">false</span>;}

;
}
},</pre>
				</div>
		</div>
		<p>
				<b>deactivate() 退出Ligthbox</b>
		</p>
		<p>如果退出LightBox 就使用rel = deactivate 代码如下：</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;a href=<span class="code-quote">"http:<span class="code-comment">//wiki.springside.org.cn/pages/editpage.action#"</span>  class=<span class="code-quote">"lbAction"</span> rel=<span class="code-quote">"deactivate"</span>&gt;cancel&lt;/a&gt;</span></pre>
				</div>
		</div>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">deactivate:function (){
Element.remove($('lbContent'));

<span class="code-keyword">if</span> (browser == <span class="code-quote">"Internet Explorer"</span>)
{ <span class="code-keyword">this</span>.setScroll(0,<span class="code-keyword">this</span>.yPos); <span class="code-keyword">this</span>.prepareIE(<span class="code-quote">"auto"</span>, <span class="code-quote">"auto"</span>); <span class="code-keyword">this</span>.hideSelects(<span class="code-quote">"visible"</span>); }

<span class="code-keyword">this</span>.displayBlock(<span class="code-quote">"none"</span>);
}</pre>
				</div>
		</div>
		<p>
				<b>insert() 在LightBox内部跳转</b>
		</p>
		<p>在lightbox内部，连接至另外一个页面，就通过insert方法</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">&lt;a href=<span class="code-quote">"http:<span class="code-comment">//wiki.springside.org.cn/pages/editpage.action#"</span>  class=<span class="code-quote">"lbAction"</span> rel=<span class="code-quote">"deactivate"</span>&gt;cancel&lt;/a&gt;</span></pre>
				</div>
		</div>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java">insert: function(e){
link = Event.element(e).parentNode;
Element.remove($('lbContent'));

<span class="code-keyword">var</span> myAjax = <span class="code-keyword">new</span> Ajax.Request(
link.href,
{method: 'post', parameters: "", onComplete: <span class="code-keyword">this</span>.processInfo.bindAsEventListener(<span class="code-keyword">this</span>)}
);
},</pre>
				</div>
		</div>
<img src ="http://www.blogjava.net/gm_jing/aggbug/85770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2006-12-06 10:48 <a href="http://www.blogjava.net/gm_jing/articles/85770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>html中的bug探询</title><link>http://www.blogjava.net/gm_jing/articles/73980.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Mon, 09 Oct 2006 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/73980.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/73980.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/73980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/73980.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/73980.html</trackback:ping><description><![CDATA[
		<p>1.form 中的嵌套<br />问题:不认识第一个form,抛出缺少对象。<br /><br /><font size="2">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;<br />&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>"&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<br />&lt;title&gt;无标题文档&lt;/title&gt;<br />&lt;script language="javascript"&gt;<br />function test(formName) {<br /> var theForm = document.getElementById(formName);<br /> alert(theForm.name);<br />}<br />&lt;/script&gt;<br />&lt;/head&gt;</font></p>
		<p>
				<font size="2">&lt;body&gt;<br />&lt;form name="searchForm"&gt;<br /> &lt;form name="1Form"&gt;<br /> &lt;/form&gt;<br /> &lt;form name="2Form"&gt;<br /> &lt;/form&gt;<br /> &lt;form name="3Form"&gt;<br /> &lt;/form&gt;<br /> <br /> &lt;input type="button" name="other" value="提交1Form" onClick="test('1Form');" /&gt;      <br /> &lt;input type="button" name="sub" value="提交2Form" onClick="test('2Form');" /&gt;<br /> &lt;input type="button" name="main" value="提交3Form" onClick="test('3Form');" /&gt;<br /> &lt;input type="button" name="main" value="提交searchForm" onClick="test('searchForm');" /&gt;<br />&lt;/form&gt; </font>
		</p>
		<p>
				<font size="2">&lt;/body&gt;<br />&lt;/html&gt;<br /></font>
		</p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/73980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2006-10-09 10:11 <a href="http://www.blogjava.net/gm_jing/articles/73980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于模式窗口showModalDialog的用法</title><link>http://www.blogjava.net/gm_jing/articles/69822.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Fri, 15 Sep 2006 02:35:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/69822.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/69822.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/69822.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/69822.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/69822.html</trackback:ping><description><![CDATA[
		<h2 class="diaryTitle">模式窗口showModalDialog的用法总结</h2>                                       
<p>1。打开窗口：<br /></p><div class="code_head">Code:</div><div class="code_main">var handle = window.showModalDialog(url, objects, feathers);</div><br />其中：objects可以为参数（包括数组），也可以是对象。<br />通常的用法 objects = {window} ，把父窗体的对象共享给子窗体。<br /><br />2。关闭子窗口：<br /><div class="code_head">Code:</div><div class="code_main">window.close();</div><br /><br />3。从子窗体传参数给父窗体：<br /><div class="code_head">Code:</div><div class="code_main">window.returnVal = string;</div><br /><br />3。清除缓存，防止模式窗口页面不更新的情况：<br /><div class="code_head">Code:</div><div class="code_main">HTML<br />&lt;META HTTP-EQUIV="pragma" CONTENT="no-cache"&gt;<br />&lt;META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"&gt;<br />&lt;META HTTP-EQUIV="expires" CONTENT="Mon, 23 Jan 1978 20:52:30 GMT"&gt;<br />ASP<br />&lt;%<br />Response.Expires = -1<br />Response.ExpiresAbsolute = Now() - 1<br />Response.cachecontrol = "no-cache"<br />%&gt;<br />PHP<br />header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");<br />header("Cache-Control: no-cache, must-revalidate");<br />header("Pragma: no-cache");<br />JSP<br />response.setHeader("Pragma","No-Cache");<br />response.setHeader("Cache-Control","No-Cache");<br />response.setDateHeader("Expires", 0);</div><br /><br />4。防止打开新窗口（如提交表单）：<br /><div class="code_head">Code:</div><div class="code_main">&lt;base target="_self"&gt;</div><br /><br />5。在模式窗口使用F5刷新页面：<br /><div class="code_head">Code:</div><div class="code_main">&lt;base target="_self"&gt;<br />&lt;body onkeydown="if (event.keyCode==116){reload.click()}"&gt;<br />&lt;a id="reload" href="filename.htm" style="display:none"&gt;reload...&lt;/a&gt;</div><br />其中：filename为窗口页面。<br /><br />6。防止模式窗口打开的页面出现cookie丢失的情况：<br />模式窗口打开新窗口时，仅可以使用 showModalDialog(url,window,feathers); 方法，且 objects 为 window 。<br /><br />7。在弹出窗口中获得或设置主窗口的任何值：<br />打开弹出窗口时用：showModalDialog(url, window, feathers)<br />在弹出窗口中使用 window.dialogArguments 对象（即主窗口传递过来的 window 对象集），即可以获得或者设置主窗口的值。<br /><img src ="http://www.blogjava.net/gm_jing/aggbug/69822.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2006-09-15 10:35 <a href="http://www.blogjava.net/gm_jing/articles/69822.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于radio操作</title><link>http://www.blogjava.net/gm_jing/articles/64374.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Fri, 18 Aug 2006 08:07:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/64374.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/64374.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/64374.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/64374.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/64374.html</trackback:ping><description><![CDATA[
		<p>
				<br />假设你的radio名称为  radioitem  <br /> <br />function  checkRadio(){  <br />   var  arr  =  document.all("radioitem")  ;  <br /> <br />   if(arr){  <br />           if  (arr.length){//有多个单选  <br />                 for(var  i  =0;i&lt;arr.length;i++){  <br />                       if(arr[i].checked){  <br />                           //你的操作  <br />                             break;  <br />                       }  <br />                 }  <br />           }  <br />           else{//只有1个  <br />                     if  (arr.checked){  <br />                       //你的  操作          <br />                     }  <br />           }  <br />   <br />   }  <br />   else{  <br />         //没有单选框  <br />   }  <br /> <br />}  <br /></p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/64374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2006-08-18 16:07 <a href="http://www.blogjava.net/gm_jing/articles/64374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于event处理</title><link>http://www.blogjava.net/gm_jing/articles/64113.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Thu, 17 Aug 2006 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/64113.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/64113.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/64113.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/64113.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/64113.html</trackback:ping><description><![CDATA[
		<p>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<br />"<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />&lt;title&gt;无标题文档&lt;/title&gt;<br />&lt;script language="javascript"&gt;</p>
		<p>window.onload=function(){<br />  if(typeof(window.document.all.mytable)=="undefined"){<br />   return;<br />  }<br />  var trLen=window.document.all.mytable.children[1].children.length;  <br />  for(i=0;i &lt; trLen;i++){<br />   window.document.all.mytable.children[1].children[i].<font color="#ff1493">attachEvent</font>('onclick',showInfo);<br />  }<br />  window.document.all.mytable.children[1].children[0].children[0].<font color="#ff1493">fireEvent</font>("onclick");<br />}</p>
		<p> </p>
		<p>
				<br />function showInfo(){</p>
		<p>  var oTr=<font color="#ff1493">window.event.srcElement.parentElement</font>;<br />  if(oTr.tagName != "TR") {<br />   return;<br />  }<br />  show(oTr); </p>
		<p> }<br /> function show(record){  <br />  window.document.all.NAME.value    =record.children[0].innerHTML;<br />  window.document.all.PASSWORD.value=record.children[1].innerText;<br />  window.document.all.LOCATION.value=record.children[2].innerText; <br /> <br /> }<br />&lt;/script&gt;<br />&lt;/head&gt;</p>
		<p>&lt;body&gt;<br />&lt;form name="theForm" method="get"&gt;<br /> NAME:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;input type="text" name="NAME"&gt;&lt;br&gt;<br /> PASSWORD:&lt;input type="text" name="PASSWORD"&gt;&lt;br&gt;<br /> LOCATION:&lt;input type="text" name="LOCATION"&gt;&lt;br&gt;<br /> &lt;button onClick="test()" &gt;测试&lt;/button&gt;<br />&lt;/form&gt;</p>
		<p>&lt;table id="mytable"&gt;<br /> &lt;thead&gt;<br />  &lt;tr&gt;&lt;th&gt;NAME&lt;/TH&gt;&lt;th&gt;PASSWORD&lt;/TH&gt;&lt;th&gt;LOCATION&lt;/TH&gt;&lt;/tr&gt;<br /> &lt;/thead&gt;<br /> &lt;tbody&gt;<br />   &lt;tr&gt;&lt;td&gt;JING&lt;/td&gt;&lt;td&gt;11111&lt;/td&gt;&lt;td&gt;SHHAI  &lt;/td&gt;&lt;/tr&gt;<br />  &lt;tr&gt;&lt;td&gt;LI  &lt;/td&gt;&lt;td&gt;22222&lt;/td&gt;&lt;td&gt;BEIJING&lt;/td&gt;&lt;/tr&gt;<br />  &lt;tr&gt;&lt;td&gt;WU  &lt;/td&gt;&lt;td&gt;33333&lt;/td&gt;&lt;td&gt;HAINANG&lt;/td&gt;&lt;/tr&gt;<br /> &lt;/tbody&gt;<br />&lt;/table&gt;</p>
		<p>&lt;/body&gt;<br />&lt;/html&gt;</p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/64113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2006-08-17 14:06 <a href="http://www.blogjava.net/gm_jing/articles/64113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascripts 一些总结</title><link>http://www.blogjava.net/gm_jing/articles/64112.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Thu, 17 Aug 2006 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/64112.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/64112.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/64112.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/64112.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/64112.html</trackback:ping><description><![CDATA[<p>1.<br />
&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .....<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; } catch (e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.description;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
2.object&nbsp;<br />
&nbsp;a.<font color="#0000ff" size="4"><strong>common:<br />
</strong></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getElementById(),getElementsByTagName,getElements,getElementsByClassName<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;innerHTML, innerTEXT, type,tagName<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeof (typeof element == 'object')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((typeof o == "object") &amp;&amp; (o.constructor == Date))<br />
<br />
&nbsp;&nbsp;<br />
&nbsp; b.<font color="#0000ff" size="4"><strong>event:</strong></font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcElement (window.event.srcElement.parentElement)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyCode<br />
&nbsp; <br />
3.<br />
&nbsp; parseInt()</p>
<p>4.<br />
&nbsp; arguments<br />
&nbsp;&nbsp;<br />
5.getElementsByTagName<br />
bod = document.getElementsByTagName('body')[0];<br />
&nbsp; </p>
<img src ="http://www.blogjava.net/gm_jing/aggbug/64112.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2006-08-17 14:03 <a href="http://www.blogjava.net/gm_jing/articles/64112.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>