﻿<?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-&lt;font color="red"&gt;JRen&lt;/font&gt;&lt;font color="lightgreen"&gt;大鹏一曰同风起，扶摇直上九万里&lt;/font&gt;-随笔分类-Ajax</title><link>http://www.blogjava.net/liaojiyong/category/11535.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 24 May 2007 10:09:15 GMT</lastBuildDate><pubDate>Thu, 24 May 2007 10:09:15 GMT</pubDate><ttl>60</ttl><item><title>window.dialogArguments</title><link>http://www.blogjava.net/liaojiyong/archive/2007/05/24/119767.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 24 May 2007 08:58:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/05/24/119767.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/119767.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/05/24/119767.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/119767.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/119767.html</trackback:ping><description><![CDATA[<span id=Codehighlighter1_58_1146_Open_Text></span>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TITLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">myDialog.htm</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TITLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text/javascript"</span><span style="COLOR: #ff0000">&nbsp;src</span><span style="COLOR: #0000ff">="showModeLessDialogJS.js"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">LABEL&nbsp;</span><span style="COLOR: #ff0000">FOR</span><span style="COLOR: #0000ff">="oEnterName"</span><span style="COLOR: #ff0000">&nbsp;ACCESSKEY</span><span style="COLOR: #0000ff">="f"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enter&nbsp;your<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">SPAN&nbsp;</span><span style="COLOR: #ff0000">STYLE</span><span style="COLOR: #0000ff">="text-decoration:underline"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">F</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SPAN</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">irst&nbsp;Name<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">LABEL</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">INPUT&nbsp;</span><span style="COLOR: #ff0000">ID</span><span style="COLOR: #0000ff">=oEnterName</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BR</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BR</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">INPUT&nbsp;</span><span style="COLOR: #ff0000">VALUE</span><span style="COLOR: #0000ff">="Apply"</span><span style="COLOR: #ff0000">&nbsp;TYPE</span><span style="COLOR: #0000ff">=button&nbsp;</span><span style="COLOR: #ff0000">onclick</span><span style="COLOR: #0000ff">="fnGetInfo();"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">INPUT&nbsp;</span><span style="COLOR: #ff0000">VALUE</span><span style="COLOR: #0000ff">="Ok"</span><span style="COLOR: #ff0000">&nbsp;TYPE</span><span style="COLOR: #0000ff">=button&nbsp;</span><span style="COLOR: #ff0000">onclick</span><span style="COLOR: #0000ff">="fnGetInfo();window.close();"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">INPUT&nbsp;</span><span style="COLOR: #ff0000">VALUE</span><span style="COLOR: #0000ff">="Cancel"</span><span style="COLOR: #ff0000">&nbsp;TYPE</span><span style="COLOR: #0000ff">=button&nbsp;</span><span style="COLOR: #ff0000">onclick</span><span style="COLOR: #0000ff">="fnCancel();window.close();"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TITLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">showModelessDialogEX.htm</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TITLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text/javascript"</span><span style="COLOR: #ff0000">&nbsp;src</span><span style="COLOR: #0000ff">="showModeLessDialogJS.js"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">P</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enter&nbsp;your&nbsp;first&nbsp;name:<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">SPAN&nbsp;</span><span style="COLOR: #ff0000">ID</span><span style="COLOR: #0000ff">="oName"</span><span style="COLOR: #ff0000">&nbsp;STYLE</span><span style="COLOR: #0000ff">="color:red;font-size:24"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Joan</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SPAN</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">P</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">INPUT&nbsp;</span><span style="COLOR: #ff0000">TYPE</span><span style="COLOR: #0000ff">="button"</span><span style="COLOR: #ff0000">&nbsp;VALUE</span><span style="COLOR: #0000ff">="Display&nbsp;Modeless&nbsp;Dialog"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onclick</span><span style="COLOR: #0000ff">="fnCallDialog()"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><br><img id=Codehighlighter1_22_110_Open_Image onclick="this.style.display='none'; Codehighlighter1_22_110_Open_Text.style.display='none'; Codehighlighter1_22_110_Closed_Image.style.display='inline'; Codehighlighter1_22_110_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_22_110_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_22_110_Closed_Text.style.display='none'; Codehighlighter1_22_110_Open_Image.style.display='inline'; Codehighlighter1_22_110_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;fnGetInfo()&nbsp;</span><span id=Codehighlighter1_22_110_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_22_110_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;sData&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;dialogArguments;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;sData.sUserName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;oEnterName.value;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;sData.fnUpdate();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_132_210_Open_Image onclick="this.style.display='none'; Codehighlighter1_132_210_Open_Text.style.display='none'; Codehighlighter1_132_210_Closed_Image.style.display='inline'; Codehighlighter1_132_210_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_132_210_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_132_210_Closed_Text.style.display='none'; Codehighlighter1_132_210_Open_Image.style.display='inline'; Codehighlighter1_132_210_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;fnCancel()&nbsp;</span><span id=Codehighlighter1_132_210_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_132_210_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;sData&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;dialogArguments;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;sData.sUserName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Joan</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;sData.fnUpdate();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;sUserName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_256_363_Open_Image onclick="this.style.display='none'; Codehighlighter1_256_363_Open_Text.style.display='none'; Codehighlighter1_256_363_Closed_Image.style.display='inline'; Codehighlighter1_256_363_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_256_363_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_256_363_Closed_Text.style.display='none'; Codehighlighter1_256_363_Open_Image.style.display='inline'; Codehighlighter1_256_363_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;fnCallDialog()&nbsp;</span><span id=Codehighlighter1_256_363_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_256_363_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;window.showModelessDialog(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">myDialog.htm</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;window,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">status:false;dialogWidth:300px;dialogHeight:300px</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_385_417_Open_Image onclick="this.style.display='none'; Codehighlighter1_385_417_Open_Text.style.display='none'; Codehighlighter1_385_417_Closed_Image.style.display='inline'; Codehighlighter1_385_417_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_385_417_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_385_417_Closed_Text.style.display='none'; Codehighlighter1_385_417_Open_Image.style.display='inline'; Codehighlighter1_385_417_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;fnUpdate()&nbsp;</span><span id=Codehighlighter1_385_417_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_385_417_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;oName.innerText&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sUserName;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<br><br>dialogArguments只能在mode和modeless窗口中才能使用，可以传递传递任意类型的值，<br>上例就是传得失window. 在以前的项目中，页面之间传递参数经常使用的是url后接参数的形式，<br>现在终于发现dialogArguments不愧为更好的方法。<br>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/119767.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-05-24 16:58 <a href="http://www.blogjava.net/liaojiyong/archive/2007/05/24/119767.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax框架</title><link>http://www.blogjava.net/liaojiyong/archive/2007/05/18/118339.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Fri, 18 May 2007 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/05/18/118339.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/118339.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/05/18/118339.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/118339.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/118339.html</trackback:ping><description><![CDATA[<p class=info>作者 <strong>Scott Delap</strong>译者 <strong>Jason Lai</strong> 发布于 2007年5月6日 上午8时0分 </p>
<dl class=tags2>
<dt class=community>社区
<dd><a id=739 onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;" href="http://www.infoq.com/cn/java/" name=java><u><font color=#0000ff>Java</font></u></a>
<dt class=topics>主题
<dd><a id=744 onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;" href="http://www.infoq.com/cn/webframework/" name=webframework><u><font color=#0000ff>Web框架</font></u></a> </dd></dl>
<p>Dr. Dobbs网站最近刊登了<a href="http://www.ddj.com/dept/webservices/199203087?pgno=1" target=_blank><u><font color=#0000ff>一篇关于如何选择Ajax框架的案例分析</font></u></a>，取自T. Rowe Price的一个开发团队。该团队评估了在他们的下一代应用中可选用的几个热门Ajax框架： </p>
<blockquote>
<ul>
    <li>Dojo 0.3.1（dojotoolkit.org）；
    <li>Prototype和Scriptaculous 1.4（www.prototypejs.org和script.aculo.us）；
    <li>Direct Web Reporting 1.0（getahead.org/dwr）；
    <li>Yahoo! User Interface Library 0.11.1（developer.yahoo.com/yui）；
    <li>Google Web Toolkit 1.0（code.google.com/webtoolkit）。 </li>
</ul>
</blockquote>
<p>经过最初考察之后，GWT就被从名单上剔除了，因为和团队原有的UI和后台开发人员分配不符，而且必须学习一套基于Java的新API。DWR也被排出在考虑范围之内，因为需要给T. Rowe Price使用的Websphere应用服务器打补丁。于是，接下来的考察对象就只剩下Prototype、Dojo和Yahoo UI了。 </p>
<p>随后，文章比较了三个框架各自如何实现创建一个标签型Ajax Widget和一个带标题栏的动态&#8220;Hub&#8221;Widget。为了实现所需要的标签Widget功能，三个框架都需要进行一定的定制工作，但Dojo已经直接附带了最为接近的功能。随后，该团队又考察了加载时间： </p>
<blockquote>&#8230;&#8230;所使用的框架代码量级越小，性能衰减的可能性就越小。YUI完全压缩后的JavaScript文件需要22K，而Prototype是32K，明显比单独定制的Dojo JavaScript文件（220K）要小很多。这三个框架在高速网络连接的情况下性能都很不错；然而，YUI和Prototypes/Scriptaculous在56K的拨号上网连接下性能要高一些&#8230;&#8230; </blockquote>
<p>最后，开发团队考察了开发的总体难易程度。得出的结论是Dojo提供了更多的特性和Widget，但要进行定制难度就显得很比较大，因为需要更改的文件数量很多。最终，他们选择了Yahoo UI，原因是它的代码提供了详尽的文档，并且在Yahoo网站上还有详细的入门手册。</p>
<p><strong>查看英文原文：</strong><a href="http://www.infoq.com/news/2007/05/pick-ajax"><u><font color=#0000ff>Picking an Ajax Framework</font></u></a></p>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/118339.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-05-18 13:58 <a href="http://www.blogjava.net/liaojiyong/archive/2007/05/18/118339.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript的系统函数学习 （转）</title><link>http://www.blogjava.net/liaojiyong/archive/2007/03/12/103302.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Mon, 12 Mar 2007 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/03/12/103302.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/103302.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/03/12/103302.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/103302.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/103302.html</trackback:ping><description><![CDATA[
		<ol>
				<li>
						<strong>编码处理函数</strong>
				</li>
		</ol>
		<p>
				<strong>         1） encodeURI</strong>
				<br />                 返回一个对URI字符串编码后的结果。URL是最常见的一种URI；<br /><strong>         2） decodeURI</strong><br />                 将一个已编码的URI字符串解码成最原始的字符串返回；<br />         3）  举例：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">Script language</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">javascript</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;!--</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> encodeStr </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> encodeURI(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">http://www.amigoxie.com/index.jsp?name=阿蜜果</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">encodeStr: </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> encodeStr);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> decodeStr </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> decodeURI(encodeStr);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">decodeStr: </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> decodeStr);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">--&gt;</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>      输出结果如下：<br />     encodeStr:  <span style="COLOR: #000000"><a href="http://www.amigoxie.com/index.jsp?name=%E9%98%BF%E8%9C%9C%E6%9E%9C"><font color="#638f27">http://www.amigoxie.com/index.jsp?name=%E9%98%BF%E8%9C%9C%E6%9E%9C</font></a></span><br />     <span style="COLOR: #000000">decodeStr:  <span style="COLOR: #000000"><a href="http://www.amigoxie.com/index.jsp?name"><font color="#638f27">http://www.amigoxie.com/index.jsp?name</font></a>=阿蜜果<br /><strong>   2. 数值处理函数</strong><br />   <strong>   1）   parseInt</strong><br />              将一个字符串指定的进制转换为一个整数，语法格式为：<br />               parseInt(numString, [radix])<br />               第一个参数是要进行转换的字符串，是介于2到36之间的数值，用于指定进行字符串转换时所用的进制。<br />                举例如下： 
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">下面是同一个数用不同进制表示时在默认情况下的举例</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">默认情况下的结果：</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">32:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">32</span><span style="COLOR: #000000">'));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;032:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">032</span><span style="COLOR: #000000">'));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;0x32:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">0x32</span><span style="COLOR: #000000">')</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">下面是同一个数用不同进制表示时在转为2进制的举例</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">转为2进制的结果：</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">32:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">32</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;032:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">032</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;0x32:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">0x32</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">下面是同一个数用不同进制表示时在转为8进制的举例</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">转为8进制的结果：</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">32:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">32</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;032:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">032</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;0x32:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">0x32</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">下面是同一个数用不同进制表示时在转为16进制的举例</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">转为16进制的结果：</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">32:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">32</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">16</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;032:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">032</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">16</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;0x32:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">0x32</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">16</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;p&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">下面是对一个2进制数转换为不同进制的举例</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">11001010转换后的结果： </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2进制:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">11001010</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;16进制:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">11001010</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">16</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">8进制:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">11001010</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;10进制:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('</span><span style="COLOR: #000000">11001010</span><span style="COLOR: #000000">',</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">下面是对不全是数字情况下转换的举例</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;p&gt;43abc转换后:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('43abc'));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;abc43转换后:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('abc43'));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;abc转换后:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">parseInt('abc'));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div>   输出结果如下：<br />      默认情况下的结果：32:32;032:26;0x32:50<br />      转为2进制的结果：32:NaN;032:0;0x32:0<br />      转为8进制的结果：32:26;032:26;0x32:0<br />      转为16进制的结果：32:50;032:50;0x32:50 
<p>      11001010转换后的结果： <br />      2进制:202;16进制:285216784<br />      8进制:2359816;10进制:11001010 </p><p>      43abc转换后:43;abc43转换后:NaN;abc转换后:NaN <br /><strong>     2） parseFloat方法</strong><br />            该方法将一个字符串转换成对应的小数。<br />            eg. </p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> floatStr </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">4.1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    alert((floatStr </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    alert(parseFloat(floatStr) </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div></span></span><font color="#4b4b4b">         输出结果如下：<br />         4.11<br />         5.1<br /><br /> <strong>       3） isNaN方法</strong><br />               该方法用于检测前两个方法返回值是否为非数值型，如果是，返回true，否则，反回false。<br />               eg. <br />               </font><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><font color="#4b4b4b"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></font><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> loginName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> parseInt('amigo1121');<br /><img id="Codehighlighter1_101_183_Open_Image" onclick="this.style.display='none'; Codehighlighter1_101_183_Open_Text.style.display='none'; Codehighlighter1_101_183_Closed_Image.style.display='inline'; Codehighlighter1_101_183_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_101_183_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_101_183_Closed_Text.style.display='none'; Codehighlighter1_101_183_Open_Image.style.display='inline'; Codehighlighter1_101_183_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(isNaN(loginName)) </span><span id="Codehighlighter1_101_183_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_101_183_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">如果loginName不是数值,执行如下语句</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        alert(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">parseInt('amigo1121')的结果是: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> loginName);<br /><img id="Codehighlighter1_190_234_Open_Image" onclick="this.style.display='none'; Codehighlighter1_190_234_Open_Text.style.display='none'; Codehighlighter1_190_234_Closed_Image.style.display='inline'; Codehighlighter1_190_234_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_190_234_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_190_234_Closed_Text.style.display='none'; Codehighlighter1_190_234_Open_Image.style.display='inline'; Codehighlighter1_190_234_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_190_234_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_190_234_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        alert(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">parseInt('amigo1121')的结果是数值!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div>       输出结果如下:<br />      <span style="COLOR: #000000">parseInt('amigo1121')的结果是: NaN<br />     <br /><strong>      3 字符串编码处理函数</strong><br />          <strong>1)  escape方法</strong><br />               该方法返回对一个字符串编码后的结果字符串,所有空格, 标点, 重音符号以及任何其他非ASCII码字符都用%xx编码替换,其中xx等于表示该字符的Unicode编码的十六进制数.空格返回为"%20", 字符值大于255的字符以%xxxx格式存储.<br />              eg. 
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> test </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> escape(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">am ^_^ igo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    alert(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">am ^_^ igo经escape方法处理后为: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> test);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div></span><font color="#4b4b4b">           输出为: </font><span style="COLOR: #000000">am ^_^ igo经escape方法处理后为: am%20%5E_%5E%20igo<br />        <strong> 2)  unescape方法</strong><br />              该方法将一个用escape方法编码的结果字符串解码成原始字符串.<br />              eg. 
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> test </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> escape(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">am ^_^ igo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> unescapeStr </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> unescape(test);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    alert(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">unescapeStr: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> unescapeStr);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div></span><font color="#4b4b4b">            输出结果为:  </font><span style="COLOR: #000000">am ^_^ igo<br />   <strong>      3)  eval方法</strong><br />              该方法将某个参数字符串作为一个JavaScript执行.</span><font color="#4b4b4b"><br /><br /><br /><div class="feedbackItem"><div class="feedbackListTitle">//定义JavaScript对象的几种格式<br /><br />// Method 1: flat array style quick object define<br />var myObject = {<br />username : "beansoft",<br />age : 24,<br />test : function() {alert(this.age);}<br />};<br /><br />// Method 2: using Object<br />var myObject = new Object();<br />myObject.username = "beansoft";<br />myObject.age = 24;<br /><br />// Method 3: using constructor<br /><br />function MyObject(username, age) {<br />this.username = username;<br />this.age = age;<br />this.test = function() {alert(this.age);};<br />}<br /><br />var myObject = new MyObject("beansoft", 24);<br /><br />// Using: myObject.username, myObject["username"], myObject[0]<br />myObject.test();// Will display alert window, value is age <br />myObject.username = "Hello";// Will asign the username property to "Hello"  <br /><a id="AjaxHolder_Comments_CommentList_ctl03_DeleteLink" href="javascript:__doPostBack('AjaxHolder$Comments$CommentList$ctl03$DeleteLink','')"></a>  <a id="AjaxHolder_Comments_CommentList_ctl03_EditLink" causesvalidation="False"></a></div></div><div class="feedbackItem"><div class="feedbackListTitle">语法<br />with (object)<br />statement <br />with 语句的语法组成如下： <br /><br />部分 描述 <br />object 新的默认对象。<br /><br />statement 一个语句，object 是该语句的默认对象。可以是复合语句。 <br /><br /><br />说明<br />with 语句通常用来缩短特定情形下必须写的代码量。在下面的例子中，请注意 Math 的重复使用： <br />x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10) <br />y = Math.tan(14 * Math.E)<br /><br />当使用 with 语句时，代码变得更短且更易读： <br />with (Math)<br />{<br />x = cos(3 * PI) + sin (LN10) <br />y = tan(14 * E)<br />}<br /><br /><br /><br />当我们操作一个很长的对象的时候, 可以减少一点代码量, 例如:<br />with(someobj.style) {<br />dispaly = 'none';<br />} <a id="AjaxHolder_Comments_CommentList_ctl04_EditLink" causesvalidation="False"></a></div></div></font><img src ="http://www.blogjava.net/liaojiyong/aggbug/103302.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-03-12 13:58 <a href="http://www.blogjava.net/liaojiyong/archive/2007/03/12/103302.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js如何判断输入是否为正整数？（转）</title><link>http://www.blogjava.net/liaojiyong/archive/2007/03/12/103301.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Mon, 12 Mar 2007 05:57:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/03/12/103301.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/103301.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/03/12/103301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/103301.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/103301.html</trackback:ping><description><![CDATA[1）  "^\\d+$"　　//非负整数（正整数   +   0）     <br />  "^[0-9]*[1-9][0-9]*$"　　//正整数     <br />  "^((-\\d+)|(0+))$"　　//非正整数（负整数   +   0）     <br />  "^-[0-9]*[1-9][0-9]*$"　　//负整数     <br />  "^-?\\d+$"　　　　//整数     <br />  "^\\d+(\\.\\d+)?$"　　//非负浮点数（正浮点数   +   0）     <br />  "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"　　//正浮点数     <br />  "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"　　//非正浮点数（负浮点数   +   0）     <br />  "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"　　//负浮点数     <br />  "^(-?\\d+)(\\.\\d+)?$"　　//浮点数<br />2） var   r   =   /^\+?[1-9][0-9]*$/;　　//正整数     <br />       r.test(str); <img src ="http://www.blogjava.net/liaojiyong/aggbug/103301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-03-12 13:57 <a href="http://www.blogjava.net/liaojiyong/archive/2007/03/12/103301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript的数值处理对象学习 (转)</title><link>http://www.blogjava.net/liaojiyong/archive/2007/03/12/103300.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Mon, 12 Mar 2007 05:56:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/03/12/103300.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/103300.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/03/12/103300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/103300.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/103300.html</trackback:ping><description><![CDATA[
		<ul>
				<li>
						<strong>Math对象</strong>
				</li>
		</ul>
		<p>        <strong> 1. Math对象的属性</strong> <br />               Math对象用来进行属性运算，它与如下属性：<br />             <strong>  1）Math.E:</strong>    欧拉常数；<br />           <strong>    2）Math.LN2:</strong>   2的自然对数；<br />            <strong>   3）Math.LN2:</strong>   10的自然对数；<br />         <strong>      4）Math.LOG2E: </strong>  以2为底E的对数；<br />               <strong>5）Math.LOG10E:</strong>   以10为底E的对数；<br />       <strong>        6）Math.PI:</strong>   圆周率；<br />              <strong> 7）Math.SQRT1_2:</strong>   0.5的平方根；<br />              <strong> 8）Math.SRRT2:</strong>  2的平方根。<br />          <strong>2. Math对象的方法</strong><br />               <strong>1）abs(n)： </strong>绝对值；<br />               <strong>2）acos(n)：</strong>反余弦值（n为弧度）；<br />           <strong>    3）asin(n)：</strong> 反正弦值（n为弧度）；<br />              <strong> 4）atan(n)：</strong> 反正切值（n为弧度）；<br />              <strong> 5）atan2(m, n)：</strong>  极坐标m、n的角度；<br />              <strong> 6）ceil(n)：</strong> 大于或等于n的整数；<br />              <strong> 7）cos(n)：</strong> 余弦值(n为弧度)；<br />               <strong>8）exp(n)：</strong> E的n次方；<br />             <strong>  9）floor(n)：</strong> 小于或等于n的整数；<br />             <strong> 10）log(n)：</strong>N的自然对数；<br />             <strong> 11）max(m,n)：</strong>较大值；<br />        <strong>      12）min(m, n)：</strong>较小值；<br />             <strong> 13）pow(m,n)：</strong>m的n次方；<br />            <strong>  14）random()：</strong>0~1之间的随机数；<br />             <strong> 15）round(n)：</strong>n的四舍五入值；<br />        <strong>      16）sin(n)：</strong>正弦值（n为弧度）；<br />        <strong>      17）sqrt(n)：</strong>平方根；<br />              <strong>18）tan(n)：</strong>正切值（n为弧度）。<br />              使用举例：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">script language</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">javascript</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;!--</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> number1 </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">4.3</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(number1 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000">　</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">调用Math的ceil(n)方法后的值为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> Math.ceil(number1) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(number1 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">调用Math的floor(n)方法后的值为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> Math.floor(number1) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> number2 </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">4</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(number2 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">的平方根为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> Math.sqrt(number2) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(number1 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">和</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> number2 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">中较小的数字为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> Math.min(number1, number2) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">, 较大的数为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> Math.max(number1, number2) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(number1 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">的四舍五入值为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> Math.round(number1) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">随机生成的0~1之间的值：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> Math.random() </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">2的４次方为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> Math.pow(</span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">, </span>
				<span style="COLOR: #000000">4</span>
				<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">--&gt;</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
		<p>          输出结果如下:<br />             4.3调用Math的ceil(n)方法后的值为：5<br />             4.3调用Math的floor(n)方法后的值为：4<br />             4的平方根为：2<br />            4.3和4中较小的数字为：4, 较大的数为：4.3<br />            4.3的四舍五入值为：4<br />            随机生成的0~1之间的值：0.2544149761504894<br />            2的４次方为：16</p>
		<ul>
				<li>
						<strong>Number对象</strong>
				</li>
		</ul>
		<p>
				<strong>          1. 属性<br /></strong>              <strong>1）NaN: </strong> not a number的缩写,当一个数值相关的函数或方法处理一个非数值型数据(或返回值)时,js返回NaN,parseInt()和parseFloat()方法时,如果进行转换的字符不是数值,也会返回NaN,可以使用isNaN()函数检测一个值是否是数值.　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<br />        <strong>  2. 方法</strong><br />　　<strong>　1）toExponential()：</strong>该方法强制数值用指数符号显示，<br />　　<strong>　2）toFixed()：</strong> 该方法将数值格式化为小数点后面指定的数值；<br />　　　<strong>3）toPrecision(): 　</strong>定义数值总共显示多少位数；<br />　　<strong>　4）toString():</strong>  返回当前数值的字符串值,如果初始值不是十进制数,默认将值转换为十进制数.<br />           <br />            使用举例:</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">script language</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">javascript</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;!--</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> num </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">34567</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(num </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">调用toExponential(3)后为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num.toExponential(</span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(num </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">调用toExponential(4)后为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num.toExponential(</span>
				<span style="COLOR: #000000">4</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(num </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">调用toExponential(5)后为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num.toExponential(</span>
				<span style="COLOR: #000000">5</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(num </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">调用toFixed(3)后为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num.toFixed(</span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> num1 </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">4567.89</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(num1 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">精确1位为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num1.toPrecision(</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(num1 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">精确2位为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num1.toPrecision(</span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(num1 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">精确3位为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num1.toPrecision(</span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(num1 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">精确4位为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num1.toPrecision(</span>
				<span style="COLOR: #000000">4</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(num1 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">转换为二进制为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num1.toString(</span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(num1 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">转换为八进制为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num1.toString(</span>
				<span style="COLOR: #000000">8</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(num1 </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">转换为十六进制为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num1.toString(</span>
				<span style="COLOR: #000000">16</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> num2 </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0x0A</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">十六进制数0x0A调用toString()后为：</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> num2.toString());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">--&gt;</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
		<p>             输出结果如下:<br />             34567调用toExponential(3)后为：3.457e+4<br />             34567调用toExponential(4)后为：3.4567e+4<br />             34567调用toExponential(5)后为：3.45670e+4<br />             34567调用toFixed(3)后为：34567.000<br />             4567.89精确1位为：5e+3<br />             4567.89精确2位为：4.6e+3<br />             4567.89精确3位为：4.57e+3<br />             4567.89精确4位为：4568<br />             4567.89转换为二进制为：1000111010111.1110001111010111000010100011110101110001<br />             4567.89转换为八进制为：10727.70753412172704<br />             4567.89转换为十六进制为：11d7.e3d70a3d71<br />             十六进制数0x0A调用toString()后为：10<br /><br /><strong>     Boolean对象</strong><br /> <strong>        1  属性</strong><br />            该对象有constructor和prototype,其中constructor属性表示创建该对象的构造函数,而prototype属性表示其对象原型.<br />       <strong>  2  方法</strong><br />        <strong>     1)  toString():</strong>  该方法返回布尔值的文本形式;<br />       <strong>      2)  valueOf():</strong>  返回对象的基本布尔值.              </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">script language</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">javascript</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;!--</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> booleanObj </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> Boolean(</span>
				<span style="COLOR: #0000ff">true</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(booleanObj.toString() </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(booleanObj.valueOf() </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;br&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    document.write(booleanObj);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">--&gt;</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
		<p>
				<br />　　  输出结果如下:<br />          true<br />          true<br />          true<br />          让我们再来看一段有意思的代码:</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">script language</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">javascript</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;!--</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> booleanObj1 </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> Boolean(</span>
				<span style="COLOR: #0000ff">false</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> booleanObj2 </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> Boolean(booleanObj1);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.write(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">The booleanObj2 value is </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> booleanObj2);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">--&gt;</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
		<br />         结果有点出乎我的意料,输出结果为: The booleanObj2 value is true.<br />         原来<font face="Verdana" size="2">声明一个Boolean对象时，如果我们用一个值为false的Boolean对象对其进行初始化，则新的Boolean对象的值为true.</font><br /><img src ="http://www.blogjava.net/liaojiyong/aggbug/103300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-03-12 13:56 <a href="http://www.blogjava.net/liaojiyong/archive/2007/03/12/103300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正则表达式说明</title><link>http://www.blogjava.net/liaojiyong/archive/2006/12/10/86659.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Sun, 10 Dec 2006 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2006/12/10/86659.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/86659.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2006/12/10/86659.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/86659.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/86659.html</trackback:ping><description><![CDATA[
		<h3>目录</h3>正则表达式介绍<a href="#man_match_mode"><br />匹配模式</a><br /><a href="#man_char_class">字符子集</a><br /><a href="#man_line_terminator">行结束符</a><br /><a href="#man_group">分组和引用</a><br /><a href="#man_unicode">Unicode支持</a><br /><br /><br /><a href="#reference">正则表达式语法参考</a><br /><ol><li><a href="#ref_chars">字符</a></li><li><a href="#ref_logicopr">逻辑操作符</a></li><li><a href="#ref_backref">向后引用</a></li><li><a href="#ref_boundmeta">边界元字符</a></li><li><a href="#ref_repeatindicator">重复指示符</a></li><li><a href="#ref_char_class">字符子集</a></li><li><a href="#ref_predef_meta">预定义子集（元字符）</a></li><li>扩展子集（元字符） 
</li><li><a href="#ref_chinese_meta">扩展中文子集（元字符）</a></li><li><a href="#ref_posix_subset">POSIX字符子集（只适用于ASCII）</a></li><li><a href="#ref_unicode_category">Unicode块和分类</a><br /></li></ol><br />替换表达式<br /><a href="#man_subexp">替换表达式<br /></a><ol><li><a href="#subexp_chars">特殊字符</a></li><li><a href="#subexp_custtbl">自定义替换表</a><br /></li></ol><hr width="100%" size="2" /><h3><a name="man_match_mode"></a>匹配模式</h3>匹配模式指得是正则表达式引擎将以何种模式匹配字符串。<br /><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top">模式名称<br /></td><td valign="top">启用，禁用<br /></td><td valign="top">缺省启用<br /></td><td valign="top">说明<br /></td></tr><tr><td valign="top">UNIX_LINES<br /></td><td valign="top">(?d)启用，(?-d)禁用<br /></td><td valign="top">是<br /></td><td valign="top">启用Unix行模式。<br />在此模式下，只有 <tt>'\n'</tt>被认为是行结束符。它会影响<tt>.</tt>, <tt>^</tt>, 和 <tt>$</tt> 的行为。<br /><br /></td></tr><tr><td valign="top">CASE_INSENSITIVE<br /></td><td valign="top">(?i)启用，(?-i)禁用<br /></td><td valign="top">否<br /></td><td valign="top">启用忽略大小写模式。<br />缺省时，忽略大小写模式只会影响 ASCII字符的匹配。 而Unicode范围的忽略大小写匹配需要通过 UNICODE_CASE 标志与本标志联合使用。<br />启用此模式会影响匹配性能。<br /><br /></td></tr><tr><td valign="top">COMMENTS<br /></td><td valign="top">(?x)启用，(?-x)禁用<br /></td><td valign="top">否<br /></td><td valign="top">允许空格和注释出现在正则表达式中。<br />在此模式下，空格被忽略，以#开始的单行注释被忽略。 <br /></td></tr><tr><td valign="top">MULTILINE<br /></td><td valign="top">(?m)启用，(?-m)禁用<br /></td><td valign="top">是<br /></td><td valign="top">启用多行模式。<br />In multiline mode the expressions <tt>^</tt> and <tt>$</tt> match just after or just before, respectively, a line terminator or the end of the input sequence. By default these expressions only match at the beginning and the end of the entire input sequence. <br /><br /></td></tr><tr><td valign="top">DOTALL<br /></td><td valign="top">(?s)启用，(?-s)禁用<br /></td><td valign="top">否<br /></td><td valign="top">让.可以匹配行结束符。<br />在此模式下，元字符<tt>.</tt>可以匹配行结束符。缺省不允许如此匹配。<br /><br /><br /></td></tr><tr><td valign="top">UNICODE_CASE<br /></td><td valign="top">(?u)启用，(?-u)禁用<br /></td><td valign="top">否<br /></td><td valign="top">Enables Unicode-aware case folding.<br />When this flag is specified then case-insensitive matching, when enabled by the <code>CASE_INSENSITIVE</code> flag, is done in a manner consistent with the Unicode Standard. By default, case-insensitive matching assumes that only characters in the US-ASCII charset are being matched. 启用此模式会影响性能。<br /><br /></td></tr><tr><td valign="top">CANON_EQ<br /></td><td valign="top">(?c)启用，(?-c)禁用<br /></td><td valign="top">否<br /></td><td valign="top">Enables canonical equivalence.<br />When this flag is specified then two characters will be considered to match if, and only if, their full canonical decompositions match. The expression <tt>"a\u030A"</tt>, for example, will match the string <tt>"?"</tt> when this flag is specified. By default, matching does not take canonical equivalence into account. <br />启用此模式会影响性能。<br /><br /></td></tr></tbody></table><br /><br /><h3><a name="man_char_class"></a>字符子集</h3>字符子集可以含有别的字符子集，并且可以通过联合操作符（缺省）和交集操作符（&amp;&amp;）实现组合。联合操作符表示某个子集匹配它的子子集所匹配的任意字符。交集操作符表明某个字符子集只匹配它的子子集都匹配的字符。<br />字符子集所能够有的操作符的优先级如下，从高到低：<br /><ol><li>转义符\x 
</li><li>成组符 [...] 
</li><li>区间符 a-z 
</li><li>联合符 [a-e][i-u] 
</li><li>交集符 [a-z&amp;&amp;[aeiou]]</li></ol>注意：在字符子集[]内部的语法根本不同于正则表达式其它部分中的语法。例如，在字符子集内部，正则表达式 . 失去了它原有的含义，而是成了一个匹配.的元字符。 <br /><br /><h3><a name="man_line_terminator"></a>行结束符</h3>行结束符是一个或两个字符序列，用以表明输入字符序列中一行的结束。下面的字符被认为是行结束符：<br /><ul><li>一个换行符('\n')。 
</li><li>一个回车符加上一个换行符("\r\n")。 
</li><li>一个单独的回车符('\r')。 
</li><li>代表下一行的字符('\u0085')。 
</li><li>行分隔符('\u2028')，Unicode中被定义。 
</li><li>一个分段符('\u2029)，Unicode中被定义。</li></ul>如果 UNIX_LINES 模式被启用，则只有换行符被认为是行结束符。<br />如果 MULTILINE 模式被启用，。<br /><br /><h3><a name="man_group"></a>分组和引用</h3>字符分组以它们的左括号的出现顺序来排序。例如在表达式((A)(B(C)))，有四个分组：<br /><ol><li>((A)(B(C))) 
</li><li>(A) 
</li><li>(B(C)) 
</li><li>(C)</li></ol>第0组永远表示表达式本身。<br />分组采用这样的命名方式，是因为，在一次匹配过程中，正则表达式会被匹配多次。以前的匹配子序列有可能在将来被使用；或者在匹配结束时，程序有可能需要重新获得所有匹配的子字符序列。<br />对于正则表达式中的某个分组而言，永远只保留最后匹配的字符序列。如果对某个分组匹配尝试失败，则会保留上次匹配成功的字符序列。例如，对于正则表达式(a(b)?)+而言，字符序列"aba"，将会让分组2匹配的字符序列为"b"。<br />以(?开始的分组，将不会计入分组数目，也不会被后续匹配所引用。<br /><br /><h3><a name="man_unicode"></a>Unicode支持</h3>本正则表达式匹配引擎的实现遵循了《<a href="http://www.unicode.org/unicode/reports/tr18/">Unicode技术报告：Unicode正则表达式指南</a>》，实现了该指南的第二层所需的功能，但是在细微处有一些简单语法修改。<br />Unicode块(Block)和分类(Category)通过\p和\P通配苻表示。\p{<b><i>prop</i></b>}匹配含有<b><i>prop</i></b>的输入序列，而\P{<b><i>prop</i></b>}匹配不含有<b><i>prop</i></b>的输入序列。Unicode块通过前缀<tt>In</tt>表示，如\p{InMongolian}。Unicode分类通过可选的前缀Is表示，因此\p{L}和\p{IsL}都代表Unicode分类 letters。Unicode块和分类都可以在正则表达式子集外部和内部使用。<br />目前支持的Unicode块和分类是《<a href="http://www.unicode.org/unicode/standard/standard.html">Unicode标准，第三版</a>》中所指定的块和分类。 Unicode块名称在《<a href="http://www.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html">Unicode 字符数据库</a>》的第14章被定义，文件名称叫<a href="http://www.unicode.org/Public/3.0-Update/Blocks-3.txt">Blocks-3.txt</a>，但是名称中的空格被去掉了。例如"Basic Latin"成了"BasicLatin"。无论是标准化的还是非标准化的分类，都在该标准的第88页的第4-5表中被全部定义。<br /><br /><h3><a name="man_compare_perl5"></a>与Perl 5正则表达式语法对比 </h3>[TBD]<br /><br /><hr width="100%" size="2" /><h2><a name="reference"></a>正则表达式参考</h2><br /><hr width="100%" size="2" /><h3><a name="ref_chars"></a>字符</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字符串<br /></td><td valign="top">匹配的字符串<br /></td></tr><tr><td valign="top" width="30%">X<br /></td><td valign="top">字符X，包括 CJK ExtB 区汉字<br /></td></tr><tr><td valign="top" width="30%">\\<br /></td><td valign="top">反斜杠\<br /></td></tr><tr><td valign="top" width="30%">\0<b><i>n</i></b></td><td valign="top">八进制0<b><i>n</i></b>代表的字符(0&lt;=n&lt;=7)<br /></td></tr><tr><td valign="top" width="30%">\0<b><i>nn</i></b><br /></td><td valign="top">八进制0<b><i>nn</i></b>代表的字符(0&lt;=n&lt;=7)<br /></td></tr><tr><td valign="top" width="30%">\0<b><i>mnn</i></b><br /></td><td valign="top">八进制0<b><i>mnn</i></b>代表的字符(0&lt;=m&lt;=3,0&lt;=n&lt;=7)<br /></td></tr><tr><td valign="top" width="30%">\x<b><i>hh</i></b><br /></td><td valign="top">十六进制 0x<b><i>hh</i></b>所代表的字符<br /></td></tr><tr><td valign="top" width="30%">\u<b><i>hhhh</i></b><br /></td><td valign="top">十六进制 0x<b><i>hhhh</i></b>所代表的字符。<font color="#ff0000">注意</font>，目前尚不支持CJK ExtB区汉字。<br /></td></tr><tr><td valign="top" width="30%">\t<br /></td><td valign="top">制表符('\u0009')<br /></td></tr><tr><td valign="top">\n<br /></td><td valign="top">换行('\u000A')<br /></td></tr><tr><td valign="top">\r<br /></td><td valign="top">回车('\u000D')<br /></td></tr><tr><td valign="top">\a<br /></td><td valign="top">响铃符('\u0007')<br /></td></tr><tr><td valign="top">\e<br /></td><td valign="top">取消符Escape('\001B')<br /></td></tr><tr><td valign="top">\c<i><b>x</b></i><br /></td><td valign="top"><i><b>x</b></i>所代表的控制字符<br /></td></tr></tbody></table><br /><h3><a name="ref_logicopr"></a>逻辑操作符</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字符串<br /></td><td valign="top">匹配的字符串<br /></td></tr><tr><td valign="top" width="30%"><i>XY</i><br /></td><td valign="top"><i>X</i>后面跟随<i>Y</i><br /></td></tr><tr><td valign="top" width="30%"><i>X</i>|<i>Y</i><br /></td><td valign="top"><i>X</i>或者<i>Y</i><br /></td></tr><tr><td valign="top" width="30%">(<i>X</i>)<br /></td><td valign="top"><i>X</i>作为分组表达式<br /></td></tr></tbody></table><br /><h3><a name="ref_backref"></a>向后引用</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字符串<br /></td><td valign="top">匹配的字符串<br /></td></tr><tr><td valign="top" width="30%">\<b>n</b><br /></td><td valign="top">第<b>n</b>个匹配的分组<br /></td></tr></tbody></table><br /><h3><a name="ref_boundmeta"></a>边界元字符</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">边界字符<br /></td><td valign="top">匹配的字符串<br /></td></tr><tr><td valign="top" width="30%">^<br /></td><td valign="top">行首<br /></td></tr><tr><td valign="top" width="30%">$<br /></td><td valign="top">行末<br /></td></tr><tr><td valign="top" width="30%">\b </td><td valign="top">字符边界<br /></td></tr><tr><td valign="top" width="30%">\B<br /></td><td valign="top">非字符边界<br /></td></tr><tr><td valign="top" width="30%">\A<br /></td><td valign="top">输入流的开始<br /></td></tr><tr><td valign="top" width="30%">\G<br /></td><td valign="top">上次匹配的结束处<br /></td></tr><tr><td valign="top" width="30%">\Z<br /></td><td valign="top">输入流的结束，或者是最后一个行结束符，参见<a href="file:///D:/source/jtextpro/src/dist/jtextpro/docs/regexp.html#man_line_terminator">行结束符</a>。<br /></td></tr><tr><td valign="top" width="30%">\z<br /></td><td valign="top">输入流的结束<br /></td></tr></tbody></table><br /><h3><a name="ref_repeatindicator"></a>重复指示符</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字符串<br /></td><td valign="top">匹配的字符串<br /></td></tr><tr><td valign="top" width="30%"><b>X</b>?<br /></td><td valign="top"><b>X</b>重复一次，或者不重复<br /></td></tr><tr><td valign="top" width="30%"><b>X</b>*<br /></td><td valign="top"><b>X</b>重复0次或多次<br /></td></tr><tr><td valign="top" width="30%"><b>X</b>+ <br /></td><td valign="top"><b>X</b>重复1次或多次<br /></td></tr><tr><td valign="top" width="30%"><b>X</b>{n}<br /></td><td valign="top"><b>X</b>重复n次，不多也不少。<br /></td></tr><tr><td valign="top" width="30%"><b>X</b>{n,}<br /></td><td valign="top"><b>X</b>至少重复n次<br /></td></tr><tr><td valign="top" width="30%"><b>X</b>{n,m}<br /></td><td valign="top"><b>X</b>至少重复n次，至多重复m次。<br /></td></tr></tbody></table>注：<b>X</b>{n,m}、?、*、+方式可以联合使用。<br /><br /><h3><a name="ref_char_class"></a>字符子集</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字符串子集<br /></td><td valign="top" width="50%">匹配的字符串<br /></td><td valign="top" align="left" width="20%">组合方式<br /></td></tr><tr><td valign="top" width="30%">[abc]<br /></td><td valign="top" width="60%">字符a,b或c，包括 CJK ExtB 区汉字<br /></td><td valign="top" align="left" width="20%">简单子集<br /></td></tr><tr><td valign="top" width="30%">[^abc]<br /></td><td valign="top" width="60%">任意非a,b或c的字符。<br /></td><td valign="top" align="left" width="20%">排除<br /></td></tr><tr><td valign="top" width="30%">[a-zA-Z] </td><td valign="top" width="60%">从a到z，或者A到Z，包含a,z,A,Z。<br /></td><td valign="top" align="left" width="20%">区间<br /></td></tr><tr><td valign="top" width="30%">[a-d[m-p]]<br /></td><td valign="top" width="60%">从a到d，或者m到p，等于[a-dm-p]。<br /></td><td valign="top" align="left" width="20%">联合<br /></td></tr><tr><td valign="top" width="30%">[a-z&amp;&amp;[def]]<br /></td><td valign="top" width="60%">d,e或者f。<br /></td><td valign="top" align="left" width="20%">交集<br /></td></tr><tr><td valign="top">[a-z&amp;&amp;[^bc]]<br /></td><td valign="top" width="60%">从a到z，除了b和c，等于[ad-z]<br /></td><td valign="top" align="left" width="20%">扣除<br /></td></tr><tr><td valign="top">[a-z&amp;&amp;[^m-p]]<br /></td><td valign="top">从a到z，并且不包括从m到p，等于[a-lq-z]<br /></td><td valign="top">扣除<br /></td></tr></tbody></table><br /><h3><a name="ref_predef_meta"></a>预定义子集（元字符）</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">边界字符<br /></td><td valign="top">匹配的字符串<br /></td></tr><tr><td valign="top" width="30%">.<br /></td><td valign="top">任意字符，可能匹配行结束符。<br /></td></tr><tr><td valign="top" width="30%">\d<br /></td><td valign="top">数字[0-9]<br /></td></tr><tr><td valign="top" width="30%">\D </td><td valign="top">非数字[^0-9]<br /></td></tr><tr><td valign="top" width="30%">\s<br /></td><td valign="top">空白符[ \t\n\x0B\f\r]<br /></td></tr><tr><td valign="top" width="30%">\S<br /></td><td valign="top">非空白符[^\s]<br /></td></tr><tr><td valign="top" width="30%">\w<br /></td><td valign="top">单词符，包含有字母和数字[a-zA-Z_0-9]<br /></td></tr><tr><td valign="top" width="30%">\W<br /></td><td valign="top">非单词符，不包含有字母和数字。<br /></td></tr></tbody></table><br /><h3>扩展子集（元字符）</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字符串<br /></td><td valign="top">匹配的字符串<br /></td></tr><tr><td valign="top" width="30%"><br /></td><td valign="top"><br /></td></tr></tbody></table><br /><br /><h3><a name="ref_chinese_meta"></a>扩展中文子集（元字符）</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top">名称<br /></td><td valign="top">块名称（\p{InXXX}）<br /></td><td valign="top">简化通配符<br /></td><td valign="top">标准Unicode块，或者汉字列表<br /></td></tr><tr><td valign="top">任意双字节字符（汉字或全角符号）<br /></td><td valign="top">\p{InQuqnJiao}<br /></td><td valign="top">\E<br /></td><td valign="top">任意由GBK表示的汉字，不包括GB18030扩展部分，<br />以及CJK ExtB区的汉字。<br /></td></tr><tr><td valign="top">任意单字节字符<br /></td><td valign="top">\p{InFQuanJiao}<br /></td><td valign="top">\~E<br /></td><td valign="top">任意单字节字符。<br /></td></tr><tr><td valign="top">任意全角ASCII字符<br /></td><td valign="top">\p{InQJAscii}<br /></td><td valign="top">\H<br /></td><td valign="top">标准HalfwidthandFullwidthForms块<br /></td></tr><tr><td valign="top">任意收录在BIG5码集中的双字节字符<br /></td><td valign="top">\p{InBig5}<br /></td><td valign="top">\I<br /></td><td valign="top">Big5可编码双字节字符<br /></td></tr><tr><td valign="top">匹配未收录在BIG5码集中的双字节字符</td><td valign="top">\p{InFBig5}<br /></td><td valign="top">\~I<br /></td><td valign="top">非Big5可编码双字节字符<br /></td></tr><tr><td valign="top">匹配任意汉字(不包括符号)<br /></td><td valign="top">\p{InHanziOrCJKExtB}<br /></td><td valign="top">\X<br /></td><td valign="top">任意汉字，包括GB18030扩展部分。<br /></td></tr><tr><td valign="top">匹配任意汉字(不包括符号)<br /></td><td valign="top">\p{InHanzi}<br /></td><td valign="top">\M<br /></td><td valign="top">任意汉字，不包括GB18030扩展部分。<br /></td></tr><tr><td valign="top">匹配非汉字的双字节字符<br /></td><td valign="top">\p{InFHanzi}<br /></td><td valign="top">\~M<br /></td><td valign="top">任意非汉字的双字节字符，<br />包括GB18030扩展部分。<br /></td></tr><tr><td valign="top">地支字符<br /></td><td valign="top">\p{InDiZhi}<br /></td><td valign="top">\U<br /></td><td valign="top">子丑寅卯辰巳午未申酉戌亥<br /></td></tr><tr><td valign="top">匹配收录在GB码集中的双字节字符<br /></td><td valign="top">\p{InGB}<br /></td><td valign="top">\g<br /></td><td valign="top">收录在GB码集中的双字节字符，<br />不包括GB18030扩展部分。<br /></td></tr><tr><td valign="top">匹配非收录在GB码集中的双字节字符<br /></td><td valign="top">\p{InFGB}<br /></td><td valign="top">\~g<br /></td><td valign="top">未收录在GB码集中的双字节字符，<br />不包括GB18030扩展部分。<br /></td></tr><tr><td valign="top">匹配收录在GBK码集中的双字节字符<br /></td><td valign="top">\p{InGBK}<br /></td><td valign="top">\h<br /></td><td valign="top">收录在GBK码集中的双字节字符，<br />不包括GB18030扩展部分。<br /></td></tr><tr><td valign="top">匹配非收录在GBK码集中的双字节字符<br /></td><td valign="top">\p{InFGBK}<br /></td><td valign="top">\~h<br /></td><td valign="top">未收录在GBK码集中的双字节字符，<br />不包括GB18030扩展部分。<br /></td></tr><tr><td valign="top">大写希腊字母<br /></td><td valign="top">\p{InDaXila}<br /></td><td valign="top">\K<br /></td><td valign="top">ΑΒΓΔΕΖΗΘΙΚΛΜΝ<br />ΞΟΠΡΣΤΥΦΧΨΩ<br /></td></tr><tr><td valign="top">日文片假名<br /></td><td valign="top">\p{InPianJia}<br /></td><td valign="top">\j<br /></td><td valign="top">标准Katakana块<br /></td></tr><tr><td valign="top">日文平假名<br /></td><td valign="top">\p{InPingJia}<br /></td><td valign="top">\J<br /></td><td valign="top">标准Hiragana块<br /></td></tr><tr><td valign="top">小写希腊字母<br /></td><td valign="top">\p{InXiaoXila}<br /></td><td valign="top">\k<br /></td><td valign="top">αβγδεζηθικλμν<br />ξοπρστυφχψω<br /></td></tr><tr><td valign="top">数学符号<br /></td><td valign="top">\p{InMathe}<br /></td><td valign="top">\m<br /></td><td valign="top">±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙<br />∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴<br /></td></tr><tr><td valign="top">中文数字<br /></td><td valign="top">\p{InCnDigit}<br /></td><td valign="top">\i<br /></td><td valign="top">〇一二三四五六七八九十百千万亿兆吉京<br /></td></tr><tr><td valign="top">大写中文数字<br /></td><td valign="top">\p{InDaCnDigit}<br /></td><td valign="top">\N<br /></td><td valign="top">零壹贰叁肆伍陆柒捌玖拾佰仟萬亿兆吉京<br /></td></tr><tr><td valign="top">全角标点符号<br /></td><td valign="top">\p{InQJBiaoDian}<br /></td><td valign="top">\o<br /></td><td valign="top">、。·ˉˇ¨〃々—～‖…‘’“”〔〕<br />〈〉《》「」『』〖〗【】！＂＇（），<br />－．：；＜＝＞？［］｛｜｝｀﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚<br />﹛﹜﹝﹞︵︶︹︺︿﹀︽︾﹁﹂﹃﹄<br />︻︼︷︸︱︳︴<br /></td></tr><tr><td valign="top">小写俄文字母<br /></td><td valign="top">\p{InXiaoEWen}<br /></td><td valign="top">\l<br /></td><td valign="top">абвгдеёжзийклмн<br />опрстуфхцчшщъыьэюя<br /></td></tr><tr><td valign="top">大写俄文字母<br /></td><td valign="top">\p{InDaEWen}<br /></td><td valign="top">\R<br /></td><td valign="top">АБВГДЕЁЖЗИЙКЛМНО<br />ПРСТУФХЦЧШЩЪЫЬЭЮЯ<br /></td></tr><tr><td valign="top">中文序号<br /></td><td valign="top">\p{InCnSN}<br /></td><td valign="top">\q<br /></td><td valign="top">ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ<br />ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ<br />再加上Unicode标准EnclosedAlphanumerics块<br /></td></tr><tr><td valign="top">天干字符<br /></td><td valign="top">\p{InTianGan}<br /></td><td valign="top">\T<br /></td><td valign="top">甲乙丙丁戊己庚辛壬癸<br /></td></tr><tr><td valign="top">竖排标点符号<br /></td><td valign="top">\p{InSPBiaoDian}<br /></td><td valign="top">\V<br /></td><td valign="top">︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴<br /></td></tr><tr><td valign="top">拼音字符<br /></td><td valign="top">\p{InPinyin}<br /></td><td valign="top">\y<br /></td><td valign="top">āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡ<br />GBK -&gt; 0xA8A1- 0xA8C0<br />只是Unicode标准LatinExtended-A块的一部分。<br /></td></tr><tr><td valign="top">注音字符<br /></td><td valign="top">\p{InZhuyin}<br /></td><td valign="top">\Y<br /></td><td valign="top">标准Bopomofo块<br /></td></tr><tr><td valign="top">制表字符<br /></td><td valign="top">\p{InZhiBiao}<br /></td><td valign="top">\C<br /></td><td valign="top">标准BoxDrawing块。<br />经检查发现 textpro 的算法含有部分非标<br />准Unicode制表符：“∟∣≒≦≧⊿═”。<br /></td></tr></tbody></table><br /><h3><a name="ref_posix_subset"></a>POSIX字符子集（只适用于ASCII）</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字符串<br /></td><td valign="top">匹配的字符串<br /></td></tr><tr><td valign="top" width="30%">\p{Lower}<br /></td><td valign="top">小写字母[a-z]<br /></td></tr><tr><td valign="top" width="30%">\p{Upper}<br /></td><td valign="top">大写字母[A-Z]<br /></td></tr><tr><td valign="top" width="30%">\p{ASCII}<br /></td><td valign="top">所有的ASCII字符[\x00-\x7F]<br /></td></tr><tr><td valign="top" width="30%">\p{Alpha}<br /></td><td valign="top">大小写字母[\p{Lower}\p{Upper}]<br /></td></tr><tr><td valign="top" width="30%">\p{Digit}<br /></td><td valign="top">数字[0-9]<br /></td></tr><tr><td valign="top" width="30%">\p{Alnum}<br /></td><td valign="top">字母数字符，包含大小写字母和数字[\p{Alpha}\p{Digit}]<br /></td></tr><tr><td valign="top" width="30%">\p{Punct}<br /></td><td valign="top">标点符号，!"#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^_`{|}~之一。<br /></td></tr><tr><td valign="top" width="30%">\p{Graph}<br /></td><td valign="top">可显示字符[\p{Alnum}\p{Punct}]<br /></td></tr><tr><td valign="top">\p{Print}<br /></td><td valign="top">可打印字符[\p{Graph}]<br /></td></tr><tr><td valign="top">\p{Blank}<br /></td><td valign="top">空格或者制表符[ \t]<br /></td></tr><tr><td valign="top">\p{Cntrl}<br /></td><td valign="top">控制字符[\x00-\x1F\x7F<br /></td></tr><tr><td valign="top">\p{XDigit}<br /></td><td valign="top">十六进制数字[0-9a-fA-F]<br /></td></tr><tr><td valign="top">\p{Space}<br /></td><td valign="top">空白符[ \t\n\x0B\f\r]<br /></td></tr></tbody></table><br /><h3><a name="ref_unicode_category"></a>Unicode块和分类</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top">块<br /></td><td valign="top">中文名称（摘自Word XP）<br /></td><td valign="top">代码区域<br /></td></tr><tr><td valign="top">BasicLatin<br /></td><td valign="top">基本拉丁语<br /></td><td valign="top">\u0000-\u007F<br /></td></tr><tr><td valign="top">Latin-1Supplement<br /></td><td valign="top">拉丁语-1<br /></td><td valign="top">\u0080-\u00FF<br /></td></tr><tr><td valign="top">LatinExtended-A<br /></td><td valign="top">拉丁语扩充-A<br /></td><td valign="top">\u0100-\u017F<br /></td></tr><tr><td valign="top">LatinExtended-Bound<br /></td><td valign="top">拉丁语扩充-B<br /></td><td valign="top">\u0180-\u024F<br /></td></tr><tr><td valign="top">IPAExtensions<br /></td><td valign="top">国际音标扩充<br /></td><td valign="top">\u0250-\u02AF<br /></td></tr><tr><td valign="top">SpacingModifierLetters<br /></td><td valign="top">进格的修饰字符<br /></td><td valign="top">\u02B0-\u02FF<br /></td></tr><tr><td valign="top">CombiningDiacriticalMarks<br /></td><td valign="top">组合用发音符<br /></td><td valign="top">\u0300-\u036F<br /></td></tr><tr><td valign="top">Greek<br /></td><td valign="top">基本希腊语<br /></td><td valign="top">\u0370-\u03FF<br /></td></tr><tr><td valign="top">Cyrillic<br /></td><td valign="top">西里尔语<br /></td><td valign="top">\u0400-\u04FF<br /></td></tr><tr><td valign="top">Armenian<br /></td><td valign="top"><br /></td><td valign="top">\u0530-\u058F<br /></td></tr><tr><td valign="top">Hebrew<br /></td><td valign="top"><br /></td><td valign="top">\u0590-\u05FF<br /></td></tr><tr><td valign="top">Arabic<br /></td><td valign="top"><br /></td><td valign="top">\u0600-\u06FF<br /></td></tr><tr><td valign="top">Syriac<br /></td><td valign="top"><br /></td><td valign="top">\u0700-\u074F<br /></td></tr><tr><td valign="top">Thaana<br /></td><td valign="top"><br /></td><td valign="top">\u0780-\u07BF<br /></td></tr><tr><td valign="top">Devanagari<br /></td><td valign="top"><br /></td><td valign="top">\u0900-\u097F<br /></td></tr><tr><td valign="top">Bengali<br /></td><td valign="top"><br /></td><td valign="top">\u0980-\u09FF<br /></td></tr><tr><td valign="top">Gurmukhi<br /></td><td valign="top"><br /></td><td valign="top">\u0A00-\u0A7F<br /></td></tr><tr><td valign="top">Gujarati<br /></td><td valign="top"><br /></td><td valign="top">\u0A80-\u0AFF<br /></td></tr><tr><td valign="top">Oriya<br /></td><td valign="top"><br /></td><td valign="top">\u0B00-\u0B7F<br /></td></tr><tr><td valign="top">Tamil<br /></td><td valign="top"><br /></td><td valign="top">\u0B80-\u0BFF<br /></td></tr><tr><td valign="top">Telugu<br /></td><td valign="top"><br /></td><td valign="top">\u0C00-\u0C7F<br /></td></tr><tr><td valign="top">Kannada<br /></td><td valign="top"><br /></td><td valign="top">\u0C80-\u0CFF<br /></td></tr><tr><td valign="top">Malayalam<br /></td><td valign="top"><br /></td><td valign="top">\u0D00-\u0D7F<br /></td></tr><tr><td valign="top">Sinhala<br /></td><td valign="top"><br /></td><td valign="top">\u0D800-\uDFF<br /></td></tr><tr><td valign="top">Thai<br /></td><td valign="top"><br /></td><td valign="top">\u0E00-\u0E7F<br /></td></tr><tr><td valign="top">Lao<br /></td><td valign="top"><br /></td><td valign="top">\u0E80-\u0EFF<br /></td></tr><tr><td valign="top">Tibetan<br /></td><td valign="top">藏语<br /></td><td valign="top">\u0F00-\u0FFF<br /></td></tr><tr><td valign="top">Myanmar<br /></td><td valign="top"><br /></td><td valign="top">\u1000-\u109F<br /></td></tr><tr><td valign="top">Georgian<br /></td><td valign="top"><br /></td><td valign="top">\u10A0-\u10FF<br /></td></tr><tr><td valign="top">HangulJamo<br /></td><td valign="top"><br /></td><td valign="top">\u1100-\u11FF<br /></td></tr><tr><td valign="top">Ethiopic<br /></td><td valign="top"><br /></td><td valign="top">\u1200-\u137F<br /></td></tr><tr><td valign="top">Cherokee<br /></td><td valign="top"><br /></td><td valign="top">\u13A0-\u13FF<br /></td></tr><tr><td valign="top">UnifiedCanadianAboriginalSyllabics<br /></td><td valign="top"><br /></td><td valign="top">\u1400-\u167F<br /></td></tr><tr><td valign="top">Ogham<br /></td><td valign="top"><br /></td><td valign="top">\u1680-\u169F<br /></td></tr><tr><td valign="top">Runic<br /></td><td valign="top"><br /></td><td valign="top">\u16A0-\u16FF<br /></td></tr><tr><td valign="top">Khmer<br /></td><td valign="top"><br /></td><td valign="top">\u1780-\u17FF<br /></td></tr><tr><td valign="top">Mongolian<br /></td><td valign="top">蒙古语<br /></td><td valign="top">\u1800-\u18AF<br /></td></tr><tr><td valign="top">LatinExtendedAdditional<br /></td><td valign="top"><br /></td><td valign="top">\u1E00-\u1EFF<br /></td></tr><tr><td valign="top">GreekExtended<br /></td><td valign="top"><br /></td><td valign="top">\u1F00-\u1FFF<br /></td></tr><tr><td valign="top">GeneralPunctuation<br /></td><td valign="top">广义标点<br /></td><td valign="top">\u2000-\u206F<br /></td></tr><tr><td valign="top">SuperscriptsandSubscripts<br /></td><td valign="top"><br /></td><td valign="top">\u2070-\u209F<br /></td></tr><tr><td valign="top">CurrencySymbols<br /></td><td valign="top">货币符号<br /></td><td valign="top">\u20A0-\u20CF<br /></td></tr><tr><td valign="top">CombiningMarksforSymbols<br /></td><td valign="top"><br /></td><td valign="top">\u20D0-\u20FF<br /></td></tr><tr><td valign="top">LetterlikeSymbols<br /></td><td valign="top">类似字母的符号<br /></td><td valign="top">\u2100-\u214F<br /></td></tr><tr><td valign="top">NumberForms<br /></td><td valign="top">数字形式<br /></td><td valign="top">\u2150-\u218F<br /></td></tr><tr><td valign="top">Arrows<br /></td><td valign="top">箭头<br /></td><td valign="top">\u2190-\u21FF<br /></td></tr><tr><td valign="top">MathematicalOperators<br /></td><td valign="top">数学运算符<br /></td><td valign="top">\u2200-\u22FF<br /></td></tr><tr><td valign="top">MiscellaneousTechnical<br /></td><td valign="top">零杂技术用符号<br /></td><td valign="top">\u2300-\u23FF<br /></td></tr><tr><td valign="top">ControlPictures<br /></td><td valign="top"><br /></td><td valign="top">\u2400-\u243F<br /></td></tr><tr><td valign="top">OpticalCharacterRecognition<br /></td><td valign="top"><br /></td><td valign="top">\u2440-\u245F<br /></td></tr><tr><td valign="top">EnclosedAlphanumerics<br /></td><td valign="top">带括号的字母数字<br /></td><td valign="top">\u2460-\u24FF<br /></td></tr><tr><td valign="top">BoxDrawing<br /></td><td valign="top">制表符<br /></td><td valign="top">\u2500-\u257F<br /></td></tr><tr><td valign="top">BlockElements<br /></td><td valign="top">方块图形<br /></td><td valign="top">\u2580-\u259F<br /></td></tr><tr><td valign="top">GeometricShapes<br /></td><td valign="top">几何图形<br /></td><td valign="top">\u25A0-\u25FF<br /></td></tr><tr><td valign="top">MiscellaneousSymbols<br /></td><td valign="top">零杂丁贝符（示意符等）<br /></td><td valign="top">\u2600-\u26FF<br /></td></tr><tr><td valign="top">Dingbats<br /></td><td valign="top"><br /></td><td valign="top">\u2700-\u27BF<br /></td></tr><tr><td valign="top">BraillePatterns<br /></td><td valign="top"><br /></td><td valign="top">\u2800-\u28FF<br /></td></tr><tr><td valign="top">CJKRadicalsSupplement<br /></td><td valign="top"><br /></td><td valign="top">\u2E80-\u2EFF<br /></td></tr><tr><td valign="top">KangxiRadicals<br /></td><td valign="top"><br /></td><td valign="top">\u2F00-\u2FDF<br /></td></tr><tr><td valign="top">IdeographicDescriptionCharacters<br /></td><td valign="top"><br /></td><td valign="top">\u2FF0-\u2FFF<br /></td></tr><tr><td valign="top">CJKSymbolsandPunctuation<br /></td><td valign="top">CJK符号和标点<br /></td><td valign="top">\u3000-\u303F<br /></td></tr><tr><td valign="top">Hiragana<br /></td><td valign="top">平假名<br /></td><td valign="top">\u3040-\u309F<br /></td></tr><tr><td valign="top">Katakana<br /></td><td valign="top">片假名<br /></td><td valign="top">\u30A0-\u30FF<br /></td></tr><tr><td valign="top">Bopomofo<br /></td><td valign="top">注音<br /></td><td valign="top">\u3100-\u312F<br /></td></tr><tr><td valign="top">HangulCompatibilityJamo<br /></td><td valign="top"><br /></td><td valign="top">\u3130-\u318F<br /></td></tr><tr><td valign="top">Kanbun<br /></td><td valign="top"><br /></td><td valign="top">\u3190-\u319F<br /></td></tr><tr><td valign="top">BopomofoExtended<br /></td><td valign="top">扩展注音<br /></td><td valign="top">\u31A0-\u31BF<br /></td></tr><tr><td valign="top">EnclosedCJKLettersandMonths<br /></td><td valign="top">带括号的CJK字母及月份<br /></td><td valign="top">\u3200-\u32FF<br /></td></tr><tr><td valign="top">CJKCompatibility<br /></td><td valign="top">CJK兼容字符<br /></td><td valign="top">\u3300-\u33FF <br /></td></tr><tr><td valign="top">CJKUnifiedIdeographsExtensionA<br /></td><td valign="top">CJK统一汉字扩展-A<br /></td><td valign="top">\u3400-\u4dBF<br /></td></tr><tr><td valign="top">CJKUnifiedIdeographs<br /></td><td valign="top">CJK统一汉字<br /></td><td valign="top">\u4E00-\u9fAF<br /></td></tr><tr><td valign="top">YiSyllables<br /></td><td valign="top"><br /></td><td valign="top">\uA000-\uA48F<br /></td></tr><tr><td valign="top">YiRadicals<br /></td><td valign="top"><br /></td><td valign="top">\uA490-\uA4CF<br /></td></tr><tr><td valign="top">HangulSyllables<br /></td><td valign="top"><br /></td><td valign="top">\uAC00-\uD7A3<br /></td></tr><tr><td valign="top">HighSurrogates<br /></td><td valign="top"><br /></td><td valign="top">\uD800-\uDB7F<br /></td></tr><tr><td valign="top">HighPrivateUseSurrogates<br /></td><td valign="top"><br /></td><td valign="top">\uDB80-\uDBFF<br /></td></tr><tr><td valign="top">LowSurrogates<br /></td><td valign="top"><br /></td><td valign="top">\uDC00-\uDFFF<br /></td></tr><tr><td valign="top">PrivateUse<br /></td><td valign="top">专用区<br /></td><td valign="top">\uE000-\uF8FF<br /></td></tr><tr><td valign="top">CJKCompatibilityIdeographs<br /></td><td valign="top">CJK兼容汉字<br /></td><td valign="top">\uF900-\uFAFF<br /></td></tr><tr><td valign="top">AlphabeticPresentationForms<br /></td><td valign="top"><br /></td><td valign="top">\uFB00-\uFB4F<br /></td></tr><tr><td valign="top">ArabicPresentationForms-A<br /></td><td valign="top"><br /></td><td valign="top">\uFB50-\uFDFF<br /></td></tr><tr><td valign="top">CombiningHalfMarks<br /></td><td valign="top"><br /></td><td valign="top">\uFE20-\uFE2F<br /></td></tr><tr><td valign="top">CJKCompatibilityForms<br /></td><td valign="top">CJK兼容形式<br /></td><td valign="top">\uFE30-\uFE4F<br /></td></tr><tr><td valign="top">SmallFormVariants<br /></td><td valign="top">小写变体<br /></td><td valign="top">\uFE50-\uFE6F<br /></td></tr><tr><td valign="top">ArabicPresentationForms-Bound<br /></td><td valign="top"><br /></td><td valign="top">\uFE70-\ufeFF<br /></td></tr><tr><td valign="top">Specials<br /></td><td valign="top"><br /></td><td valign="top">\uFFF0-\uFFFF<br /></td></tr><tr><td valign="top">HalfwidthandFullwidthForms<br /></td><td valign="top">半形及全形字符<br /></td><td valign="top">\uFF00-\uFFEF<br /></td></tr></tbody></table><br /><br /><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top">分类<br /></td><td valign="top">全称<br /></td><td valign="top">说明<br /></td></tr><tr><td valign="top">Cn<br /></td><td valign="top"><br /></td><td valign="top">UNASSIGNED<br /></td></tr><tr><td valign="top">Lu<br /></td><td valign="top"><br /></td><td valign="top">UPPERCASE_LETTER<br /></td></tr><tr><td valign="top">Ll<br /></td><td valign="top"><br /></td><td valign="top">LOWERCASE_LETTER<br /></td></tr><tr><td valign="top">Lt<br /></td><td valign="top"><br /></td><td valign="top">TITLECASE_LETTER<br /></td></tr><tr><td valign="top">Lm<br /></td><td valign="top"><br /></td><td valign="top">MODIFIER_LETTER<br /></td></tr><tr><td valign="top">Lo<br /></td><td valign="top"><br /></td><td valign="top">OTHER_LETTER<br /></td></tr><tr><td valign="top">Mn<br /></td><td valign="top"><br /></td><td valign="top">NON_SPACING_MARK<br /></td></tr><tr><td valign="top">Me<br /></td><td valign="top"><br /></td><td valign="top">ENCLOSING_MARK<br /></td></tr><tr><td valign="top">Mc<br /></td><td valign="top"><br /></td><td valign="top">COMBINING_SPACING_MARK<br /></td></tr><tr><td valign="top">Nd<br /></td><td valign="top"><br /></td><td valign="top">DECIMAL_DIGIT_NUMBER<br /></td></tr><tr><td valign="top">Nl<br /></td><td valign="top"><br /></td><td valign="top">LETTER_NUMBER<br /></td></tr><tr><td valign="top">No<br /></td><td valign="top"><br /></td><td valign="top">OTHER_NUMBER<br /></td></tr><tr><td valign="top">Zs<br /></td><td valign="top"><br /></td><td valign="top">SPACE_SEPARATOR<br /></td></tr><tr><td valign="top">Zl<br /></td><td valign="top"><br /></td><td valign="top">LINE_SEPARATOR<br /></td></tr><tr><td valign="top">Zp<br /></td><td valign="top"><br /></td><td valign="top">PARAGRAPH_SEPARATOR<br /></td></tr><tr><td valign="top">Cc<br /></td><td valign="top"><br /></td><td valign="top">CNTRL<br /></td></tr><tr><td valign="top">Cf<br /></td><td valign="top"><br /></td><td valign="top">FORMAT<br /></td></tr><tr><td valign="top">Co<br /></td><td valign="top"><br /></td><td valign="top">PRIVATE_USE<br /></td></tr><tr><td valign="top">Cs<br /></td><td valign="top"><br /></td><td valign="top">SURROGATE<br /></td></tr><tr><td valign="top">Pd<br /></td><td valign="top"><br /></td><td valign="top">DASH_PUNCTUATION<br /></td></tr><tr><td valign="top">Ps<br /></td><td valign="top"><br /></td><td valign="top">START_PUNCTUATION<br /></td></tr><tr><td valign="top">Pe<br /></td><td valign="top"><br /></td><td valign="top">END_PUNCTUATION<br /></td></tr><tr><td valign="top">Pc<br /></td><td valign="top"><br /></td><td valign="top">CONNECTOR_PUNCTUATION<br /></td></tr><tr><td valign="top">Po<br /></td><td valign="top"><br /></td><td valign="top">OTHER_PUNCTUATION<br /></td></tr><tr><td valign="top">Sm<br /></td><td valign="top"><br /></td><td valign="top">MATH_SYMBOL<br /></td></tr><tr><td valign="top">Sc<br /></td><td valign="top"><br /></td><td valign="top">CURRENCY_SYMBOL<br /></td></tr><tr><td valign="top">Sk<br /></td><td valign="top"><br /></td><td valign="top">MODIFIER_SYMBOL<br /></td></tr><tr><td valign="top">So<br /></td><td valign="top"><br /></td><td valign="top">OTHER_SYMBOL<br /></td></tr><tr><td valign="top">L<br /></td><td valign="top"><br /></td><td valign="top">LETTER<br /></td></tr><tr><td valign="top">M<br /></td><td valign="top"><br /></td><td valign="top">MARK<br /></td></tr><tr><td valign="top">N<br /></td><td valign="top"><br /></td><td valign="top">NUMBER<br /></td></tr><tr><td valign="top">Z<br /></td><td valign="top"><br /></td><td valign="top">SEPARATOR<br /></td></tr><tr><td valign="top">C<br /></td><td valign="top"><br /></td><td valign="top">CONTROL<br /></td></tr><tr><td valign="top">P<br /></td><td valign="top"><br /></td><td valign="top">PUNCTUATION<br /></td></tr><tr><td valign="top">S<br /></td><td valign="top"><br /></td><td valign="top">SYMBOL</td></tr><tr><td valign="top">LD<br /></td><td valign="top"><br /></td><td valign="top">LETTER_OR_DIGIT<br /></td></tr><tr><td valign="top">L1<br /></td><td valign="top"><br /></td><td valign="top">Latin-1<br /></td></tr><tr><td valign="top">all<br /></td><td valign="top"><br /></td><td valign="top">ALL<br /></td></tr><tr><td valign="top">ASCII<br /></td><td valign="top"><br /></td><td valign="top">ASCII<br /></td></tr><tr><td valign="top">Alnum<br /></td><td valign="top"><br /></td><td valign="top">字母数字(0-9,a-z,A-Z)<br /></td></tr><tr><td valign="top">Alpha<br /></td><td valign="top"><br /></td><td valign="top">字母(a-z,A-Z)<br /></td></tr><tr><td valign="top">Blank<br /></td><td valign="top"><br /></td><td valign="top">空格和制表符(' '|\t)<br /></td></tr><tr><td valign="top">Cntrl<br /></td><td valign="top"><br /></td><td valign="top">控制字符，不可打印<br /></td></tr><tr><td valign="top">Digit<br /></td><td valign="top"><br /></td><td valign="top">数字(0-9)<br /></td></tr><tr><td valign="top">Graph<br /></td><td valign="top"><br /></td><td valign="top">可打印且可视字母（例如空格' '是可打印的但不是可视字母，而 `a' 两者都是。）<br /></td></tr><tr><td valign="top">Lower<br /></td><td valign="top"><br /></td><td valign="top">小写字母<br /></td></tr><tr><td valign="top">Print<br /></td><td valign="top"><br /></td><td valign="top">可打印字母（非控制字符）<br /></td></tr><tr><td valign="top">Punct<br /></td><td valign="top"><br /></td><td valign="top">标符号（字母、数字、控制、空白符以外的字母），如：!@#$%}{&lt;&gt;,./?[]等等。<br /></td></tr><tr><td valign="top">Space<br /></td><td valign="top"><br /></td><td valign="top">空白符(' ',\t,0x09,0x0A,0x0B,0x0C,0x0D,0x20)<br /></td></tr><tr><td valign="top">Upper<br /></td><td valign="top"><br /></td><td valign="top">大写字母<br /></td></tr><tr><td valign="top">XDigit<br /></td><td valign="top"><br /></td><td valign="top">十六进制数字(0-9，a-f, A-F)<br /></td></tr></tbody></table><br /><hr width="100%" size="2" /><br /><br /><br /><h3><a name="man_subexp"></a>替换表达式</h3><a name="subexp_chars"></a>特殊字符<br /><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">特殊字符介绍<br /></td><td valign="top">描述<br /></td></tr><tr><td valign="top" width="30%">\n<br /></td><td valign="top">换行<br /></td></tr><tr><td valign="top" width="30%">\b<br /></td><td valign="top">向前删除一个字符。当这个字符位于替换串之首时，将删除匹配串之前的一个字符。若匹配串位于行首，将使匹配串所在行与前一行相合并。<br /></td></tr><tr><td valign="top" width="30%">\d<br /></td><td valign="top">向后删除一个字符。当这个字符位于替换串之末时，将删除匹配串之后的一个字符。若匹配串位于行末，将使匹配串所在行与下一行相合并。<br /></td></tr><tr><td valign="top" width="30%">\e<br /></td><td valign="top">插入一个ESC字符<br /></td></tr><tr><td valign="top">\t<br /></td><td valign="top">插入一个TAB字符<br /></td></tr><tr><td valign="top">\<i><b>n</b></i><br /></td><td valign="top">n代表查找正则表达式中的子表达式（组）。\1代表第一个子表达式，\2代表第二个子表达式，依次类推。\0代表整个匹配到的字符串。<br /></td></tr><tr><td valign="top">\v<br /></td><td valign="top">大写下一个字母<br /></td></tr><tr><td valign="top">\U<br /></td><td valign="top">全部大写以后的字母，直到碰到其它指示符为止。<br /></td></tr><tr><td valign="top">\l<br /></td><td valign="top">小写下一个字母<br /></td></tr><tr><td valign="top">\L<br /></td><td valign="top">全部小写以后的字母，直到碰到其它指示符为止。<br /></td></tr><tr><td valign="top">\E<br /></td><td valign="top">取消所有的字母大小写指示符。<br /></td></tr></tbody></table><br /><br /><a name="subexp_custtbl"></a>自定义替换表<br /><br />在查找／替换中使用自定义替换表 <br />有的时候，上述简单的自定义替换功能是不够的。例如，用户可能希望只把出现在括号内的源串替换为目标串。这种文本处理可以通过在查找/替换中使用自定义替换表来解决。 <br /><br />在查找/替换功能中使用自定义替换表的替换函数是\Tn，其中n是0-9的数字， 注意n为0表示第10张替换表。如果略去n，其效果相当于\T1，即使用第一张替换表。例如要把所有放在方括号中的汉字替换为拼音，可以查找“\[(\E)\]”，替换为“\T{\1}”。即把第一个子表达式的匹配内容按自定义替换表转换。注意，如果\T函数的参数不在替换表的源串中，\T函数的结果与源串相同，即不做任何变换。 <br /><br />有些情况下，用户可能希望只使用替换表的一部分内容。还是以拼音为例，前面给出的替换表中包含了拼音的音调，如果在替换时不希望加上这些音调数字，可以使用“过滤”功能。所谓过滤，其实是用一个正则表达式去分析替换表的目标串，并把其中的某个子表达式取出来。 <br /><br />使用“过滤”时，在“设置自定义替换表”对话框中，点“过滤”按钮，在弹出的对话框中填入一个正则表达式。再以拼音为例，表达式可以写为“(\p{Alpha}+)(\d)”，其中第一对括号中的是不含音调的拼音，第二对括号是音调。在调用\T函数时，JTextPro会在目标串中查找这个正则表达式。但是如何把其中的子表达式取出来呢？\T函数还有一个可选的下标，取第n个子表达式的值就写作\T{...}[n]。所以，把放在方括号中的汉字替换为不带调的拼音，可以查找“\[(\E)\]”，替换为“\T{\1}[1]” <br /><br /><div class="post"><div class="postbody"> </div></div><img src ="http://www.blogjava.net/liaojiyong/aggbug/86659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2006-12-10 11:58 <a href="http://www.blogjava.net/liaojiyong/archive/2006/12/10/86659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中文版(入门)</title><link>http://www.blogjava.net/liaojiyong/archive/2006/09/14/69526.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 14 Sep 2006 00:45:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2006/09/14/69526.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/69526.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2006/09/14/69526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/69526.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/69526.html</trackback:ping><description><![CDATA[
		<p>第一章<br />JavaScript 是什麽？ <br />JavaScript 是一种新的描述语言，此一语言可以被箝入 HTML 的文件之中。透过 JavaScript 可以做到回应使用者的需求事件(如：form的输入)而不用任何的网路来回传输资料，所以当一位使用者输入一项资料时，它不用经过传给伺服端(server)处理，再传回来的过程，而直接可以被客户端(client)的应用程式所处理。你也可以想像成有一个可执行程式在你的客端上执行一样！目前已有一些写好的程式在Internet上你可以连过去看看，以下有一些计算器的例子，在Nescape上。JavaScript和Java很类似，但到底并不一样！Java是一种比JavaScript更复杂许多的程式语言，而JavaScript则是相当容易了解的语言。JavaScript创作者可以不那麽注重程式技巧，所以许多Java的特性在JavaScript中并不支援。如需相关的更多资讯，可以去读读Netscape的有关NetscapeJavaScript之介绍。</p>
		<p>如何执行JaveScript？<br />JavaScript如何执行呢？<br />Netscape2.0beta3版以上，就可以执行JavaScript的功能了，我们测试过至少beta3版以上可以，其他种类的WWW浏览器如:InternetExpore3.0也有此一功能。</p>
		<p>范例1：</p>
		<p>以下我们就以一些例子来告诉你如何将JavaScript写在HTML文件中，并且体会一下新语言的特性，我们从第一个例子开始：如何用JavaScript印出一串文字至HTML文件中：</p>
		<p>&lt;html&gt;<br />&lt;head&gt;<br />MyfirstJavaScript!<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;br&gt;<br />ThisisanormalHTMLdocument.<br />&lt;br&gt;<br />&lt;scriptlanguage="LiveScript"&gt;<br />document.write("这是以JavaScript印出的!")<br />&lt;/script&gt;<br />&lt;br&gt;<br />BackinHTMLagain.<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>如果你使用的WWW浏览器是Netscape2.0beta3以上版本的话，那你就可以看到相关的结果，而如果你的浏览器并非是可以支援JavaScript的话，那看起来就会有一些怪怪的了，以上范例的结果如下：</p>
		<p>ThisisanormalHTMLdocument.<br />这是以JavaScript印出的!<br />BackinHTMLagain.</p>
		<p>此一范例并没有太大的用处，它只是要告诉你如何使用&lt;script&gt;的标签，并如何将它置於HTML的文件之中而已，这个新的标签你可以特它放在文件中的任何地方。</p>
		<p>范例2：</p>
		<p>接下来下一个例子所要介绍的是有关函数(function)的使用。请放心，函数并非很难懂的东西，但它却相当有用。函数通常是在HTML文件中&lt;body＞的部份被呼叫，而理所当然地，它最好事先被宣告并放在HTML文件中&lt;body＞的部份。好让在&lt;body＞部分中使用到函数时，它已确定被读取住来。另外，&lt;script＞标签的有关描述语法剖份，你可以用注解的符号将它括起来，以免旧版或无法读取JavaScript的浏览器读到，而误会了意思！</p>
		<p>&lt;html&gt;<br />&lt;head&gt;<br />&lt;scriptlanguage="LiveScript"&gt;<br />functionpushbutton(){<br />alert("嗨!你好");<br />}<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form&gt;<br />&lt;inputtype="button"name="Button1"value="Pushme"onclick="pushbutton()"&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>
				<br />如果你是使用Netscape2.0beta3以上的浏览器，那以上JavaScript语法部份的结果如下，你可以试着按按钮看看有何结果产生！在范例2中，将会产生一个按钮，当你用滑鼠去按它的时候，应该会出现一个视窗上面有“嗨!你好”的字串，如何？不错吧！这个结果是如何产生的呢？首先，在&lt;head＞内的函数会被载入并存於内存中，接着一个新的&lt;form＞标签&lt;inputtype="button".....＞将产生一个接钮。然後，你可以在後面看到'onClick'的指令，这就是告诉浏览器，当该按钮被按时，应会执行onClick後的函数'pushbutton()'，而这个函数在刚刚程式被载入时就已安放在记忆体中了！请注意，在这个函数中我们用到了个新东西－alert的method，是JavaScript事先定义好的，它会以对话视窗产生内涵的讯息，并有一"确定"(OK)的按钮。JavaScript定义了许多的method，你可以连至Netscape公司去获取较完整的讯息。我想这些method在不久的将来会有长长的一串可以够你学的，不过目前的method也已经可以做出相当多东西了！接着下个例子将告诉你如何由一个输入型表格中读入使用者的输入资料，事实上，这也是加入个函数就可以达成的。</p>
		<p>范例3：</p>
		<p>&lt;html&gt;<br />&lt;head&gt;<br />&lt;scriptlanguage="LiveScript"&gt;<br />&lt;!--hidescriptfromoldbrowsers<br />functiongetname(str){<br />alert("哈罗!"+str+"!");<br />}<br />//endhidingcontents--&gt;<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />Pleaseenteryourname:<br />&lt;form&gt;<br />&lt;inputtype="text"name="name"onBlur="getname(this.value)"value=""&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>现在你可以试试结果如何：<br />请输入你的名字：<br />在这个例子中又有新的东西了。首先，让我们注意一下，在语法中的注解部分(&lt;!-...-＞)此部分即我们之前所提到的它可以避免旧版本或是不支援JavaScript的WWW浏览器因为不认识这些函数而产生错误。它的顺序应该为&lt;script＞先，接着为注解的开头&lt;!-，然後是内容，注解尾-＞，最後是&lt;/script＞。另外要注意的一点是，语解尾那一行的开头双斜线"//"，不可以省略，它代表了JavaScript的注解，若省略了的话，-＞之前的字会被误认为是JavaScript的指令。这个例子可以让使用者输入一段文字，然後再输入完毕後经由&lt;input＞标签中的"onBlur"事件函数侦知，於是呼叫Getname(Str)这个函数来加以取得输入字串，并将它显示在对话视窗上！函数Getname(this.value)中的"this.value"是你在文字输入格式中所输入的值。</p>
		<p>范例4：：</p>
		<p>这个范例更是帅了！我们在HTML文件档完成了以後，常会加上一行文件最後修改的日期，现在你可不用担心每次都要去改或是忘了改了。你可以很简单的写一个如下的描述语法程式，就可以自动的为你每次产生最後修改的日期了：</p>
		<p>&lt;html&gt;<br />&lt;body&gt;<br />ThisisasimpleHTML-page.<br />&lt;br&gt;<br />Lastchanges:<br />&lt;scriptlanguage="LiveScript"&gt;<br />&lt;!--hidescriptfromoldbrowsers<br />document.write(document.lastModified)<br />//endhidingcontents--&gt;<br />&lt;/script&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>以上的document.lastModified叁数在Netscape2.0beta2版时是被写成documeut.lastmodified的，然而，之後的版本就改为document.lastModified，所以注意一下；JavaScript本身是会区分大小写的，lastmodified与lastModified在它看来是不同的结果。最後，在这一部分结束之前，要提醒你一点，像范例4，的用法并非每一部机器都是一样的，例如：PC上跑得很正确的，在工作站上不一定会有相同的结果，所以，或许你仍得测一测不同机器的结果才会有所定论。当然，这一切是因为JavaScript还正在发展的原因，最新的讯息还是得去拜访一下Netscape公司才知道。也许你也不用奇怪，当你隔周再来访时，JavaScript可能又作了相当大的改变了呢！</p>
		<p>第二章<br />范例5：</p>
		<p>在这一部分首先要为你展示的JavaScript特性是将你的滑鼠移到这个不同颜色的连结上面，此时看看浏览器下的状态列有何结果。然後这样的功能我们可以与JavaScript的功能相结合。好，现在再将你的滑鼠移到本处不同颜色的连结上面，你应该会发现有一个视窗出现，是吧？！如何！怎麽做到的呢？以下就是这一个连结的作法：&lt;ahref="tpage.htm"onMouseOver="window.status='Justanotherstupidlink...';returntrue"&gt;在这儿你只要在传统&lt;a&gt;的标签中加入onMouseOver的method，就可达成你要的效果了。这里的window.status是用来让你可以在WWW浏览器的状态列上显示一些讯息用的。在语法中，你可以看到讯息部分是用'括起来的部分，而非以"括起来，在讯息部分结束之後，必须加上;returntrue。好了，利用以上的特性可以很简单的完成第二个连结的例子！相当简单，以onMouseOver的method然後配合事件发生时去呼叫函数hello()就行了，不再多加解释了，作法如下：</p>
		<p>&lt;html&gt;<br />&lt;head&gt;<br />&lt;scriptlanguage="LiveScript"&gt;<br />&lt;!--Hiding<br />functionhello(){<br />alert("哈罗!");<br />}<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;ahref=""onMouseOver="hello()"&gt;link&lt;/a&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>范例6：</p>
		<p>接下来我们要告诉你一个使用日期和时间的例子。在第一部分中，你已看过了lastModified的用法和作法。现在要告诉你的并非是印出网路上伺服器或文件修改日期，而是你个人客户端机器的日期和时间。以下就是执行结果：</p>
		<p>现在时间是：15:49<br />今天日期为：5/26/2005<br />做法如下：</p>
		<p>&lt;scriptlanguage="LiveScript"&gt;<br />&lt;!--Hiding<br />today=newDate()<br />document.write("现在时间是：",today.getHours(),":",today.getMinutes())<br />document.write("&lt;br&gt;今天日期为：",today.getMonth()+1,"/",today.getDate(),"/",today.getYear());<br />//endhidingcontents--&gt;<br />&lt;/script&gt;</p>
		<p>在本例中，我们必需首先建立一个日期变数，这可以由today=newDate()来完成。如果没有特别指定时间与日期的话，浏览器将会采用本地客户端机器的时间，若将它放入变数today中。这儿要注意的是：我们并没有宣告today这个变数的型态，这和Java或其他的程式语言在用到变数之前必需先加以宣告的方式有相当大的不同。在完成today的日期变数後，我们等於建立了一个具有本地时间与日期的物件(object)。接着就可以使用get...的method以取得today这个物件的时间和日期。请注意getMonth这个method所取得的月份范围是由0~11，所以必须加1以代表真正的1月至12月。看完以上的例子後，想想你可以使你的文件变得有点智慧，例如：某个文件有时效限制的话，你可以利用我们在上一部份的范例4中所提到的功能和这一个范例中所学习到的功能，设计一个让你的文件在第10天以後读到的话就会告诉读者："喂！这篇已过时了！"的程式，试试看，并不难！除以上功能外，在建立日期物件时你也可以事先设定日期如下：docStarted=newDate(96,0,13)首先是年（西元），接着是月（但记得减1），再接着是日。同样的方法也可以加上时间的设定，如下：<br />docStarted=newDate(96,0,13,10,50,0)<br />前三个是日期的年、月、日，接着是时、分、秒。最後，我们必须提醒你，JavaScript并没有实际的日期型态，但是它却能毫不费力地显示出日期和时间，原因是它是从1/1/19700：0h开始以ms(milliseconds)来计算目前的时间的，这听起来似有些复杂，但你倒不用担心，它有标准的共用函数可以计算，你只要知道如何用就可以了！</p>
		<p>范例7：</p>
		<p>接下来我们要为你介绍一个可以产生乱数的函数，也是以JavaScript所写的。这个函数只是利用了一点小技巧而已，而这种技巧在大部分的编译器(compiler)中，大都是如此（或类似）计算出乱数来的。我相信JavaScript最後应也会以相似的方法来产生这样的method，如果它会提供这样功能的话。以下是此函数的结果：这是一个计算产生的乱数：0.6840756821474804</p>
		<p>以下是这个作法的写法：</p>
		<p>&lt;html&gt;<br />&lt;head&gt;<br />&lt;scriptlanguage="LiveScript"&gt;<br />functionRandomNumber(){<br />today=newDate();<br />num=Math.abs(Math.sin(today.getTime()));<br />returnnum;<br />}<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;scriptlanguage="LiveScript"&gt;<br />&lt;!--<br />document.write("Thisisarandomnumber:",RandomNumber());<br />//--&gt;<br />&lt;/script&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>
				<br />我们的做法是以上一个范例中的时间函数；它会出现一个很大的数，利用这个数再加以运算即可！例如：将它拿来做正弦函数（sin）的运算，得到的数再做绝对值的运算，结果可以得到一个介於0与1间的实数。因为时间的改变是ms为单位，而且你绝不会获得相同的数字。不过这个做法并不适合拿来快速的连续产生一系列的乱数，但如果你是不定时，久久的用一次，那效果就不错了！</p>
		<p>范例8：</p>
		<p>JavaScript的一个重要特点是它可以制作视窗。你可以产生一个的视窗，并且在此视窗中载入HTML文件，完全以JavaScript来航游网际网路（Internet）。接下来的范例就是告诉你如何开启一个视窗并且写点东西进去，你可先试试按一下范中之接钮看看！</p>
		<p>原始程式如下：</p>
		<p>&lt;html&gt;<br />&lt;head&gt;<br />&lt;scriptlanguage="LiveScript"&gt;<br />functionWinOpen(){<br />msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no");<br />msg.document.write("&lt;HEAD&gt;&lt;TITLE&gt;哈罗!&lt;/TITLE&gt;&lt;/HEAD&gt;");<br />msg.document.write("&lt;CENTER&gt;&lt;H1&gt;酷毙了!&lt;/H1&gt;&lt;h2&gt;这是&lt;B&gt;JavaScript&lt;/B&gt;所开的视窗!&lt;/h2&gt;&lt;/CENTER&gt;");<br />}<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form&gt;<br />&lt;inputtype="button"name="Button1"value="Pushme"onclick="WinOpen()"&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>这儿你又看到用按钮来启动函数。这次的函数WinOpen()是藉着一个open的method来产生一个新的视窗。第一对双引号("")是用来描述欲载入至视窗中的文件URL位置。如果留者空白的话，那就会呈现一个空白视窗，并可以透过JavaScript写入东西！下一对双引号内的内容是这个新开启视窗的名字，你可以喜欢给它任意一个名字，但不可加入空白，如用DisplayWindow的话便会出现错误讯息，请注意。接下来的一连串双引号内所指定的是该视窗的相关性质(properties)，这些蛮有趣的，你可以指定要不要有工具棒(toolbar)、卷轴(scrollbar)，等等，例如：如果你写toolbar=yes，那就会在你所产生出来的视窗中出现一排工具列。以下有许多你可以改变的视窗特性，请注意它们字中间不可以有空白：</p>
		<p>toolbar<br />location<br />directories<br />status<br />menubar<br />scrollbars<br />resizable<br />copyhistory<br />width=pixels<br />height=pixels</p>
		<p>
				<br />以上的pixels部分，你可以填入点数的数值，这数值是告诉浏览器这个视窗的大小。在开启视窗，并且将它称为msg以後，就可以开始写些东西到视窗中了。你可以写入一般正规的HTML语法文字。哇！这可不得了了，也就是说，你可以利用先前使用者在form表格中输入给你的文章直接将它回应至浏览器上来了！这些功能在几个月前大概还只能用CGI才能达到喔！现在你不用CGI也可以做了！</p>
		<p>第三章</p>
		<p>曾有许多网友问我有关JavaScript与框架(为求方便，以下均用frame表示)合用的问题。事实上，若您同时想用frames和JavaScript的功能，首先您必需拥有NetscapeNavigator2.0(或以上)浏览器(至少目前是如此)。当然也有某些浏览器支援frames的功能--如:Oracle开发的PowerBrowser，但此浏览器还只是Beta版，目前尚不支援JavaScript。首先，我稍微解释一下frames的功用。因为frames功能才开发不久，仍有许多HTML文件中未使用这项新功能。Frames最主要功用是"分割"您的视窗，使每个"小视窗"(frame)能显示不同的HTML文件(译按:这有点类似电视的子母画面)。更妙的是，不同frame之间可以互动(interact)，也就是说不同frame之间可以交换讯息与资料(information)。例如:假设您开了两个frames，第一个frame可显示普通HTML文件，第二个frame可显示工具列(toolbar)。此工具列中可包含浏览您homepage所需的各种按钮。如此一来，即使第一个frame载入了另一个HTML文件，您仍可在第二个frame中看到工具列。现在我先将上述特性展示给您瞧瞧。请按一下下面的按钮，看一看frames的长相。(如果您是线上观看此文件，您可能需稍候一下才看得到结果，因为scripts必需由server中载入到您的机器)。</p>
		<p>以下是此frame的写法:</p>
		<p>&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;title&gt;Frames&lt;/title&gt;<br />&lt;/HEAD&gt;<br />&lt;FRAMESETROWS="50%,50%"&gt;<br />&lt;FRAMESRC="frtest1.html"name="fr1"&gt;<br />&lt;FRAMESRC="frtest2.html"name="fr2"&gt;<br />&lt;/FRAMESET&gt;<br />&lt;/HTML&gt;</p>
		<p>首先您必须告诉浏览器您要开几个frame?这是由&lt;frameset...&gt;这个标签(tag)来宣告。rows这项叁数是告诉浏览器您想将视窗分割成几列?而cols这项叁数是告诉浏览器您想将视窗分割成几行?您也可以用很多组的&lt;frameset...&gt;tags将视窗分割得更复杂。以下是Netsacpe所提到的一个范例:</p>
		<p>&lt;FRAMESETCOLS="50%,50%"&gt;<br />&lt;FRAMESETROWS="50%,50%"&gt;<br />&lt;FRAMESRC="cell.html"&gt;<br />&lt;FRAMESRC="cell.html"&gt;<br />&lt;/FRAMESET&gt;<br />&lt;FRAMESETROWS="33%,33%,33%"&gt;<br />&lt;FRAMESRC="cell.html"&gt;<br />&lt;FRAMESRC="cell.html"&gt;<br />&lt;FRAMESRC="cell.html"&gt;<br />&lt;/FRAMESET&gt;<br />&lt;/FRAMESET&gt;</p>
		<p>上面这个例子产生了两行，而且第二行又分割成三列大小相等的空间。在第一个&lt;frameset&gt;tag中的50%，50%两项叁数是用来表是frame的大小。您可以给每个frame一个"名字"(name)。frame的名字在JavaScript语法中的地位非常重要。在本章的第一个范例中您已学到如何替frame命名。接下来您可以用&lt;frame&gt;tag告诉浏览器您要载入哪一个HTML文件。</p>
		<p>我想您已了解frames的基本用法，接下来我们再看一个有趣的范例:</p>
		<p>上面的按钮将显示:按某个frame中的按钮後，会在另一frame中写入文字。以下是此功能的原始码:在产生frames效果之前，您需先制作下列原始码(frames.html):</p>
		<p>&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;title&gt;Frames&lt;/title&gt;<br />&lt;/HEAD&gt;<br />&lt;FRAMESETROWS="50%,50%"&gt;<br />&lt;FRAMESRC="frame1.html"name="fr1"noresize&gt;<br />&lt;FRAMESRC="frame2.html"name="fr2"&gt;<br />&lt;/FRAMESET&gt;<br />&lt;/HTML&gt;</p>
		<p>以下是frame1.html的原始码:</p>
		<p>&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;scriptlanguage="JavaScript"&gt;<br />&lt;!--Hiding<br />functionhi(){<br />document.write("嗨!&lt;br&gt;");<br />}<br />functionyo(){<br />document.write("!&lt;br&gt;");<br />}<br />functionbla(){<br />document.write("啦啦啦&lt;br&gt;");<br />}<br />//--&gt;<br />&lt;/script&gt;<br />&lt;/HEAD&gt;<br />&lt;BODY&gt;<br />这是第一个frame!<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;</p>
		<p>以下是frame2.html的原始码:</p>
		<p>&lt;HTML&gt;<br />&lt;body&gt;<br />这是第二个frame!<br />&lt;p&gt;<br />&lt;FORMNAME="buttonbar"&gt;<br />&lt;INPUTTYPE="button"VALUE="嗨"onClick="parent.fr1.hi()"&gt;<br />&lt;INPUTTYPE="button"VALUE=""onClick="parent.fr1.yo()"&gt;<br />&lt;INPUTTYPE="button"VALUE="啦"onCLick="parent.fr1.bla()"&gt;<br />&lt;/FORM&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;</p>
		<p>哇!这些语法越来越长了!上述的语法是如何运作的呢?当使用者载入第一个档案(frames.html)後，将会产生两个frame，并且在第一个frame(命名为'fr1')中载入frame1.html，而在第二个frame(命名为'fr2')中载入frame2.html。到目前为止都只是普通的HTML语法。或许您已发现在frame1.html中包含了JavaScript语法，但此JavaScript并没有马上被执行。难到这些函式(functions)是不必要的?亦或是我得删除这些不必要的函式?虽然我是散惯的人，但这些函式确实是必须的。它们是被位於frame2.html中之JavaScript语法所呼叫而执行的。我在frame2.html中利用JavaScript语法制作了三个按钮，制作按钮来呼叫函式的方法我已在第一章提过，相信您对onClick的用法已相当熟悉。但是......parent.fr1是干嘛用的?若您对物件观念已相当了解，相信它对您不是甚麽新鲜事。您可以看到frames.html同时呼叫frame1.html与frame2.html两个档案，所以frames.html称为frame1.html与frame2.html的parent(请恕我直接用英文)。同理，这两个新的frame就称为frames.html的child-frames。您可将这种复杂的关系想像成阶层式架构(hierarchy)。以下我借助一个小'图'来厘清这种关系:</p>
		<p>frames.htmlparent<br />/\<br />/\<br />/\<br />fr1(frame1.html)fr2(frame2.html)children</p>
		<p>当然您可依此类推，产生一些'grandchildren'frames。(当然，这并不是正式的名称):</p>
		<p>frames.htmlparent<br />/\<br />/\<br />/\<br />fr1(frame1.html)fr2(frame2.html)children<br />/\<br />/\<br />/\<br />gchild1gchild2'grandchildren'</p>
		<p>若您想由frame2.html呼叫parent-frame中的任何函数，您只要将parent放在您欲呼叫函数名称之前即可。同理，若由parent-frame呼叫位於frame1.html中的函数，您只需将fr1放在被呼叫函数名称之前。为什麽用fr1呢?原因是我们在frames.html中开了两个frame，而且将它们分别命名为fr1和fr2。所以我用fr1代表第一个frame(frame1.html)。接下来的步骤就相当容易了。当我们欲由frame2.html(命名为fr2)呼叫第一个frame中的函式时该怎麽做?由上面的"小图"您可以发现，frame1.html和frame2.html之间并无直接关连(connection)，因此您不可以"直接"由frame2.html呼叫位於frame1.html中的函式。您必须透过parent-frame来呼叫它，所以正确指标(index)应为parent.fr1。例如若您想由frame2.html呼叫hi()，您必须写成parent.fr1.hi()。这也就是为什麽frame2.html中的onClick要写成那种样子的原因了。对了!附带提一点小东西。您或许已发现本章中都用&lt;scriptlanguage="JavaScript"&gt;代替前两章用的&lt;scriptlanguage="LiveScript"&gt;。其实此二者间并没什麽差别。但起初JavaScript被植入Netscape浏览器时，您只能用LiveScript语法。(这是一种由Netscape发展的旧语法，和JavaScript极为类似)。我想既然我们讨论的是JavaScript函式，就应使用JavaScript语法。(这只是我的一己之见，在'JavaScript-society'中有许多关於LiveScript的讨论，目前也是众说纷纭....)</p>
		<p>在此我要花一点时间讨论一个很多人关心的问题。当您观赏一个拥有数个frame的网页时，若您想link至internet其它网页，这些frame并不会消失而且会带来视觉上的干扰。这些讨厌的frame应该如何消除呢?您只要在您的&lt;ahref...&gt;tag中加入TARGET="_top"就可解决这个困扰。方法如下:<br />&lt;ahref="goaway.html"TARGET="_top"&gt;如果您不想观赏我的网页了&lt;/a&gt;<br />当然，您必须在您想要获得此效果的link中都加入TARGET="_top"。若想要整个网页中的link都有此效果，您可在此网页的head中加入&lt;basetarget="_top"&gt;较方便。如此一来每个link被按下後都可将frame消除。</p>
		<p>
				<br />第四章</p>
		<p>这章我将告诉您如何在状态列(statusbar)(也就是您浏览器最下方显示URLs的那一行)显示文字，并且将教您'跑马灯'(以下简称scroller)的工作原理。虽然以JavaScript完成的scroller目前仍有些问题(稍後会提到问题在哪儿?)，但我还是告诉您它是如何写成的。首先，如何将文字填入statusbar呢?下述语法将告诉您如何做到这项功能:(按下按钮後请注视statusbar的变化)很新奇吧!请看看原始码:</p>
		<p>&lt;html&gt;<br />&lt;head&gt;<br />&lt;scriptlanguage="JavaScript"&gt;<br />&lt;!--Hide<br />functionstatbar(txt){<br />window.status=txt;<br />}<br />//--&gt;<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form&gt;<br />&lt;inputtype="button"name="look"value="写入文字"onclick="statbar('嗨!这就是状态<br />列(statusbar)!');"&gt;<br />&lt;inputtype="button"name="erase"value="清除文字"onclick="statbar('');"&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>我制作了两个都会呼叫statbar(txt)函式(function)的按钮。当此函式被呼叫後，字串经由括弧中的变数txt传给statbar(txt)。(不一定要用txt，用别的变数名也可以)。当电脑执行到&lt;form&gt;tag时，一旦按下按钮就会呼叫statbar(txt)。但是电脑并没有马上将txt的内容写在statusbar，只是将欲显示的字串存入txt。换句话说，藉由呼叫函式，只是让变数txt得到一个值。因此当您按下'写入文字'这个按钮後，会呼叫statbar(txt)而且'嗨!这就是状态列(statusbar)!'这个字串会存入txt中。咻!讲了这麽多只是想告诉您这种写法可预留一些弹性。什麽弹性呢?就是您可重复使用txt这个变数。您看看第二个按钮，它也是呼叫相同的函式。若您不利用一个变数来传递字串的话，就必须写两个不同的函式了。那麽statbar(txt)到底做了些什麽?其实没什麽，只是将txt的内容写入变数window.status中。这是由window.status=txt;做的。另外若想消除文字，只需送一个空字串('')给statusbar。请注意，因为在onClick中我们已经使用双引号"，所以这里必须用单引号'。这是为了让浏览器辨认哪两个引号是一对的，因此您必需双引号和单引号交替使用。由此份简介文件第二章您已学过onMouseOver的特性了:<br />&lt;ahref="tpage.html"onMouseOver="window.status='Justanotherstupidlink...';returntrue"&gt;<br />您可能会对一件事感到厌烦。那就是当mouse的指标已从link移开了，但是statusbar中的文字还留在那!没关系，我教您一个解决的办法。利用上面教您如何消除statusbar中文字的方法，我们来写一个小函式。但是如何侦测出mouse的指标已从link移开并进而呼叫消除文字的函式呢?侦测mouse指标是否已从link移出的功能目前还无法达到，但可用"计时器"来暂时解决此问题。试试将mouse移到此link上看看statusbar的变化，但请不要按它。怎麽样?很棒吧!看看下面的原始码您就知到这东西很简单。</p>
		<p>&lt;html&gt;<br />&lt;head&gt;<br />&lt;scriptlanguage="JavaScript"&gt;<br />&lt;!--Hide<br />functionmoveover(txt){<br />window.status=txt;<br />setTimeout("erase()",1000);<br />}<br />functionerase(){<br />window.status="";<br />}<br />//--&gt;<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;ahref="dontclck.html"onMouseOver="moveover('瞬间即逝!');returntrue;"&gt;<br />link&lt;/a&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>这script的许多部份相信您已了解。moveover(txt)其实和先前的statbar(txt)差不多。erase()也和先前所讨论的相同。在HTML网页中的&lt;body&gt;tag里我们加入一个具有onMouseOver功能之link。当mouse指标移至"link"上就会呼叫moveover(txt)，并且利用txt变数传递字串'瞬间即逝!'。接下来的步骤就和statbar(txt)一样，window.status收到txt的值後将之显示在statusbar上。而setTimeout(...)这项新函式是用来作为一个"定时器"。setTimeout(...)能作些什麽事呢?它的主要特性是当某段设定的时间"跑"完了之後，便执行某函式。在这个例子中，於1000毫秒後(也就是1秒後)就会执行erase()。换句话说，当1秒结束後moveover(txt)的功能就会因erase()的自动执行而停止。虽然规定时间"跑"完後定时器并不会重新启动，但您可以在erase()中再用一次setTimeout(...)，使其循还不断，看起来就像一个跑马灯(scroller)。您已学到了setTimeout的功能和如何在statusbar中显示文字，接下我将教您如何制作一个在statusbar显示的"跑马灯"(scroller)。请按下方的按钮看看我做的scroller。由於script需由server载入到您的电脑中，因此这要花一点时间，请耐心等一下。</p>
		<p>以下是原始码:</p>
		<p>&lt;html&gt;<br />&lt;head&gt;<br />&lt;scriptlanguage="JavaScript"&gt;<br />&lt;!--Hide</p>
		<p>varscrtxt="怎麽样!很酷吧!您也可以试试."+"Heregoesyourmessagethevisitors<br />toyourpagewill"+<br />"lookatforhoursinpurefascination...";<br />varlentxt=scrtxt.length;<br />varwidth=100;<br />varpos=1-width;</p>
		<p>functionscroll(){<br />pos++;<br />varscroller="";<br />if(pos==lentxt){<br />pos=1-width;<br />}<br />if(pos&lt;0){<br />for(vari=1;i&lt;=Math.abs(pos);i++){<br />scroller=scroller+"";}<br />scroller=scroller+scrtxt.substring(0,width-i+1);<br />}<br />else{<br />scroller=scroller+scrtxt.substring(pos,width+pos);<br />}<br />window.status=scroller;<br />setTimeout("scroll()",150);<br />}<br />//--&gt;<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;bodyonLoad="scroll();returntrue;"&gt;<br />这里可显示您的网页!<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>上面script用的语法相信大部份您已经懂了。setTimeout(...)"告诉"计时器当时间到了就呼叫scroll()。如此一来scroller便会向前移动一步。在script的开头有许多计算式，那是用来决定文字开始显示的位置，了不了解并不重要。一旦决定了文字的启始位置，就必需加些空格(space)以使文字能显示在正确位置。</p>
		<p>在此章一开始我曾提到，此种scroller并不是很受欢迎。即使是，也不会持续很久。为什麽呢?下面我列出几个主要原因:<br />当第一次看到scroller或许您会觉得很新奇，但久而久之便会觉得索然无味。当然，这是所有"酷玩意儿"(cooltrick)皆有的现象。其实这还不是主要原因，更严重的问题还在後头呢!当您移动mouse时，您可以发现scroller的速度改变了(至少在我的机器上是如此)。尤其当您更改setTimeout的值为使scroller跑快一点时，这种情况更严重。不过这问题或许还有解决方法。更糟的是若让scroller跑久一点，会出现Outofmemoryerror的问题!天呀!这是NetscapeNavigator2.0的一个"臭虫"(bug)。我们期待新的版本能更正此bug(译按:NetscapeNavigatorAtlasPreviewRelease已更正此bug)。在网路上有许多这方面的应用，您可以试着找找。我曾经看过有人将scroller放在Homepage中，这应该不会太难。(译按:有兴趣的人可叁考目录中本人所制做的scroller)</p>
		<p>第五章</p>
		<p>阵列(arrays)的运用是程式设计中一项种要的技术。每一种程式语言均以某种特定方式来表示阵列。或许您已了解阵列在程式设计中的好处，但翻遍Netscape所提供的文件，并没有提及如何使用阵列。这是因为JavaScript并不支援阵列。但是现在我将教您如何在JavaScript中使用阵列。首先，阵列是干用的?您可以把它看成一长串的变数(variables)。假设您现在需要宣告10个变数，您可以一个个将10个变数宣告为a,b,c...，但当您需要100个或更多的变数时，这种方法将会变得很麻烦。若您使用一个拥有10个元素(elements)的阵列(暂且命名为'MyArray')来表示这10个变数，则可以用MyArray[1]，MyArray[2]，MyArray[3]...分别代表第一,二,三....个变数(很多程式语言是从0开始当作第一个元素，但在JavaScript语法中是从1开始)。因此若您想将第一个元素(或称变数)的值指定为17，您只要写成MyArray[1]=17即可。由此可看出阵列的功用和一般变数是相同的。不光如此，若您想将所有元素的值均指定为17，您只要写一个简单的圈(loop)即可:<br />for(vari=1;i&lt;11;i++)MyArray[i]=17<br />for-这个指令是告诉电脑其後的指令总共要执行几次。for-圈是从1开使，也就是电脑会先执行MyArray[1]=17。然後i会增加1并接着执行MyArray[2]=17。i每次递增1直到i=10为止。接下来教您如何做阵列的初始化(initialization)。这个问题曾在JavaScriptMailinglist中讨论过。(如果您想订阅mailinglist，您只要在e-mail中填入subscribejavascript-digest并寄到<a href="mailto:majordomo@obscure.org">majordomo@obscure.org</a>即可。接着您每天就会收到一到二个约20-30kB的大档案，这些档案包括所有来自JavaScript-list的信件)。</p>
		<p>functioninitArray(){<br />this.length=initArray.arguments.length<br />for(vari=0;i&lt;this.length;i++)<br />this[i+1]=initArray.arguments[i]<br />}</p>
		<p>
				<br />您不需要了解这个函式(function)的意义，您只要知道怎麽用就好。如果您要宣告一个拥有三个元素的阵列，且其值分别指定为17,18,19，您只要写成:varMyArray=newinitArray(17,18,19)。您也可以用字串(strings)当作元素的值:varheyho=newinitArray("This","is","酷")。因此您不必管元素值的型式(type)，即使混着用也行:varMixedup=newinitArray(17,"yo",103)。下面我将对一个阵列'Mixedup'作初始化，并显示阵列的内容:</p>
		<p>ElementNo.1:17<br />ElementNo.2:yo<br />ElementNo.3:103</p>
		<p>其原始码如下:</p>
		<p>&lt;scriptlanguage="JavaScript"&gt;<br />&lt;!--Hide<br />varMixedup=newinitArray(17,"yo",103);<br />document.write("ElementNo.1:"+Mixedup[1]+"&lt;br&gt;");<br />document.write("ElementNo.2:"+Mixedup[2]+"&lt;br&gt;");<br />document.write("ElementNo.3:"+Mixedup[3]+"&lt;br&gt;");<br />//--&gt;<br />&lt;/script&gt;</p>
		<p>当我昨天写一个小游戏时，我遇到一个您也可能会碰到的问题。当您想清除视窗或frame中的内容时，Netscape文件中提到了一个函式可用--'document.clear()'。但当您将此函式写入网页中，它并不会如预期的清除视窗或frame中的内容。而且document.clear()在各种平台(platform)上似都无效。GordonMcComb告诉我一个清除视窗或frame中内容的好方法，您可以试试:</p>
		<p>document.close();<br />document.open();<br />document.write("&lt;P&gt;");</p>
		<p>您不一定要写最後一行document.write("&lt;P&gt;");，只有当您想在视窗中写入某些东西时才需要加入此行。上述方法对frame亦有效。<br />接下来我们谈一个可以让您在不同文件之间穿梭的语法--back()和forward()两个函式。通常我们在网页中加的back-link和Netscape-Navigator中的"Back键"功能上并不相同。Netscape-Navigator中的"Back键"是回到您historylist中的上一页。您现在也可利用JavaScript做到相同的功能。只要按下此link，您可以再度回到此页。JavaScript语法的原始码如下:</p>
		<p>&lt;html&gt;<br />&lt;body&gt;<br />&lt;FORMNAME="buttonbar"&gt;<br />&lt;INPUTTYPE="button"VALUE="Back"onClick="history.back()"&gt;<br />&lt;INPUTTYPE="button"VALUE="JS-Home"onClick="location='script.html'"&gt;<br />&lt;INPUTTYPE="button"VALUE="Next"onCLick="history.forward()"&gt;<br />&lt;/FORM&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>您也可以用history.go(-1)和history.go(1)代替.</p>
		<p>第六章</p>
		<p>许多网友问我一个有趣的问题:如何用mouse按一下便可同时载入两页文件。基本上有三种方法可以达到这种功能。第一种方法是制作一个按钮，让使用者按下後去启动一个能同时将两份文件载入不同frames或新视窗的函式(function)。若您曾经看过此份简介文件的其它章节的话，我相信您可以很轻易写出这种语法:我们制作了三个frame，第一个frame中包含了一个按钮。请注意，第一个HTML档案只是用来打开frame和给予每个frame一个名字。若您还不清楚JavaScript和frame的关系，可以先阅读第三章。不过在此还是照例让您瞧瞧原始码(不知您是否在很多电脑书籍中遇到一个相同的困扰，那就是作者常把一些自认很简单的东西忽略不提，结果那些东西正是读者搞不懂的地方!所以，若您对我提的东西已很了解，请发挥一下您的耐性:-)</p>
		<p>frames2.html</p>
		<p>&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;title&gt;Frames&lt;/title&gt;<br />&lt;/HEAD&gt;<br />&lt;FRAMESETCOLS="295,*"&gt;<br />&lt;FRAMESETROWS="100%,*"&gt;<br />&lt;FRAMESRC="loadtwo.html"NAME="fr1"&gt;<br />&lt;/FRAMESET&gt;<br />&lt;FRAMESETROWS="75%,25%"&gt;<br />&lt;FRAMESRC="cell.html"NAME="fr2"&gt;<br />&lt;FRAMESRC="cell.html"NAME="fr3"&gt;<br />&lt;/FRAMESET&gt;<br />&lt;/FRAMESET&gt;<br />&lt;/HTML&gt;</p>
		<p>第一个frame会载入loadtwo.html并产生一个按钮:</p>
		<p>loadtwo.html<br />&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;scriptlanguage="JavaScript"&gt;<br />&lt;!--Hiding<br />functionloadtwo(page2,page3){<br />parent.fr2.location.href=page2;<br />parent.fr3.location.href=page3;<br />}<br />//--&gt;<br />&lt;/script&gt;<br />&lt;/HEAD&gt;<br />&lt;BODY&gt;<br />&lt;FORMNAME="buttons"&gt;<br />&lt;INPUTTYPE="button"VALUE="同时载入两份文件"onClick="loadtwo('frtest1.html',<br />'frtest2.html')"&gt;<br />&lt;/FORM&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;</p>
		<p>按下按钮後，电脑会传递两个字串给loadtwo()并将之启动。由loadtwo()中可以看出，第一个字串是用来定义第二个framefr2所载入文件的位址和档案名。若您想定义另外的按钮来载入不同的文件，您可以重复使用此函式。只要将文件的URLs(addresses)传给loadtwo()即可。接下来谈谈用hyperlinks同时载入两页文件的第二种方法。在Internet上您可以发现许多网页使用&lt;ahref="yourlink.html"onCLick="yourfunction()"&gt;来达到上述提及的功能。但此语法并不能在所有平台上均正常执行，因此最好不要用此语法。现在我告诉您另一种写法:我们可改用下述JavaScript语法:</p>
		<p>&lt;ahref="javascript:myfunction()"&gt;MyLink&lt;/a&gt;</p>
		<p>此种方式非常简单而且在所有浏览器中均能正常执行。您只要写上javascript:并加上您想联结的函式名即可。若此函式名称设为'loadtwo()'，那您就可藉由按下此hyperlink来达到同时载入两份文件的目的了。再接着谈谈用mouse按一下便可同时载入两页文件的第三种方法，此方法可以以hyperlinks或按钮来执行。您可先在第二个frame中载入一个HTML文件:<br />&lt;ahref="getfr2.html"target="fr2"&gt;请按这里!&lt;/a&gt;<br />然後在此文件中(getfr2.html)加入onLoad这项指令，用来触发第三个frame载入另一份文件。如此一来便可同时载入两份文件。getfr2.html档的原始码如下:</p>
		<p>&lt;HTML&gt;<br />&lt;BODYonLoad="parent.fr3.location.href='getfr3.html';returntrue;"&gt;<br />文件内容.....。<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>当然，您必须在所有会被载入到第二个frame的文件中加入onLoad这项指令。另一个常遇见的问题是如何开一个新视窗并载入文件?我们想达到的效果是当使用者按一下mouse便会'弹'出一个新视窗。很简单，只要在&lt;ahref...&gt;中利用target这项特性就可达到此效果。例如:<br />&lt;ahref="goanywhere.html"target="ResourceWindow"&gt;Go!&lt;/a&gt;</p>
		<p>现在我将谈谈在JavaScript中几种常用的运算子(operator)。运算子可以使您的JavaScript语法更精简。假设您想测试变数x是否大於3且小於10，您可写成:</p>
		<p>if(x&gt;3)<br />if(x&lt;10)<br />doanything();</p>
		<p>当满足x&gt;3且x&lt;10时，就会执行doanything()。还有一种更精简的写法:</p>
		<p>if(x&gt;3&amp;&amp;x&lt;10)doanything();</p>
		<p>'&amp;&amp;'称为AND-运算子。还有另一种被称为OR-运算子的东东可让您用来检视是否变数x等於5或变数y等於17:</p>
		<p>if(x==5||y==17)doanything();</p>
		<p>当满足x==3或y==17时，就会执行doanything()。当然，当两者皆成立时也会执行doanything()。在JavaScript中是利用==来做比较的工作(其它尚有&lt;，&gt;，&lt;=和&gt;=)，这些都和C/C++的语法相同。另外单一'='是用来将数值存入变数用的。(在Pascal语法中将数值指定给变数是用:=，而做比较是用单一的'='，这和JavaScript语法有点不同)若您想利用'不等於'这项特性，您可以用!=。例如:x!=17.尚有许多可以精简您的JavaScript语法的运算子，去翻翻Netscape的文件吧!</p>
		<p>
		</p>
		<p>
		</p>
		<p>
				<br />第七章</p>
		<p>输入表单(form)对某些Internet上的网页而言是很重要的。通常form的输入内容会被送回server中做处理。JavaScript具有确认输入值的功能，可以事先确保这些值是属於"合法的"，进而避免将错误的输入值送回server。首先我将告诉您如何对form的输入做确认的工作，再来我将会提到用JavaScript将资料送回server的可能性。咱们开始吧!我先写一个简单的语法。在下面我加了两个text-元件(element)，请将您的大名写入第一个空格，并将您的e-mailaddress写入第二个空格。您可在这两个空格中任意输入并按下按钮。您也可以不输入任何东西就按下按钮试试!<br />请输入您的大名:</p>
		<p>请输入您的e-mailaddress:</p>
		<p>对第一个空格而言，若您没有键入任何东西，电脑便会出现一个错误讯息，并请您再输入一次。当然，此空格会把任何输入的字串都视为"合法的"输入，它无法辨认出您输入的名字是正确的或是胡的。即始您输入的是数字，它也会把此数字当成您的大名。例如您输入'17'，它将会显示'嗨!17'。第二个空格就设计得稍微复杂一点了。您可试着输入一个简单的字串-例如您的大名，它将会显示错误讯息，并请您再输入一次(除非您输入的字串含有@...)。这个空格的确认标准是检视您输入的字串中是否含有@。即使只输入一个@，它也会被视为合法的输入---虽然这也不是正确的e-mailaddress。所有Internet的e-mailaddress皆含有@，因此对e-mailaddress输入值做此种确认工作是很适合的。接下来看看上述功能的原始码吧:</p>
		<p>&lt;html&gt;<br />&lt;head&gt;<br />&lt;scriptlanguage="JavaScript"&gt;<br />&lt;!--Hide</p>
		<p>functiontest1(form){<br />if(form.text1.value=="")<br />alert("您没写上任何东西，请再输入一次!")<br />else{<br />alert("嗨"+form.text1.value+"!您已输入完成!");<br />}<br />}</p>
		<p>functiontest2(form){<br />if(form.text2.value==""||<br />form.text2.value.indexOf(<a href="mailto:'@',0)==-1">'@',0)==-1</a>)<br />alert("这不是正确的e-mailaddress!请再输入一次!");<br />elsealert("您已输入完成!");<br />}<br />//--&gt;<br />&lt;/script&gt;<br />&lt;/head&gt;</p>
		<p>&lt;body&gt;<br />&lt;formname="first"&gt;<br />Enteryourname:&lt;br&gt;<br />&lt;inputtype="text"name="text1"&gt;<br />&lt;inputtype="button"name="button1"value="输入测试"onClick="test1(this.form)"&gt;<br />&lt;P&gt;<br />Enteryoure-mailaddress:&lt;br&gt;<br />&lt;inputtype="text"name="text2"&gt;<br />&lt;inputtype="button"name="button2"value="输入测试"onClick="test2(this.form)"&gt;<br />&lt;/body&gt;</p>
		<p>先看看body-之後的HTML语法。我们嵌入了两个text元件和两个按钮。第一个按钮呼叫test1(...)，第二个按钮呼叫test2(...)。this.form这个变数会将此form的名字(在此例中就是first)传给函式(function)，以便能正确将元件"定址"(address)。test1(form)的功用在於检查您是否输入字串(亦即检查是否为"空字串")?此项工作是由if(form.text1.value=="")...所执行。'form'这个变数将会接收由'this.form'所传来的值。但我们如何在test1(...)中抓取我们所输入的字串呢?您可利用'value'这个变数再加上'form.text1'来抓所输入的字串。然後将它和""比较，检查是否为"空字串"。若是"空字串"则表示并无输入任何东西，那麽Netscape将会出现警告并要求您再输入一次。若test1(...)检查结果并非"空字串"，则会出现"您已输入完成!"的讯息。请注意，即使只输入一个空白(space)，test1(...)也会将之视为合法输入。当然，您也可以略施小技来排除上述可能性，我相信这很容易。现在请看test2(form)。在此函式中我们利用相同的方法来检测输入值是否为空字串，但是我在if-指令中加入了额外的检测功能。||这个符号代表OR运算子(operator)，您可在第六章中学习它的用法。if-指令用来检测第一与第二个比较式是否其中之一为"真"?若有其中之一为"真"，则整个if-指令即为"真"，如此便会执行其後的指令。换句话说，若您没有输入任何字串或您输入的字串中没有包含<a href="mailto:'@'">'@'</a>，均会被视为"不合法"输入。您知到有几种方法可用来送出form的内容吗?最简单的方法就是利用e-mail来送出form的内容。我下面介绍的方法就是属於这一种。若您不想利用e-mail来送出form的内容且想让server能自动处理form的输入值，此时此刻只有CGI能做得到。譬如您想做一个类似Yahoo可以让使用者迅速得到结果的搜寻引擎(searchengine)，您就必须使用CGI。如此一来使用者才不需等待系统管理者处理form的输入值，而可由server自动处理并迅速将处理结果报告给使用者。目前JavaScript无法达到此种功能。即使您想制做一个"访客签名簿"(guestbook)，也不可能利用JavaScript来叫server自动将资页中。目前只有CGI能做到如此。但您可以制做一个利用e-mail传送使用者资料的guestbook，只是您需以手动(manual)方式来处理使用者所传来的资料。若您一天不是收到很多使用者送来的资料的话，这也未尝不可。以下语法只使用到普通的HTML语法，并不需用到JavaScript!只有当您想在资料送出前做一些确认工作的话，才需用到JavaScript。虽然目前有些浏览器无法使用mailto-这项指令，我相信较新版的浏览器都会支援这个指令。</p>
		<p>
				<br />&lt;FORMMETHOD=POSTACTION="<a href="mailto:your_email@goes.here">mailto:your_email@goes.here</a>"&gt;<br />&lt;H3&gt;您喜欢我的网页吗?&lt;/H3&gt;<br />&lt;INPUTNAME="choice"TYPE="RADIO"VALUE="1"&gt;一点也不喜欢。&lt;BR&gt;<br />&lt;INPUTNAME="choice"TYPE="RADIO"VALUE="2"CHECKED&gt;简直浪费我的时间。&lt;BR&gt;<br />&lt;INPUTNAME="choice"TYPE="RADIO"VALUE="3"&gt;这简直是Net上最烂的站台。&lt;BR&gt;<br />&lt;INPUTNAME="submit"TYPE="SUBMIT"VALUE="Send"&gt;<br />&lt;/FORM&gt;</p>
		<p>上述语法可藉由e-mail收到使用者对您网页的观感。唯一的困扰是您可能会收到内容类似密语(cryptic)的mail。mail内容的空格(space)有时会以'+'代替，有时会以'%20'代替。看+起+来+就+像+这+样。我相信网路上应有某种程式可将收到的mail转换成"可读"的语句。</p>
		<p>另外有一种不错的应用可使您的表单输入更具"亲和性"(user-friendly)。您可以指定一开始先"定焦"(focus)於哪个元件(element，简单的说就是输入项)。或是您可让浏览器"定焦"於使用者输入错误的表单。换句话说，浏览器将会把mouse的游标放在您"定焦"的元件上，如此一来使用者便不需在输入字串之前按一下mouse。请看这项功能的原始码:</p>
		<p>functionsetfocus(){<br />document.first.text1.focus();<br />return;<br />}</p>
		<p>这项语法是将"定焦"放在第一个text-元件上(以本章为例，就是在"请输入您的大名"的空格中有游标在闪烁)。您必需在语法中指定您想"定焦"的表单名字(以本章为例，就是first)和元件的名字(以本章为例，就是text1)。若您在一开始载入网页时就想"定焦"於某个元件上，只要在&lt;body&gt;-tag中利用onLoad-即可:</p>
		<p>&lt;bodyonLoad="setfocus()"&gt;</p>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/69526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2006-09-14 08:45 <a href="http://www.blogjava.net/liaojiyong/archive/2006/09/14/69526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript的一些实用技巧( 转)</title><link>http://www.blogjava.net/liaojiyong/archive/2006/09/14/69522.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 14 Sep 2006 00:27:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2006/09/14/69522.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/69522.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2006/09/14/69522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/69522.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/69522.html</trackback:ping><description><![CDATA[
		<div>
				<span>1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<br />&lt;table border oncontextmenu=return(false)&gt;&lt;td&gt;no&lt;/table&gt; 可用于Table 
<p>2. &lt;body onselectstart="return false"&gt; 取消选取、防止复制</p><p>3. onpaste="return false" 不准粘贴</p><p>4. oncopy="return false;" oncut="return false;" 防止复制</p><p>5. &lt;link rel="Shortcut Icon" href="favicon.ico"&gt; IE地址栏前换成自己的图标</p><p>6. &lt;link rel="Bookmark" href="favicon.ico"&gt; 可以在收藏夹中显示出你的图标</p><p>7. &lt;input style="ime-mode:disabled"&gt; 关闭输入法</p><p>8. 永远都会带着框架<br />&lt;script language="JavaScript"&gt;&lt;!--<br />if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页<br />// --&gt;&lt;/script&gt;</p><p>9. 防止被人frame<br />&lt;SCRIPT LANGUAGE=JAVASCRIPT&gt;&lt;!-- <br />if (top.location != self.location)top.location=self.location;<br />// --&gt;&lt;/SCRIPT&gt;</p><p>10. 网页将不能被另存为<br />&lt;noscript&gt;&lt;iframe src=*.html&gt;&lt;/iframe&gt;&lt;/noscript&gt; </p><p>11. &lt;input type=button value=查看网页源代码 <br />onclick="window.location = "view-source:"+ "http://www.pconline.com.cn""&gt;</p><p>12.删除时确认<br />&lt;a href="javascript:if(confirm("确实要删除吗?"))location="boos.asp?&amp;areyou=删除&amp;page=1""&gt;删除&lt;/a&gt; </p><p>13. 取得控件的绝对位置<br />//Javascript<br />&lt;script language="Javascript"&gt;<br />function getIE(e){<br />var t=e.offsetTop;<br />var l=e.offsetLeft;<br />while(e=e.offsetParent){<br />t+=e.offsetTop;<br />l+=e.offsetLeft;<br />}<br />alert("top="+t+"/nleft="+l);<br />}<br />&lt;/script&gt;</p><p>//VBScript<br />&lt;script language="VBScript"&gt;&lt;!--<br />function getIE()<br />dim t,l,a,b<br />set a=document.all.img1<br />t=document.all.img1.offsetTop<br />l=document.all.img1.offsetLeft<br />while a.tagName&lt;&gt;"BODY"<br />set a = a.offsetParent<br />t=t+a.offsetTop<br />l=l+a.offsetLeft<br />wend<br />msgbox "top="&amp;t&amp;chr(13)&amp;"left="&amp;l,64,"得到控件的位置"<br />end function<br />--&gt;&lt;/script&gt;</p><p>14. 光标是停在文本框文字的最后<br />&lt;script language="javascript"&gt;<br />function cc()<br />{<br />var e = event.srcElement;<br />var r =e.createTextRange();<br />r.moveStart("character",e.value.length);<br />r.collapse(true);<br />r.select();<br />}<br />&lt;/script&gt;<br />&lt;input type=text name=text1 value="123" onfocus="cc()"&gt;</p><p>15. 判断上一页的来源<br />javascript:<br />document.referrer</p><p>16. 最小化、最大化、关闭窗口<br />&lt;object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"&gt; <br />&lt;param name="Command" value="Minimize"&gt;&lt;/object&gt;<br />&lt;object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"&gt; <br />&lt;param name="Command" value="Maximize"&gt;&lt;/object&gt;<br />&lt;OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"&gt;<br />&lt;PARAM NAME="Command" VALUE="Close"&gt;&lt;/OBJECT&gt;<br />&lt;input type=button value=最小化 onclick=hh1.Click()&gt;<br />&lt;input type=button value=最大化 onclick=hh2.Click()&gt;<br />&lt;input type=button value=关闭 onclick=hh3.Click()&gt;<br />本例适用于IE<br /></p><p>17.屏蔽功能键Shift,Alt,Ctrl<br />&lt;script&gt;<br />function look(){ <br />if(event.shiftKey) <br />alert("禁止按Shift键!"); //可以换成ALT　CTRL<br />} <br />document.onkeydown=look; <br />&lt;/script&gt;</p><p>18. 网页不会被缓存<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="Wed, 26 Feb 1997 08:21:57 GMT"&gt;<br />或者&lt;META HTTP-EQUIV="expires" CONTENT="0"&gt;</p><p>19.怎样让表单没有凹凸感？<br />&lt;input type=text style="border:1 solid #000000"&gt; <br />或<br />&lt;input type=text style="border-left:none; border-right:none; border-top:none; border-bottom: </p><p>1 solid #000000"&gt;&lt;/textarea&gt;</p><p>20.&lt;div&gt;&lt;span&gt;&amp;&lt;layer&gt;的区别？ <br />&lt;div&gt;(division)用来定义大段的页面元素，会产生转行 <br />&lt;span&gt;用来定义同一行内的元素，跟&lt;div&gt;的唯一区别是不产生转行 <br />&lt;layer&gt;是ns的标记，ie不支持，相当于&lt;div&gt;<br /><br /><br /></p><p>21.让弹出窗口总是在最上面:<br />&lt;body onblur="this.focus();"&gt;</p><p>22.不要滚动条? <br />让竖条没有: <br />&lt;body style="overflow:scroll;overflow-y:hidden"&gt; <br />&lt;/body&gt; <br />让横条没有: <br />&lt;body style="overflow:scroll;overflow-x:hidden"&gt; <br />&lt;/body&gt; <br />两个都去掉？更简单了 <br />&lt;body scroll="no"&gt; <br />&lt;/body&gt; </p><p>23.怎样去掉图片链接点击后，图片周围的虚线？<br />&lt;a href="#" onFocus="this.blur()"&gt;&lt;img src="logo.jpg" border=0&gt;&lt;/a&gt;</p><p>24.电子邮件处理提交表单<br />&lt;form name="form1" method="post" action="<font color="#002c99">mailto:****@***.com</font>" enctype="text/plain"&gt; <br />&lt;input type=submit&gt;<br />&lt;/form&gt;</p><p>25.在打开的子窗口刷新父窗口的代码里如何写？<br />window.opener.location.reload()</p><p>26.如何设定打开页面的大小<br />&lt;body onload="top.resizeTo(300,200);"&gt;<br />打开页面的位置&lt;body onload="top.moveBy(300,200);"&gt;</p><p>27.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动 <br />&lt;STYLE&gt; <br />body <br />{background-image:url(logo.gif); background-repeat:no-repeat; <br />background-position:center;background-attachment: fixed} <br />&lt;/STYLE&gt; </p><p>28. 检查一段字符串是否全由数字组成<br />&lt;script language="Javascript"&gt;&lt;!--<br />function checkNum(str){return str.match(//D/)==null}<br />alert(checkNum("1232142141"))<br />alert(checkNum("123214214a1"))<br />// --&gt;&lt;/script&gt;</p><p>29. 获得一个窗口的大小<br />document.body.clientWidth; document.body.clientHeight</p><p>30. 怎么判断是否是字符<br />if (/[^/x00-/xff]/g.test(s)) alert("含有汉字");<br />else alert("全是字符");</p><p>31.TEXTAREA自适应文字行数的多少<br />&lt;textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight"&gt;<br />&lt;/textarea&gt;<br /></p><p>32. 日期减去天数等于第二个日期<br />&lt;script language=Javascript&gt;<br />function cc(dd,dadd)<br />{<br />//可以加上错误处理<br />var a = new Date(dd)<br />a = a.valueOf()<br />a = a - dadd * 24 * 60 * 60 * 1000<br />a = new Date(a)<br />alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")<br />}<br />cc("12/23/2002",2)<br />&lt;/script&gt;</p><p>33. 选择了哪一个Radio<br />&lt;HTML&gt;&lt;script language="vbscript"&gt;<br />function checkme()<br />for each ob in radio1<br />if ob.checked then window.alert ob.value<br />next<br />end function<br />&lt;/script&gt;&lt;BODY&gt;<br />&lt;INPUT name="radio1" type="radio" value="style" checked&gt;Style<br />&lt;INPUT name="radio1" type="radio" value="barcode"&gt;Barcode<br />&lt;INPUT type="button" value="check" onclick="checkme()"&gt;<br />&lt;/BODY&gt;&lt;/HTML&gt;</p><p>34.脚本永不出错<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt; <br />&lt;!-- Hide <br />function killErrors() { <br />return true; <br />} <br />window.onerror = killErrors; <br />// --&gt; <br />&lt;/SCRIPT&gt;</p><p>35.ENTER键可以让光标移到下一个输入框<br />&lt;input onkeydown="if(event.keyCode==13)event.keyCode=9"&gt;</p><p>36. 检测某个网站的链接速度：<br />把如下代码加入&lt;body&gt;区域中:<br />&lt;script language=Javascript&gt;<br />tim=1<br />setInterval("tim++",100)<br />b=1<br />var autourl=new Array()<br />autourl[1]="<font color="#002c99">www.njcatv.net</font>"<br />autourl[2]="javacool.3322.net"<br />autourl[3]="<font color="#002c99">www.sina.com.cn</font>"<br />autourl[4]="<font color="#002c99">www.nuaa.edu.cn</font>"<br />autourl[5]="<font color="#002c99">www.cctv.com</font>"<br />function butt(){<br />document.write("&lt;form name=autof&gt;")<br />for(var i=1;i&lt;autourl.length;i++)<br />document.write("&lt;input type=text name=txt"+i+" size=10 value=测试中……&gt; =》&lt;input type=text <br />name=url"+i+" size=40&gt; =》&lt;input type=button value=GO </p><p>onclick=window.open(this.form.url"+i+".value)&gt;&lt;br&gt;")<br />document.write("&lt;input type=submit value=刷新&gt;&lt;/form&gt;")<br />}<br />butt()<br />function auto(url){<br />document.forms[0]["url"+b].value=url<br />if(tim&gt;200)<br />{document.forms[0]["txt"+b].value="链接超时"}<br />else<br />{document.forms[0]["txt"+b].value="时间"+tim/10+"秒"}<br />b++<br />}<br />function run(){for(var i=1;i&lt;autourl.length;i++)document.write("&lt;img src=http://"+autourl+"/"+Math.random()+" width=1 height=1 </p><p>onerror=auto("<font color="#002c99">http://"+autourl</font>+"")&gt;")}<br />run()&lt;/script&gt;</p><p>37. 各种样式的光标<br />auto ：标准光标<br />default ：标准箭头<br />hand ：手形光标<br />wait ：等待光标<br />text ：I形光标<br />vertical-text ：水平I形光标<br />no-drop ：不可拖动光标<br />not-allowed ：无效光标<br />help ：?帮助光标<br />all-scroll ：三角方向标<br />move ：移动标<br />crosshair ：十字标<br />e-resize<br />n-resize<br />nw-resize<br />w-resize<br />s-resize<br />se-resize<br />sw-resize<br /></p><p>38.页面进入和退出的特效<br />进入页面&lt;meta http-equiv="Page-Enter" content="revealTrans(duration=x, transition=y)"&gt;<br />推出页面&lt;meta http-equiv="Page-Exit" content="revealTrans(duration=x, transition=y)"&gt;  <br />这个是页面被载入和调出时的一些特效。duration表示特效的持续时间，以秒为单位。transition表示使用哪种特效，取值为1-23:<br />　　0 矩形缩小 <br />　　1 矩形扩大 <br />　　2 圆形缩小<br />　　3 圆形扩大 <br />　　4 下到上刷新 <br />　　5 上到下刷新<br />　　6 左到右刷新 <br />　　7 右到左刷新 <br />　　8 竖百叶窗<br />　　9 横百叶窗 <br />　　10 错位横百叶窗 <br />　　11 错位竖百叶窗<br />　　12 点扩散 <br />　　13 左右到中间刷新 <br />　　14 中间到左右刷新<br />　　15 中间到上下<br />　　16 上下到中间 <br />　　17 右下到左上<br />　　18 右上到左下 <br />　　19 左上到右下 <br />　　20 左下到右上<br />　　21 横条 <br />　　22 竖条 <br />　　23 以上22种随机选择一种</p><p>39.在规定时间内跳转<br />&lt;META http-equiv=V="REFRESH" content="5;URL=http://www.51js.com"&gt; </p><p>40.网页是否被检索<br />&lt;meta name="ROBOTS" content="属性值"&gt;<br />　　其中属性值有以下一些:<br />　　属性值为"all": 文件将被检索，且页上链接可被查询；<br />　　属性值为"none": 文件不被检索，而且不查询页上的链接；<br />　　属性值为"index": 文件将被检索；<br />　　属性值为"follow": 查询页上的链接；<br />　　属性值为"noindex": 文件不检索，但可被查询链接；<br />　　属性值为"nofollow": 文件不被检索，但可查询页上的链接。</p></span>
		</div>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/69522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2006-09-14 08:27 <a href="http://www.blogjava.net/liaojiyong/archive/2006/09/14/69522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 Google Web Toolkit 开发 Ajax(转)</title><link>http://www.blogjava.net/liaojiyong/archive/2006/07/25/59980.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Tue, 25 Jul 2006 05:26:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2006/07/25/59980.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/59980.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2006/07/25/59980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/59980.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/59980.html</trackback:ping><description><![CDATA[
		<p>Ajax技术是当前开发web应用的非常热门的技术，也是Web 2.0的一个重要的组成部分。然而如果用传统的方式Javascript进行Ajax开发的话，就会使得应用程序非常难以进行调试，从而降低了生产效率。Google最近推出的GWT有望为我们解决这个难题，GWT是一个开发Ajax应用的框架，它使程序员用Java同时开发客户端和服务器端的代码。GWT的编译器会把用于开发客户端的Java代码转化成Javascript和Html，而程序员不用关心这一转换过程。这样程序员就可以在自己喜欢的Java IDE里面开发自己的Ajax应用程序。</p>
		<p>本文主要从以下几个方面进行介绍：</p>
		<p>1、 GWT特性简介</p>
		<p>2、 用GWT进行UI开发</p>
		<p>3、 用Javascript开发Ajax应用简介</p>
		<p>4、 用GWT进行Ajax开发</p>
		<p>
				<a name="N10080">
						<span class="atitle">
								<strong>
										<font size="4">GWT特性简介</font>
								</strong>
						</span>
				</a>
		</p>
		<p>1．动态，可重用的UI组件</p>
		<p>GWT提供的组件库使用户可以很容易的开发出漂亮的UI, 每个组件对应于GWT的一个类。在本文的第二部分会比较详细的介绍GWT对UI的支持。</p>
		<p>2．简单的RPC调用</p>
		<p>使用GWT，可以方便的实现客户端和服务器端的通信，特别是使得异步通信变的非常简单。在本文的后面部分将对利用GWT进行RPC调用进行详细介绍。</p>
		<p>3．更加方便的调试</p>
		<p>由于在开发阶段不需要生成HTML截面，用户开发的代码实际上是在JVM上运行的，这样用户就可以用传统的调试Java代码的方法对程序进行调试，从而加快了调试的速度，减少了软件开发的时间。</p>
		<p>4．浏览器兼容性</p>
		<p>在大多数情况下，用GWT开发出来的程序会支持IE、Firefox、Mozilla、Safari和Opera，用户在开发的时候不必担心浏览器的兼容性问题。而浏览器的兼容性问题也是用直接用Javascript进行Ajax应用开发所面临的一个另程序员棘手问题。</p>
		<p>5．可扩展性</p>
		<p>如果你觉得GWT提供的API不能满足需求，你可以利用JSNI将Javascript语句直接嵌入至Java代码中。 </p>
		<p>
				<a name="N100A4">
						<span class="atitle">
								<strong>
										<font size="4">用GWT进行UI开发</font>
								</strong>
						</span>
				</a>
		</p>
		<p>在本文的这一部分，我们将探讨一下GWT对UI开发的支持。在GWT中，包含我们进行Web开发所需要的大部分组件，比如按纽(Button)，文本框（Text box）等。图一显示了部分GWT所支持的UI组件。从图片的显示效果来看，利用GWT可以做出非常漂亮的UI。</p>
		<p>
				<br />
				<a name="N100AF">
						<strong>图一：GWT支持的部分UI组件</strong>
				</a>
				<br />
				<img height="435" alt="图一：GWT支持的部分UI组件" src="http://www-128.ibm.com/developerworks/cn/java/j-lo-gwt-dev/images/image002.jpg" width="554" border="0" />
				<br />
		</p>
		<p>值得一提的是，在每个UI组件是必须放在一个称之为面板（Panel）的控件里面。而面板具有不同的风格，这也决定了UI的风格。图二显示了GWT所支持的部分面板。</p>
		<p>
				<br />
				<a name="N100C4">
						<strong>图二：GWT支持的部分面板</strong>
				</a>
				<br />
				<img height="399" alt="图二：GWT支持的部分面板" src="http://www-128.ibm.com/developerworks/cn/java/j-lo-gwt-dev/images/image004.jpg" width="553" border="0" />
				<br />
		</p>
		<p>在看过这些组件之后，我们接下来用一个实验来讲述怎样把UI组件添加到页面上。这个实验的最终结果是一个登录框界面。</p>
		<p>在开始我们的实验之前，我们需要准备一下GWT环境，首先要到<a href="http://code.google.com/webtoolkit/download.html" target="_blank"><font color="#5c81a7">Google的网站</font></a>上去下载一个Windows版本的GWT，目前的版本号是1.0.21。然后要在机器上配置好JDK环境，具体的配置方法网络上有大量文档，这里就不再详细介绍。由于我们这个实验是在Eclipse开发环境下进行的，所以你还需要一个Eclipse的环境，可以到<a href="http://www.eclipse.org/" target="_blank"><font color="#5c81a7">Eclipse的官方网站</font></a>下载Eclipse的开发环境。接下来我们详细介绍试验过程。</p>
		<p>1． 创建Eclipse工程</p>
		<p>我们可以利用GWT自带的一个批处理文件projectCreator.cmd来创建Eclipse的工程。如图三所示，我们创建了一个名字为myProject的工程，存放在当前目录的myProject子目录下面，关于批处理文件projectCreator.cmd的详细用法，请参见Google关于<a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.Fundamentals.CommandLineTools.projectCreator.html" target="_blank"><font color="#5c81a7">GWT的帮助文档</font></a>。</p>
		<p>
				<br />
				<a name="N100EE">
						<strong>图三：用GWT创建Eclipse工程</strong>
				</a>
				<br />
				<img height="181" alt="图三：用GWT创建Eclipse工程" src="http://www-128.ibm.com/developerworks/cn/java/j-lo-gwt-dev/images/image006.jpg" width="553" border="0" />
				<br />
		</p>
		<p>2． 创建GWT应用程序</p>
		<p>在创建完Eclipse工程myProject之后，我们利用GWT自带的另外一个批处理文件applicationCreator.cmd来创建一个GWT应用程序。图四显示了创建一个GWT应用的过程。大家注意到这个批处理文件接受一个名为 -eclipse 的参数，这个参数正是指定了一个Eclipse的工程，我们的例子中指定为我们刚创建好的Eclipse工程myProject。</p>
		<p>
				<br />
				<a name="N10106">
						<strong>图四：创建GWT应用程序</strong>
				</a>
				<br />
				<img height="225" alt="图四：创建GWT应用程序" src="http://www-128.ibm.com/developerworks/cn/java/j-lo-gwt-dev/images/image008.jpg" width="554" border="0" />
				<br />
		</p>
		<p>3． 导入Eclipse工程</p>
		<p>在创建完Eclipse工程和GWT应用程序框架后，我们接着将Eclipse工程导入到Eclipse开发环境当中以进行进一步的开发，具体的导入过程不再详细介绍。导入后的工程结构如图五所示。</p>
		<p>
				<br />
				<a name="N1011E">
						<strong>图五：导入Eclipse工程</strong>
				</a>
				<br />
				<img height="322" alt="图五：导入Eclipse工程" src="http://www-128.ibm.com/developerworks/cn/java/j-lo-gwt-dev/images/image009.jpg" width="550" border="0" />
				<br />
		</p>
		<p>6．添加UI组件</p>
		<p>在导入工程后，我们会发现工程里面有一个名字为DemoClient的Java文件。这个文件是在运行applicationCreator.cmd批处理文件时创建的，我们现在需要做的工作就是在这个Java文件上加入自己需要的UI组件。我们在这个文件中加入了五个组件，分别是：两个Label，一个Button，一个TextBox和一个PasswordTextBox。代码列表Listing 1中列出了本程序的所有代码。</p>
		<p>
				<br />
				<a name="N10134">
						<strong>Listing 1：Sample GWT Application</strong>
				</a>
				<br />
		</p>
		<table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">
				<tbody>
						<tr>
								<td>
										<code>
												<pre class="section">1    package com.sample.myProject.client;

2    import com.google.gwt.core.client.EntryPoint;
3    import com.google.gwt.user.client.ui.Button;
4    import com.google.gwt.user.client.ui.HorizontalPanel;
5    import com.google.gwt.user.client.ui.Label;
6    import com.google.gwt.user.client.ui.PasswordTextBox;
7    import com.google.gwt.user.client.ui.RootPanel;
8    import com.google.gwt.user.client.ui.TextBox;

/**
 * This class is used to demostrate how to add widget onto the Web page
 */
9    public class DemoClient implements EntryPoint {
  /**
   * This is the entry point method, when the module is load, this method
   * will be automatically invoked.
   */
10	  public void onModuleLoad() {
11		    Label labelName = new Label();
12		    Label labelPassword = new Label();		    
13		    TextBox tbName = new TextBox();
14	PasswordTextBox tbPassword = new PasswordTextBox();
15	Button button = new Button();
16		    
17		    labelName.setText("Name:        ");
18		    labelPassword.setText("Password: ");
19		    button.setText("submit");
20		    
21		    HorizontalPanel hPanel = new HorizontalPanel();
22		    HorizontalPanel hPanel2 = new HorizontalPanel();
23		    
24		    hPanel.add(labelName);
25		    hPanel.add(tbName);
26		    hPanel2.add(labelPassword);
27		    hPanel2.add(tbPassword);
		    
28		    RootPanel.get().add(hPanel);
29		    RootPanel.get().add(hPanel2);
30		    RootPanel.get().add(button);
31		  }
32   }
</pre>
										</code>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>接下来我们分析一下这些程序代码，注意到类DemoClient继承自EntryPoint，所有需要最终被翻译成HTML页面的类都必须继承自EntryPoint，并且需要重写onModuleLoad方法，这个方法会在模块被装载的时候自动调用。因此我们也就需要把我们的添加组件的代码放到这个函数里面。</p>
		<p>程序的11至15行分别创建了5个组件的实例。分别是两个Label，一个Button，一个TextBox和一个PasswordTextBox。然后程序的17到19行分别设置了两个Label组件以及一个Button组件的显示内容。程序的21行和22行穿件两个Panel对象，这两个Panel对象的类型都是水平Panel对象。也就是说放在这种Panel里面的组件是被水平排列的。程序的24行到27行分别向这两个Panel对象中加入TextBox组件和Label组件。在程序的最后，将刚才创建好的两个Panel对象以及一个Button对象加到最外层的Panel当中。</p>
		<p>7．编译应用程序</p>
		<p>在代码开发完成后，我们可以双击工程里面的DemoClient-compile.cmd批处理文件来将我们开发出来Java文件编译成Javascript和HTML。编译后的文件将存放在工程的根目录下面的www子目录中。</p>
		<p>8．运行程序</p>
		<p>编译好程序后，我们会发现生成了一个名字为DemoClient.html的HTML文件，双击这个文件，程序的运行结果如图六所示：</p>
		<p>
				<br />
				<a name="N10152">
						<strong>图六：程序运行结果</strong>
				</a>
				<br />
				<img height="451" alt="图六：程序运行结果" src="http://www-128.ibm.com/developerworks/cn/java/j-lo-gwt-dev/images/image010.jpg" width="464" border="0" />
				<br />
		</p>
		<p>在这一部分，我们主要讨论了如何将UI组件添加到Web页面中，而这些组件如何与远程服务器进行异步的交互将在下面的章节中进行讨论。</p>
		<p>
				<a name="N10165">
						<span class="atitle">
								<strong>
										<font size="4">用Javascript开发Ajax应用</font>
								</strong>
						</span>
				</a>
		</p>
		<p>为了使用户能更清楚地理解用GWT开发Ajax应用与用传统的Javascript开发Ajax应用的不同，文章的这一部分将简要介绍如何利用Javascript对象进行Ajax应用的开发。</p>
		<p>大家都知道Ajax技术中的一个核心对象是XMLHttpRequest对象，这个对象支持异步请求，所谓异步请求既是当客户端发送一个请求到服务器的时候，客户端不必一直等待服务器的响应。这样就不会造成整个页面的刷新，给用户带来更好的体验。而当服务器端响应返回时，客户端利用一个Javascript函数对返回值进行处理，以更新页面上的部分元素的值。</p>
		<p>由于在IE和其他浏览器上声称XMLHttpRequest对象的方法不一样，所以我们用Javascript创建XMLHttpRequest对象的时候必须区分不同的浏览器。创建一个XMLHttpRequest对象的方法如清单2 中的代码所示。</p>
		<p>
				<br />
				<a name="N10174">
						<strong>清单2：创建XMLHttpRequest对象</strong>
				</a>
				<br />
		</p>
		<table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">
				<tbody>
						<tr>
								<td>
										<code>
												<pre class="section">1    function createObject(){
2     try {
3		  xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
4	  } catch (e1) {
5		  try {
6		    xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
7		  } catch (e2) {
8		    xmlHttpRequest = false;
9		  }
10	  }
11  if (!xmlHttpRequest) {
12		 xmlHttpRequest = new XMLHttpRequest();
13	  }
14	  return xmlHttpRequest;      
16  }
</pre>
										</code>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>在创建好XMLHttpRequest对象之后，来看一下如何与server端进行异步的交互。清单3中列出了与服务器段进行交互的代码</p>
		<p>
				<br />
				<a name="N10187">
						<strong>清单3：与服务器端进行交互</strong>
				</a>
				<br />
		</p>
		<table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">
				<tbody>
						<tr>
								<td>
										<code>
												<pre class="section">1    function ajaxSample() {
2        var xmlHttpRequest = createObject();
3        var url = "/sampleServlet?userName=Jason";
4        xmlHttpRequest.open("GET", url, true);
5        xmlHttpRequest.onreadystatechange = updatePage;
6        xmlHttpRequest.send(null);
7    }
</pre>
										</code>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>这段代码演示了如何与服务器端进行交互的过程。程序的第2行首先获得一个XMLHttpRequest对象，程序的第三行指定了服务器端响应客户端的请求的地址。程序的第4行利用XMLHttpRequest对象打开一个连接，第一个参数指定用GET方法传递参数，第二个参数指定了接受请求的URL，在我们的例子中是一个Servlet，最后一个参数设置成true意味着将要发出的请求是一个异步的请求。程序的第5行指定了回调函数，也就是当服务器端返回结果后执行哪个Javascript函数。</p>
		<p>这一部分对如何利用Javascript进行Ajax开发作了一个简要的介绍，下面我们将详细介绍如何利用GWT进行Ajax应用的开发。</p>
		<p>
				<a name="N1019D">
						<span class="atitle">
								<strong>
										<font size="4">用GWT进行Ajax开发</font>
								</strong>
						</span>
				</a>
		</p>
		<p>在文章的第二部分我们已经掌握了如何利用GWT创建一个工程并在工程里添加一个GWT应用程序，同样我们这一部分也需要创建一个GWT的工程，并添加一个GWT应用程序，由于默认创建的GWT程序不含有Server端的示例代码，我们必须手工加进去。我们创建好的工程GWTSample如图七所示。我们将要介绍的实例主要功能是采用异步通信的方式从服务器端取出一个字符串显示在HTML页面上。这个例子虽然简单，但却包含了如何利用GWT进行Ajax开发的主要流程。</p>
		<p>
				<br />
				<a name="N101A8">
						<strong>图七：GWTSample工程结构</strong>
				</a>
				<br />
				<img height="296" alt="图七：GWTSample工程结构" src="http://www-128.ibm.com/developerworks/cn/java/j-lo-gwt-dev/images/image011.jpg" width="543" border="0" />
				<br />
		</p>
		<p>大家注意到我们这个工程里面有个com.sample.myProject.server包，这个包里面包含有运行在服务器端的代码。我们从客户端发送的请求也是发送到这个包里面的一个Servlet上去的。</p>
		<p>为了进行异步调用，在Client端必须定义一个继承自接口RemoteService的接口，在我们的这个例子中，我们定义了接口SampleService，SampleService的代码如清单4所示。</p>
		<p>
				<br />
		</p>
		<table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">
				<tbody>
						<tr>
								<td>
										<code>
												<pre class="section">1    package com.sample.myProject.client;

2    import com.google.gwt.user.client.rpc.RemoteService;

3    public interface SampleService extends RemoteService{
4    //The implementation of this method is used to return a string
5    String getString();
6    }
</pre>
										</code>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>大家注意到这个接口继承自RemoteService，并且声明了一个方法getString();，这个方法会在服务器端的代码中实现。当然，大家可能现在已经意识到，这里声明的方法就是我们采用异步调用方式所能够调用的方法。</p>
		<p>在声明完这个接口之后，我们还必须声明另外一个异步调用接口，在我们的例子中是接口SampleServiceAsync，这个接口里声明的方法名称必须与SampleService里面的相同，但是多个一个类型为AsyncCallback的参数，接口SampleServiceAsync的代码清单如清单5所示：</p>
		<p>
				<br />
				<a name="N101CD">
						<strong>清单5：SampleServiceAsync代码清单</strong>
				</a>
				<br />
		</p>
		<table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">
				<tbody>
						<tr>
								<td>
										<code>
												<pre class="section">1    package com.sample.myProject.client;

2    import com.google.gwt.user.client.rpc.AsyncCallback;

3    public interface SampleServiceAsync {
	
4    void getString(AsyncCallback callback);
5	}
</pre>
										</code>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>在客户端定义完接口之后，我们必须在服务器端实现这个接口，在我们的例子中，类SampleServiceImpl实现了接口SampleService，同时你也会注意到SampleServiceImpl也继承了类RemoteServiceServlet，而RemoteServiceServlet是HttpServlet的一个子类，这样我们的客户端的请求就可以提交到Servlet SampleServiceImpl上面。类SampleServiceImpl的代码清单如清单6所示：</p>
		<p>
				<br />
				<a name="N101DA">
						<strong>清单6：SampleServiceImpl代码清单</strong>
				</a>
				<br />
		</p>
		<table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">
				<tbody>
						<tr>
								<td>
										<code>
												<pre class="section">1    package com.sample.myProject.server;

2    import com.google.gwt.user.server.rpc.RemoteServiceServlet;
3    import com.sample.myProject.client.SampleService;

4	public class SampleServiceImpl extends RemoteServiceServlet implements 
5	 SampleService {
6          public String getString() {
7         return "This string is from server";
8          }
9	}
</pre>
										</code>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>最后我们来看一下类DemoClient，这个类和我们在第二部分创建的工程myProject中的类DemoClient是同一个类型的。只不过在我们这个工程中我们使用它来进行向server端的异步调用。清单7列出了类DemoClient的代码。</p>
		<p>
				<br />
				<a name="N101E7">
						<strong>清单7：DemoClient代码清单</strong>
				</a>
				<br />
		</p>
		<table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">
				<tbody>
						<tr>
								<td>
										<code>
												<pre class="section">1    package com.sample.myProject.client;

2    import com.google.gwt.core.client.EntryPoint;
3    import com.google.gwt.core.client.GWT;
4    import com.google.gwt.user.client.rpc.AsyncCallback;
5    import com.google.gwt.user.client.rpc.ServiceDefTarget;
6    import com.google.gwt.user.client.ui.Button;
7    import com.google.gwt.user.client.ui.ClickListener;
8    import com.google.gwt.user.client.ui.Label;
9    import com.google.gwt.user.client.ui.RootPanel;
10   import com.google.gwt.user.client.ui.Widget;

/**
 * This class is used to demostrate hwo to 
 * interact with the server client in asynchronized
 * way
 */
11   public class DemoClient implements EntryPoint {

12       public void onModuleLoad() {
13	final SampleServiceAsync sampleService = (SampleServiceAsync) 
14	 GWT.create(SampleService.class);
15        ServiceDefTarget target = (ServiceDefTarget)sampleService;
16        String staticResponseURL = GWT.getModuleBaseURL();
17        staticResponseURL += "/getStringService";
18        target.setServiceEntryPoint(staticResponseURL);
19        
20        final Label label = new Label();
21        final Button button = new Button("Get String");
        
22        button.addClickListener(new ClickListener() {
23            public void onClick(Widget sender) {
24                sampleService.getString(new AsyncCallback() {
25                    public void onSuccess(Object result) {
26                        label.setText((String) result);
27                    }
28                    public void onFailure(Throwable caught) {
29                        label.setText(caught.getMessage());
30                    }
31                });
32            }
33        });

34        RootPanel.get("1").add(button);
35        RootPanel.get("2").add(label);
36    }
37}
</pre>
										</code>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>代码的第13行得到了一个实现了接口SampleServiceAsync的类的实例。第15行创建了一个ServiceDefTarget对象的一个实例，通过这个对象可以设置请求的目的地。程序的第18行设置了请求的目的地的URL，在我们的例子中是"/getStringService"，这个URL会在web.xml文件中被mapping到servlet SampleServiceImpl上。程序的22行到33行为我们添加的button设置了单击响应事件。在单击响应事件中调用sampleService的getString(AsyncCallback callback);方法。这个方法是用来进行异步的远程过程调用的(RPC).并且在实现接口AsyncCallback的代码中指定了回调函数，当远程过程调用成功后就执行onSuccess(Object result)函数，其中result中存放有从服务器端返回的结果.。在远程工程调用失败后就执行onFailure(Throwable caught)函数。程序的最后把Button组件和Label组件加到panel中。</p>
		<p>现在我们已经完成了程序的开发，图八显示了我们程序的运行结果，在点击Button后，右边回打出一句话来，重要的是这句话是以异步的方式从服务器端取得的，不需要进行页面的刷新，怎么样，现在是不是也想用GWT进行Ajax应用开发了呢？</p>
		<p>
				<br />
				<a name="N101F9">
						<strong>图八：RPC调用示例</strong>
				</a>
				<br />
				<img height="448" alt="图八：RPC调用示例" src="http://www-128.ibm.com/developerworks/cn/java/j-lo-gwt-dev/images/image012.jpg" width="451" border="0" />
		</p>
		<p>
				<a name="N10209">
						<span class="atitle">
								<strong>
										<font size="4">总结</font>
								</strong>
						</span>
				</a>
		</p>
		<p>本文主要对用 GWT 进行 Ajax 开发进行了比较详细的介绍，并通过与传统的Ajax开发方式进行比较，使读者能更清楚地理解它们之间的区别，最后我们可以看出用GWT进行Ajax开发可以使得程序员免受调试Javascript之苦，并且GWT自动处理了浏览器之间的兼容性问题，这些都会使得开发更加容易，快捷。因此，用GWT进行Ajax开发是一种比较好的方式。希望本文能为读者学习GWT进行Ajax的开发有所帮助。</p>
		<p>
				<span class="atitle">
						<a name="download">
								<strong>
										<font size="4">下载</font>
								</strong>
						</a>
				</span>
		</p>
		<p>
		</p>
		<table class="data-table-1" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td nowrap="">GWTSample_Project.rar</td>
								<td style="TEXT-ALIGN: right" nowrap="">8KB</td>
								<td nowrap="">
										<a class="fbox" href="http://www-128.ibm.com/developerworks/cn/java/j-lo-gwt-dev/GWTSample_Project.rar" target="_blank">
												<strong>
														<font face="Verdana" color="#5c81a7">HTTP</font>
												</strong>
										</a>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
<img src ="http://www.blogjava.net/liaojiyong/aggbug/59980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2006-07-25 13:26 <a href="http://www.blogjava.net/liaojiyong/archive/2006/07/25/59980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript常用到的一些方法（转）</title><link>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59825.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Mon, 24 Jul 2006 07:36:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59825.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/59825.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59825.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/59825.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/59825.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: function				 openBigWin(temUrl)																								{ 						var						 Wid; 						var						 Hei; 						var						 Type; Wid						=						700						; Hei						=						50...&nbsp;&nbsp;<a href='http://www.blogjava.net/liaojiyong/archive/2006/07/24/59825.html'>阅读全文</a><img src ="http://www.blogjava.net/liaojiyong/aggbug/59825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2006-07-24 15:36 <a href="http://www.blogjava.net/liaojiyong/archive/2006/07/24/59825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>客户端表单通用验证CheckForm （转）</title><link>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59824.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Mon, 24 Jul 2006 07:31:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59824.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/59824.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59824.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/59824.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/59824.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: /**/														/*								 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ***                    客户端表单通用验证CheckForm(oForm)**   功能:通用验证所有的表单元素.**   使用:*   &lt;script lang...&nbsp;&nbsp;<a href='http://www.blogjava.net/liaojiyong/archive/2006/07/24/59824.html'>阅读全文</a><img src ="http://www.blogjava.net/liaojiyong/aggbug/59824.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2006-07-24 15:31 <a href="http://www.blogjava.net/liaojiyong/archive/2006/07/24/59824.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax巨好用,4级级联菜单的解决 （转）</title><link>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59821.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Mon, 24 Jul 2006 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59821.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/59821.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59821.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/59821.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/59821.html</trackback:ping><description><![CDATA[
		<div class="postTitle"> </div>
		<div class="postText">为解决省、市、区、区域4级级联菜单，在网上搜索了大量的级联菜单解决方案，也请教过不少朋友，要么过于复杂，要么过于占内存，未果。<br /><br />在建议下，悉心读《ajax基础教程》4余遍，方有与ajax相识恨晚之感，唯一的感慨就是好用好用绝对好用。<br /><br />现在把已经可以正常运行的例子的核心代码分享：<br />客户端ajax代码如下：<br /><div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">script type</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">text/javascript</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        var xmlHttp;<br />        var domainId;<br />        var type;<br />        <br />        function refreshList(typesource) {<br />            createXMLHttpRequest();<br />            type </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> typesource;<br />            </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)"> (</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">p</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">==</span><span style="COLOR: rgb(0,0,0)"> type) {<br />                getSelectedId(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">province_select</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />            } </span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">c</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">==</span><span style="COLOR: rgb(0,0,0)"> type) {<br />                getSelectedId(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">city_select</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />            } </span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">s</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">==</span><span style="COLOR: rgb(0,0,0)"> type) {<br />                getSelectedId(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">section_select</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />            } <br />            var url </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">enterpriseManage2.html?method=retrieve&amp;ts=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">+</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">new</span><span style="COLOR: rgb(0,0,0)"> Date().getTime();<br />            var queryStr </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">domainId=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">+</span><span style="COLOR: rgb(0,0,0)"> domainId;<br />            alert(queryStr);<br />            xmlHttp.onreadystatechange</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">handleStateChange;<br />            xmlHttp.open(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">POST</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">, url);<br />            xmlHttp.setRequestHeader(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">Content-Type</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">,</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">application/x-www-form-urlencoded;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />            xmlHttp.send(queryStr);<br />        }<br />        <br />        function handleStateChange() {<br />            </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)"> (xmlHttp.readyState </span><span style="COLOR: rgb(0,0,0)">==</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">4</span><span style="COLOR: rgb(0,0,0)">) {<br />                </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)"> (xmlHttp.status </span><span style="COLOR: rgb(0,0,0)">==</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">200</span><span style="COLOR: rgb(0,0,0)">) {<br />                    updateList();<br />                }<br />            }<br />         }<br />         <br />         function getSelectedId(elementId) {<br />             alert(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">elementId: </span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">+</span><span style="COLOR: rgb(0,0,0)"> elementId);<br />             </span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)">var selectedId = null;</span><span style="COLOR: rgb(0,128,0)"><br /></span><span style="COLOR: rgb(0,0,0)">             var options </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> document.getElementById(elementId).childNodes;<br />             var option </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">null</span><span style="COLOR: rgb(0,0,0)">;<br />             </span><span style="COLOR: rgb(0,0,255)">for</span><span style="COLOR: rgb(0,0,0)"> (var i </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">, n </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> options.length; i </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)"> n; i</span><span style="COLOR: rgb(0,0,0)">++</span><span style="COLOR: rgb(0,0,0)">) {<br />                 option </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> options[i];<br />                 </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)"> (option.selected) {<br />                     domainId </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> option.value;<br />                     </span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)">return selectedId;</span><span style="COLOR: rgb(0,128,0)"><br /></span><span style="COLOR: rgb(0,0,0)">                 }<br />             }<br />         }<br />         <br />         function updateList() {<br />             alert(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">type: </span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">+</span><span style="COLOR: rgb(0,0,0)"> type);<br />             </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)"> (</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">p</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">==</span><span style="COLOR: rgb(0,0,0)"> type) {<br />                 var select </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> document.getElementById(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">city_select</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />                <font color="#cc0000"> <font color="#ff0000">var options </font></font></span><font color="#ff0000"><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> xmlHttp.responseXML.getElementsByTagName(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">domain</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);</span></font><span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(0,128,0)"><br /></span><span style="COLOR: rgb(0,0,0)">                 </span><span style="COLOR: rgb(0,0,255)">for</span><span style="COLOR: rgb(0,0,0)"> (var i </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">, n </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> options.length; i </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)"> n; i</span><span style="COLOR: rgb(0,0,0)">++</span><span style="COLOR: rgb(0,0,0)">) {<br />                     select.appendChild(createElementWithValue(options[i]));<br />                 }<br />             } </span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">c</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">==</span><span style="COLOR: rgb(0,0,0)"> type) {<br />                 var select </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> document.getElementById(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">section_select</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />                 var options </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> xmlHttp.responseXML.getElementsByTagName(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">domain</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);</span><span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(0,128,0)"><br /></span><span style="COLOR: rgb(0,0,0)">                 </span><span style="COLOR: rgb(0,0,255)">for</span><span style="COLOR: rgb(0,0,0)"> (var i </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">, n </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> options.length; i </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)"> n; i</span><span style="COLOR: rgb(0,0,0)">++</span><span style="COLOR: rgb(0,0,0)">) {<br />                     select.appendChild(createElementWithValue(options[i]));<br />                 }    <br />             } </span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">s</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">==</span><span style="COLOR: rgb(0,0,0)"> type) {<br />                 var select </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> document.getElementById(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">appointDomain</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />                 var options </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> xmlHttp.responseXML.getElementsByTagName(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">domain</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />                 </span><span style="COLOR: rgb(0,0,255)">for</span><span style="COLOR: rgb(0,0,0)"> (var i </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">, n </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> options.length; i </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)"> n; i</span><span style="COLOR: rgb(0,0,0)">++</span><span style="COLOR: rgb(0,0,0)">) {<br />                     select.appendChild(createElementWithValue(options[i]));<br />                 }    <br />             }<br />         }</span><span style="COLOR: rgb(0,0,0)"><br />         <br />         function createElementWithValue(text) {<br />             var element </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> document.createElement(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">option</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />             element.setAttribute(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">value</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">, text.getAttribute(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">id</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">));<br />             var text </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> document.createTextNode(text.firstChild.nodeValue);<br />             element.appendChild(text);<br />             </span><span style="COLOR: rgb(0,0,255)">return</span><span style="COLOR: rgb(0,0,0)"> element;<br />         }<br />        <br />        function createXMLHttpRequest() {<br />            </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(window.XMLHttpRequest) { </span><span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(0,128,0)"><br /></span><span style="COLOR: rgb(0,0,0)">                    xmlHttp </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">new</span><span style="COLOR: rgb(0,0,0)"> XMLHttpRequest();<br />                } </span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)"> (window.ActiveXObject) { </span><span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(0,128,0)"><br /></span><span style="COLOR: rgb(0,0,0)">                    </span><span style="COLOR: rgb(0,0,255)">try</span><span style="COLOR: rgb(0,0,0)"> {<br />                        xmlHttp </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">new</span><span style="COLOR: rgb(0,0,0)"> ActiveXObject(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">Msxml2.XMLHTTP</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />                    } </span><span style="COLOR: rgb(0,0,255)">catch</span><span style="COLOR: rgb(0,0,0)"> (e) {<br />                        </span><span style="COLOR: rgb(0,0,255)">try</span><span style="COLOR: rgb(0,0,0)"> {<br />                            xmlHttp </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">new</span><span style="COLOR: rgb(0,0,0)"> ActiveXObject(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">Microsoft.XMLHTTP</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />                        } </span><span style="COLOR: rgb(0,0,255)">catch</span><span style="COLOR: rgb(0,0,0)"> (e) {<br />                        }<br />                    }<br />                }<br />        }</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">script</span><span style="COLOR: rgb(0,0,0)">&gt;</span></div><br /><br />页面调用处代码如下：<br /><div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">td align</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">left</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">class</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">list_content</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> width</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">75%</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    省<br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">select id</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">province_select</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> name</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">province_select</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> onchange</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">refreshList('p');</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"> <br />         </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">option value</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">""</span><span style="COLOR: rgb(0,0,0)"> SELECTED</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">请选择</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">option</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />             </span><span style="COLOR: rgb(0,0,0)">&lt;%</span><span style="COLOR: rgb(0,0,0)"><br />                java.util.Iterator it </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> ((java.util.List)request.getAttribute(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">province_options</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">)).iterator();<br />                </span><span style="COLOR: rgb(0,0,255)">while</span><span style="COLOR: rgb(0,0,0)"> (it.hasNext()) {<br />                    Province province </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> (Province)it.next();<br />              </span><span style="COLOR: rgb(0,0,0)">%&gt;</span><span style="COLOR: rgb(0,0,0)"><br />              </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">option value</span><span style="COLOR: rgb(0,0,0)">=&lt;%=</span><span style="COLOR: rgb(0,0,0)">province.getId()</span><span style="COLOR: rgb(0,0,0)">%&gt;&gt;&lt;%=</span><span style="COLOR: rgb(0,0,0)">province.getName()</span><span style="COLOR: rgb(0,0,0)">%&gt;&lt;/</span><span style="COLOR: rgb(0,0,0)">option</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />              </span><span style="COLOR: rgb(0,0,0)">&lt;%<br /></span><span style="COLOR: rgb(0,0,0)">                 }<br />              </span><span style="COLOR: rgb(0,0,0)">%&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">select</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    市<br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">select id</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">city_select</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> name</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">city_select</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> onchange</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">refreshList('c');</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">       </span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,0)"><br /></span><span style="COLOR: rgb(0,0,0)">         </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">option value</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">""</span><span style="COLOR: rgb(0,0,0)"> SELECTED</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">请选择</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">option</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">select</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    区<br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">select id</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">section_select</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> name</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">section_select</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> onchange</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">refreshList('s');</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"> <br />         </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">option value</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">""</span><span style="COLOR: rgb(0,0,0)"> SELECTED</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">请选择</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">option</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">select</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    区域<br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">select id</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">appointDomain</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> name</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">appointDomain</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"> <br />         </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">option value</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">""</span><span style="COLOR: rgb(0,0,0)"> SELECTED</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">请选择</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">option</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">select</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">td</span><span style="COLOR: rgb(0,0,0)">&gt;</span></div><br /><br />服务器端action（Struts）代码如下：<br /><div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,128,128)"> 1</span> <span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,0)"> ActionForward retrieve(ActionMapping mapping, ActionForm actionForm,<br /></span><span style="COLOR: rgb(0,128,128)"> 2</span> <span style="COLOR: rgb(0,0,0)">            HttpServletRequest request, HttpServletResponse response) {<br /></span><span style="COLOR: rgb(0,128,128)"> 3</span> <span style="COLOR: rgb(0,0,0)">        String domainId </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> request.getParameter(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">domainId</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)"> 4</span> <span style="COLOR: rgb(0,0,0)">        DomainFactory factory </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> DomainFactory.getInstance();<br /></span><span style="COLOR: rgb(0,128,128)"> 5</span> <span style="COLOR: rgb(0,0,0)">        Object domain </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> factory.getDomain(domainId);<br /></span><span style="COLOR: rgb(0,128,128)"> 6</span> <span style="COLOR: rgb(0,0,0)">        StringBuffer responseXML </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">new</span><span style="COLOR: rgb(0,0,0)"> StringBuffer(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;domains&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)"> 7</span> <span style="COLOR: rgb(0,0,0)">        </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(domain </span><span style="COLOR: rgb(0,0,255)">instanceof</span><span style="COLOR: rgb(0,0,0)"> Province) {<br /></span><span style="COLOR: rgb(0,128,128)"> 8</span> <span style="COLOR: rgb(0,0,0)">            Province province </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> (Province)domain;<br /></span><span style="COLOR: rgb(0,128,128)"> 9</span> <span style="COLOR: rgb(0,0,0)">            Iterator it </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> province.getCities().iterator();<br /></span><span style="COLOR: rgb(0,128,128)">10</span> <span style="COLOR: rgb(0,0,0)">            </span><span style="COLOR: rgb(0,0,255)">while</span><span style="COLOR: rgb(0,0,0)"> (it.hasNext()) {<br /></span><span style="COLOR: rgb(0,128,128)">11</span> <span style="COLOR: rgb(0,0,0)">                City city </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> (City)it.next();<br /></span><span style="COLOR: rgb(0,128,128)">12</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;domain</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)">13</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> id='</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">+</span><span style="COLOR: rgb(0,0,0)"> city.getId());<br /></span><span style="COLOR: rgb(0,128,128)">14</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">'&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)">15</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(city.getName());<br /></span><span style="COLOR: rgb(0,128,128)">16</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;/domain&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)">17</span> <span style="COLOR: rgb(0,0,0)">            }<br /></span><span style="COLOR: rgb(0,128,128)">18</span> <span style="COLOR: rgb(0,0,0)">        } </span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(domain </span><span style="COLOR: rgb(0,0,255)">instanceof</span><span style="COLOR: rgb(0,0,0)"> City) {<br /></span><span style="COLOR: rgb(0,128,128)">19</span> <span style="COLOR: rgb(0,0,0)">            City city </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> (City)domain;<br /></span><span style="COLOR: rgb(0,128,128)">20</span> <span style="COLOR: rgb(0,0,0)">            Iterator it </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> city.getSections().iterator();<br /></span><span style="COLOR: rgb(0,128,128)">21</span> <span style="COLOR: rgb(0,0,0)">            </span><span style="COLOR: rgb(0,0,255)">while</span><span style="COLOR: rgb(0,0,0)"> (it.hasNext()) {<br /></span><span style="COLOR: rgb(0,128,128)">22</span> <span style="COLOR: rgb(0,0,0)">                Section section </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> (Section)it.next();<br /></span><span style="COLOR: rgb(0,128,128)">23</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;domain</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)">24</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> id='</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">+</span><span style="COLOR: rgb(0,0,0)"> section.getId());<br /></span><span style="COLOR: rgb(0,128,128)">25</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">'&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)">26</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(section.getName());<br /></span><span style="COLOR: rgb(0,128,128)">27</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;/domain&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)">28</span> <span style="COLOR: rgb(0,0,0)">            }<br /></span><span style="COLOR: rgb(0,128,128)">29</span> <span style="COLOR: rgb(0,0,0)">        } </span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)"> (domain </span><span style="COLOR: rgb(0,0,255)">instanceof</span><span style="COLOR: rgb(0,0,0)"> Section) {<br /></span><span style="COLOR: rgb(0,128,128)">30</span> <span style="COLOR: rgb(0,0,0)">            Section section </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> (Section)domain;<br /></span><span style="COLOR: rgb(0,128,128)">31</span> <span style="COLOR: rgb(0,0,0)">            Iterator it </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> section.getRegions().iterator();<br /></span><span style="COLOR: rgb(0,128,128)">32</span> <span style="COLOR: rgb(0,0,0)">            </span><span style="COLOR: rgb(0,0,255)">while</span><span style="COLOR: rgb(0,0,0)"> (it.hasNext()) {<br /></span><span style="COLOR: rgb(0,128,128)">33</span> <span style="COLOR: rgb(0,0,0)">                Region region </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> (Region)it.next();<br /></span><span style="COLOR: rgb(0,128,128)">34</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;domain</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)">35</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> id='</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">+</span><span style="COLOR: rgb(0,0,0)"> region.getId());<br /></span><span style="COLOR: rgb(0,128,128)">36</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">'&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)">37</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(region.getName());<br /></span><span style="COLOR: rgb(0,128,128)">38</span> <span style="COLOR: rgb(0,0,0)">                responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;/domain&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)">39</span> <span style="COLOR: rgb(0,0,0)">            }<br /></span><span style="COLOR: rgb(0,128,128)">40</span> <span style="COLOR: rgb(0,0,0)">        } <br /></span><span style="COLOR: rgb(0,128,128)">41</span> <span style="COLOR: rgb(0,0,0)">        responseXML.append(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;/domains&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)">42</span> <span style="COLOR: rgb(0,0,0)">        response.setContentType(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">text/xml</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br /></span><span style="COLOR: rgb(0,128,128)">43</span> <span style="COLOR: rgb(0,0,0)">        </span><span style="COLOR: rgb(0,0,255)">try</span><span style="COLOR: rgb(0,0,0)"> {<br /></span><span style="COLOR: rgb(0,128,128)">44</span> <span style="COLOR: rgb(0,0,0)">            PrintWriter out </span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)"> (PrintWriter)response.getWriter();<br /></span><span style="COLOR: rgb(0,128,128)">45</span> <span style="COLOR: rgb(0,0,0)">            out.write(responseXML.toString());<br /></span><span style="COLOR: rgb(0,128,128)">46</span> <span style="COLOR: rgb(0,0,0)">            System.out.println(responseXML.toString());<br /></span><span style="COLOR: rgb(0,128,128)">47</span> <span style="COLOR: rgb(0,0,0)">            </span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)">out.flush();</span><span style="COLOR: rgb(0,128,0)"><br /></span><span style="COLOR: rgb(0,128,128)">48</span> <span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(0,0,0)">        } </span><span style="COLOR: rgb(0,0,255)">catch</span><span style="COLOR: rgb(0,0,0)"> (IOException e) {<br /></span><span style="COLOR: rgb(0,128,128)">49</span> <span style="COLOR: rgb(0,0,0)">            </span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)">do nothing</span><span style="COLOR: rgb(0,128,0)"><br /></span><span style="COLOR: rgb(0,128,128)">50</span> <span style="COLOR: rgb(0,128,0)"></span><span style="COLOR: rgb(0,0,0)">            e.printStackTrace();<br /></span><span style="COLOR: rgb(0,128,128)">51</span> <span style="COLOR: rgb(0,0,0)">        }<br /></span><span style="COLOR: rgb(0,128,128)">52</span> <span style="COLOR: rgb(0,0,0)">        </span><span style="COLOR: rgb(0,0,255)">return</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">null</span><span style="COLOR: rgb(0,0,0)">;<br /></span><span style="COLOR: rgb(0,128,128)">53</span> <span style="COLOR: rgb(0,0,0)">    }</span></div><br /><br />附注：这里用jsp或者servlet都可行。今天还看到一个朋友在dearbook上问某书的示例为啥不用Servlet而用JSP，<br /><span id="__grd1__"><br />问题如下：读第*章,发现XMLHttpRequest.open(method,url,true)中的url请求的都是jsp，然后由jsp再调用处理方法，然后再out.print().不能直接发送请求到servlet让servlet处理再out.print()？疑惑...?<br /><br />我的观点：</span>jsp的调用和out打印与servlet本质上是一致的；如果采用servlet从理论上更说得过去，但是对于示例未必最佳，毕竟jsp只要放在web容器的某个应用下就ok；如果是servlet则需要配置；对于一本讲述概要而不是深入讨论最佳实践的书，我觉得作者的不足是没有提到其它可行方案或者解释为啥通过这个方式来示例；对于读者来说，应该产生这个疑问，并且该弄明白为啥这么干<br /><br />声明:<br />本例子在firefox下完全正常运行;<br />在IE下运行到<font color="#ff0000">红色标记<font color="#000000">处得到的对象的个数居然是0;严重疑惑中,希望得到朋友们的指点.....</font></font></div>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/59821.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2006-07-24 15:27 <a href="http://www.blogjava.net/liaojiyong/archive/2006/07/24/59821.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>运用ajax技术的树型菜单（转）</title><link>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59817.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Mon, 24 Jul 2006 07:24:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59817.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/59817.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2006/07/24/59817.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/59817.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/59817.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 树型菜单可以说是项目中应用最为广泛的运用。以前无论使用微软控件的树型，还是比较优秀的阿赖树型，都是将数据全部读出，然后再分级显示。这样如果数据量大，那么第一次显示将需要客户等待很长一段时间，降低了客户的体验度。如今使用ajax，事情变得简单了。		   此运用参考了《征服web2.0开发技术详解》的例子。		   我使用的平台是struts+spring+hibernate，但与ajax打...&nbsp;&nbsp;<a href='http://www.blogjava.net/liaojiyong/archive/2006/07/24/59817.html'>阅读全文</a><img src ="http://www.blogjava.net/liaojiyong/aggbug/59817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2006-07-24 15:24 <a href="http://www.blogjava.net/liaojiyong/archive/2006/07/24/59817.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Web Toolkit（翻译）</title><link>http://www.blogjava.net/liaojiyong/archive/2006/07/21/59312.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 20 Jul 2006 17:31:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2006/07/21/59312.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/59312.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2006/07/21/59312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/59312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/59312.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Google Web Toolkit(翻译)						原文出处：XML.comhttp://www.xml.com/pub/a/2006/07/12/google-web-toolkit-ajax-java-ant-xml.html翻译：刘嘉晗 http://www.blogjava.net/johnlauGoogle Web ToolkitBy Bruce Perry2006年7月12...&nbsp;&nbsp;<a href='http://www.blogjava.net/liaojiyong/archive/2006/07/21/59312.html'>阅读全文</a><img src ="http://www.blogjava.net/liaojiyong/aggbug/59312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2006-07-21 01:31 <a href="http://www.blogjava.net/liaojiyong/archive/2006/07/21/59312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax技术基础</title><link>http://www.blogjava.net/liaojiyong/archive/2006/05/26/48269.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Fri, 26 May 2006 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2006/05/26/48269.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/48269.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2006/05/26/48269.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/48269.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/48269.html</trackback:ping><description><![CDATA[ajax技术是采用javascript作为客户端实现的语言，xml作为其通讯的机制，因此有人将ajax描述为：ajax=javascript+xml是很有道理的．ajax的最大优点就是异步处理，相对于以往的web技术采用的请求全刷新机制，它更加亲近于C/S结构的软件，给用户的是一种很有快感的东东．其实现的方式是采用一个叫做XMLHttpRequest的对象进行交互的，因为历史的原因，各种浏览器对javascript的处理方式不一致，使得生成XMLHttpRequest对象的方法也有差别，但大体上有两种方式：微软的ActiveX控件和XMLHttpRequest本地对象，代码如下：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_29_577_Open_Image" onclick="this.style.display='none'; Codehighlighter1_29_577_Open_Text.style.display='none'; Codehighlighter1_29_577_Closed_Image.style.display='inline'; Codehighlighter1_29_577_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_29_577_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_29_577_Closed_Text.style.display='none'; Codehighlighter1_29_577_Open_Image.style.display='inline'; Codehighlighter1_29_577_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">function createXMLHttpRequest() </span><span id="Codehighlighter1_29_577_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_29_577_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  var xmlreq </span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img id="Codehighlighter1_82_164_Open_Image" onclick="this.style.display='none'; Codehighlighter1_82_164_Open_Text.style.display='none'; Codehighlighter1_82_164_Closed_Image.style.display='inline'; Codehighlighter1_82_164_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_82_164_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_82_164_Closed_Text.style.display='none'; Codehighlighter1_82_164_Open_Image.style.display='inline'; Codehighlighter1_82_164_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (window.XMLHttpRequest) </span><span id="Codehighlighter1_82_164_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_82_164_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 在非Microsoft浏览器中创建XMLHttpRequest本地对象</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    xmlreq </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> XMLHttpRequest();<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img id="Codehighlighter1_197_558_Open_Image" onclick="this.style.display='none'; Codehighlighter1_197_558_Open_Text.style.display='none'; Codehighlighter1_197_558_Closed_Image.style.display='inline'; Codehighlighter1_197_558_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_197_558_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_197_558_Closed_Text.style.display='none'; Codehighlighter1_197_558_Open_Image.style.display='inline'; Codehighlighter1_197_558_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (window.ActiveXObject) </span><span id="Codehighlighter1_197_558_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_197_558_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">通过MS ActiveX创建XMLHttpRequest</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #008000"><img id="Codehighlighter1_242_335_Open_Image" onclick="this.style.display='none'; Codehighlighter1_242_335_Open_Text.style.display='none'; Codehighlighter1_242_335_Closed_Image.style.display='inline'; Codehighlighter1_242_335_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_242_335_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_242_335_Closed_Text.style.display='none'; Codehighlighter1_242_335_Open_Image.style.display='inline'; Codehighlighter1_242_335_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_242_335_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_242_335_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 尝试按新版InternetExplorer方法创建</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">      xmlreq </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ActiveXObject(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Msxml2.XMLHTTP</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img id="Codehighlighter1_348_554_Open_Image" onclick="this.style.display='none'; Codehighlighter1_348_554_Open_Text.style.display='none'; Codehighlighter1_348_554_Closed_Image.style.display='inline'; Codehighlighter1_348_554_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_348_554_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_348_554_Closed_Text.style.display='none'; Codehighlighter1_348_554_Open_Image.style.display='inline'; Codehighlighter1_348_554_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (e1) </span><span id="Codehighlighter1_348_554_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_348_554_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 创建请求的ActiveX对象失败</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #008000"><img id="Codehighlighter1_386_488_Open_Image" onclick="this.style.display='none'; Codehighlighter1_386_488_Open_Text.style.display='none'; Codehighlighter1_386_488_Closed_Image.style.display='inline'; Codehighlighter1_386_488_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_386_488_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_386_488_Closed_Text.style.display='none'; Codehighlighter1_386_488_Open_Image.style.display='inline'; Codehighlighter1_386_488_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="COLOR: #000000">      </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_386_488_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_386_488_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 尝试按老版InternetExplorer方法创建</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        xmlreq </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ActiveXObject(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Microsoft.XMLHTTP</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img id="Codehighlighter1_501_548_Open_Image" onclick="this.style.display='none'; Codehighlighter1_501_548_Open_Text.style.display='none'; Codehighlighter1_501_548_Closed_Image.style.display='inline'; Codehighlighter1_501_548_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_501_548_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_501_548_Closed_Text.style.display='none'; Codehighlighter1_501_548_Open_Image.style.display='inline'; Codehighlighter1_501_548_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />      }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (e2) </span><span id="Codehighlighter1_501_548_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_501_548_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 不能通过ActiveX创建XMLHttpRequest</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="COLOR: #000000">      }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> xmlreq;<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>代码中看到排除上述的两种情况，方法createXMLHttpRequest得到的结果将是null，也就是说无法得到XMLHttpRequest的实例，也就无法使用ajax技术。但书中一直没有给出此时将如何处理，难道，世界上的浏览器就他们两种？或者，对于那些第三类的用户，我们要么劝勉其使用Internet Explorer或firefox等，要么对其采取抛弃的态度（这些也许是世界规范化组织该考虑的问题）。创建了XMLHttpRequest实例之后就采用类似于java（awt）中的事件处理机制，如下代码：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_20_338_Open_Image" onclick="this.style.display='none'; Codehighlighter1_20_338_Open_Text.style.display='none'; Codehighlighter1_20_338_Closed_Image.style.display='inline'; Codehighlighter1_20_338_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_20_338_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_20_338_Closed_Text.style.display='none'; Codehighlighter1_20_338_Open_Image.style.display='inline'; Codehighlighter1_20_338_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">function myFunction()</span><span id="Codehighlighter1_20_338_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_20_338_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 获取一个XMLHttpRequest实例</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    var req </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> createXMLHttpRequest();<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 设置用来从请求对象接收回调通知的句柄函数</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    req.onreadystatechange </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">handlerFunction(req);<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> HTTP POST联接,第三个参数表示请求是异步的</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    req.open(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">POST</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">handleRequest.action</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 指示请求体包含form数据</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    req.setRequestHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Content-Type</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">application/x-www-form-urlencoded</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    req.send(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>其中req.onreadystatechange引用的类似C++中的函数的指针，即handlerFunction，其代码如下：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_29_219_Open_Image" onclick="this.style.display='none'; Codehighlighter1_29_219_Open_Text.style.display='none'; Codehighlighter1_29_219_Closed_Image.style.display='inline'; Codehighlighter1_29_219_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_29_219_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_29_219_Closed_Text.style.display='none'; Codehighlighter1_29_219_Open_Image.style.display='inline'; Codehighlighter1_29_219_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">function handlerFunction(req)</span><span id="Codehighlighter1_29_219_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_29_219_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 如果请求的状态是“完成”</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img id="Codehighlighter1_73_217_Open_Image" onclick="this.style.display='none'; Codehighlighter1_73_217_Open_Text.style.display='none'; Codehighlighter1_73_217_Closed_Image.style.display='inline'; Codehighlighter1_73_217_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_73_217_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_73_217_Closed_Text.style.display='none'; Codehighlighter1_73_217_Open_Image.style.display='inline'; Codehighlighter1_73_217_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (req.readyState </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_73_217_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_73_217_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 检查是否成功接收了服务器响应</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img id="Codehighlighter1_119_149_Open_Image" onclick="this.style.display='none'; Codehighlighter1_119_149_Open_Text.style.display='none'; Codehighlighter1_119_149_Closed_Image.style.display='inline'; Codehighlighter1_119_149_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_119_149_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_119_149_Closed_Text.style.display='none'; Codehighlighter1_119_149_Open_Image.style.display='inline'; Codehighlighter1_119_149_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (req.status </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_119_149_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_119_149_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 处理事件,这里省略</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            <img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" /><br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img id="Codehighlighter1_157_214_Open_Image" onclick="this.style.display='none'; Codehighlighter1_157_214_Open_Text.style.display='none'; Codehighlighter1_157_214_Closed_Image.style.display='inline'; Codehighlighter1_157_214_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_157_214_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_157_214_Closed_Text.style.display='none'; Codehighlighter1_157_214_Open_Image.style.display='inline'; Codehighlighter1_157_214_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">else</span><span id="Codehighlighter1_157_214_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_157_214_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 有HTTP问题发生</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            alert(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">HTTP error: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">req.status);<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>与页面的交互，可能是这样的一个事实，用户点击某个按钮，激发myFunction方法的执行，此方法将创造一个XMLHttpRequet实例，并将处理事件的机制委托给onreadystatechange所指定的方法（本文中即为：handlerFunction）监听,handlerFunction将判断传进来的XMLHttpRequet实例的运行状态，对应其状态实现相应的业务逻辑。<br />　　上面没有列出ajax的xml通信机制，这里简要的说明一下：<br />　　发信：通过串的连接构造出一个满足xml格式的字符串，如String s="&lt;project&gt;&lt;person&gt;&lt;name&gt;"+"passyt"+"&lt;\/name&gt;&lt;\/person&gt;&lt;\/project&gt;";然后通过XMLHttpRequet实例req的send传送到服务器端，如req.send(s);<br />        收信：通过req.responseXML得到所谓的Dom实例然后按照标准的文档对象模型的方法取值显示到页面。<br />   　说明：在发信中，xml消息的构成通过字符串的连接完成，很容易因为笔误而产生错误，«ajax基础教程»一书给出了另一种基于简单通信的消息格式json，网上有其免费的版本和详细说明，这里不再敷言。<br />　　服务器端获取xml的信息格式后做相关的业务处理，然后生成xml消息返回给客户端，客户端利用javascript中的dom支持访问所在的xhtml，进行页面的局部刷新。这里的服务器端技术可以是java,php或者是.net，总之只要是支持xml通信机制的服务器技术都可以。<br />　　利用ajax技术可以创造出类似桌面软件的web页面，显得与众不同，因而显得特别酷，又加之google的推广以及几个大型网站的宣传，ajax就作为一种“新瓶装老酒”的“新技术”出现在我们的生活中，并激起了所谓的web2.0热潮。但显而易见的是，ajax的编码量很可能大大的超出了其他的页面表现技术，而作为一种弱类型语言无法得到对应的自动代码产生工具，对于我们程序员而言是极其痛苦的，另外它也带来了很大的安全隐患，因为其代码可见性，使得编写页面的javascript脚本将对程序员做出更高的要求。<br />　　但是，好的是，现在已经有越来越多的ajax框架来减少javascript对浏览器的依赖以及提高ajax的开发效率。«ajax基础教程»一书就给出了一个框架<img src ="http://www.blogjava.net/liaojiyong/aggbug/48269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2006-05-26 10:19 <a href="http://www.blogjava.net/liaojiyong/archive/2006/05/26/48269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>