﻿<?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-javaGrowing-随笔分类-javascript</title><link>http://www.blogjava.net/juhongtao/category/16856.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 23 Jul 2007 12:59:08 GMT</lastBuildDate><pubDate>Mon, 23 Jul 2007 12:59:08 GMT</pubDate><ttl>60</ttl><item><title>javascript 的几种排序方法</title><link>http://www.blogjava.net/juhongtao/archive/2007/07/23/131899.html</link><dc:creator>javaGrowing</dc:creator><author>javaGrowing</author><pubDate>Mon, 23 Jul 2007 08:23:00 GMT</pubDate><guid>http://www.blogjava.net/juhongtao/archive/2007/07/23/131899.html</guid><wfw:comment>http://www.blogjava.net/juhongtao/comments/131899.html</wfw:comment><comments>http://www.blogjava.net/juhongtao/archive/2007/07/23/131899.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/juhongtao/comments/commentRss/131899.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/juhongtao/services/trackbacks/131899.html</trackback:ping><description><![CDATA[
		<p>所谓排序，就是要整理文件中的记录，使之按关键字递增(或递减)次序排列起来。其确切定义如下：<br />　　输入：n个记录R<sub>1</sub>，R<sub>2</sub>，…，R<sub>n</sub>，其相应的关键字分别为K<sub>1</sub>，K<sub>2</sub>，…，K<sub>n</sub>。<br />　　输出：R<sub>il</sub>，R<sub>i2</sub>，…，R<sub>in</sub>，使得K<sub>i1</sub>≤K<sub>i2</sub>≤…≤K<sub>in</sub>。(或K<sub>i1</sub>≥K<sub>i2</sub>≥…≥K<sub>in</sub>)。</p>
		<p>    这里，我们简单介绍几种排序方法，直接插入排序、希儿排序、冒泡排序、快速排序、直接选择排序，文中所提及的代码在IE6下测试通过。</p>
		<p>
				<strong>直接插入排序基本思想</strong>
				<br />    假设待排序的记录存放在数组R[1..n]中。初始时，R[1]自成1个有序区，无序区为R[2..n]。从i=2起直至i=n为止，依次将R[i]插入当前的有序区R[1..i-1]中，生成含n个记录的有序区。</p>
		<p>    算法描述<br /><span class="code"><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> InsertSort(arr) { </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">插入排序-&gt;直接插入法排序</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);">var</span><span style="color: rgb(0, 0, 0);"> st </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();<br />  </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> temp, j;<br />  </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">; i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">arr.length; i</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);">if</span><span style="color: rgb(0, 0, 0);">((arr[i]) </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> (arr[i</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">])) {<br />    temp </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arr[i];<br />    j </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br />    </span><span style="color: rgb(0, 0, 255);">do</span><span style="color: rgb(0, 0, 0);"> {<br />     arr[j</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arr[j];<br />     j</span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);">;<br />    }<br />    </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);"> (j</span><span style="color: rgb(0, 0, 0);">&gt;-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> (temp) </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> (arr[j]));<br />    arr[j</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> temp;<br />   }</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">endif</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">  }<br />  status </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() </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);"> st) </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> ' ms';<br />  </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> arr;<br /> }</span></div><br /></span></p>
		<p>
				<strong>希尔排序基本思想<br /></strong>　  先取一个小于n的整数d<sub>1</sub>作为第一个增量，把文件的全部记录分成d<sub>1</sub>个组。所有距离为d<sub>l</sub>的倍数的记录放在同一个组中。先在各组内进行直接插人排序；然后，取第二个增量d<sub>2</sub>&lt;d<sub>1</sub>重复上述的分组和排序，直至所取的增量d<sub>t</sub>=1(d<sub>t</sub>&lt;d<sub>t-l</sub>&lt;…&lt;d<sub>2</sub>&lt;d<sub>1</sub>)，即所有记录放在同一组中进行直接插入排序为止。<br />  　该方法实质上是一种分组插入方法。</p>
		<p>    算法描述<br /><span class="code"><p> </p><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> ShellSort(arr) { </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">插入排序-&gt;希儿排序</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);">var</span><span style="color: rgb(0, 0, 0);"> st </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();<br />  </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> increment </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arr.length;<br />  </span><span style="color: rgb(0, 0, 255);">do</span><span style="color: rgb(0, 0, 0);"> {<br />   increment </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> (increment</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">3</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);">) </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br />   arr </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> ShellPass(arr, increment);<br />  }<br />  </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);"> (increment </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);">1</span><span style="color: rgb(0, 0, 0);">)<br /><br />  status </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() </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);"> st) </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> ' ms';<br />  </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> arr;<br /> }<br /> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> ShellPass(arr, d) { </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);">  </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> temp, j;<br />  </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">d; i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">arr.length; i</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);">if</span><span style="color: rgb(0, 0, 0);">((arr[i]) </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> (arr[i</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">d])) {<br />    temp </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arr[i]; j </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">d;<br />    </span><span style="color: rgb(0, 0, 255);">do</span><span style="color: rgb(0, 0, 0);"> {<br />     arr[j</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">d] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arr[j];<br />     j </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">d;<br />    }<br />    </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);"> (j</span><span style="color: rgb(0, 0, 0);">&gt;-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> (temp) </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> (arr[j]));<br />    arr[j</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">d] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> temp;<br />   }</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">endif</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">  }<br />  </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> arr;<br /> }</span></div></span></p>
		<p>
				<strong>冒泡排序基本思想<br /></strong>   
将被排序的记录数组R[1..n]垂直排列，每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则，从下往上扫描数组
R：凡扫描到违反本原则的轻气泡，就使其向上"飘浮"。如此反复进行，直到最后任何两个气泡都是轻者在上，重者在下为止。<br /></p>
		<p>    算法描述<br /><span class="code"> <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> BubbleSort(arr) { </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">交换排序-&gt;冒泡排序</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);">var</span><span style="color: rgb(0, 0, 0);"> st </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();<br />  </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> temp;<br />  </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> exchange;<br />  </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> i</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);">; i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">arr.length; i</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">) {<br />   exchange </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">false</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);">(</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">arr.length</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">; j</span><span style="color: rgb(0, 0, 0);">&gt;=</span><span style="color: rgb(0, 0, 0);">i; j</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);">if</span><span style="color: rgb(0, 0, 0);">((arr[j</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</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);"> (arr[j])) {<br />     temp </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arr[j</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">];<br />     arr[j</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arr[j];<br />     arr[j] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> temp;<br />     exchange </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br />    }<br />   }<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);">exchange) </span><span style="color: rgb(0, 0, 255);">break</span><span style="color: rgb(0, 0, 0);">;<br />  }<br />  status </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() </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);"> st) </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> ' ms';<br />  </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> arr;<br /> }</span></div></span></p>
		<p>
				<strong>快速排序基本思想<br /></strong>    将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题，然后将这些子问题的解组合为原问题的解。<br />   
在R[low..high]中任选一个记录作为基准(Pivot)，以此基准将当前无序区划分为左、右两个较小的子区间R[low..pivotpos-
1)和R[pivotpos+1..high]，并使左边子区间中所有记录的关键字均小于等于基准记录(不妨记为pivot)的关键字
pivot.key，右边的子区间中所有记录的关键字均大于等于pivot.key，而基准记录pivot则位于正确的位置(pivotpos)上，它无
须参加后续的排序。</p>
		<p>    算法描述<br /><span class="code"> <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> QuickSort(arr) { </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">交换排序-&gt;快速排序</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);">if</span><span style="color: rgb(0, 0, 0);"> (arguments.length</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">) {<br />   </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> low </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arguments[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">];<br />   </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> high </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arguments[</span><span style="color: rgb(0, 0, 0);">2</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);"> {<br />   </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> low </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);">;<br />   </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> high </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arr.length</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br />  }<br />  </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(low </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> high){<br />   </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> function Partition</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);">var</span><span style="color: rgb(0, 0, 0);"> i </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> low;<br />   </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> j </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> high;<br />   </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> pivot </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arr[i];<br />   </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">j) {<br />    </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">j </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> arr[j]</span><span style="color: rgb(0, 0, 0);">&gt;=</span><span style="color: rgb(0, 0, 0);">pivot)<br />     j</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);">if</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">j)<br />     arr[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);">=</span><span style="color: rgb(0, 0, 0);"> arr[j];<br />    </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">j </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> arr[i]</span><span style="color: rgb(0, 0, 0);">&lt;=</span><span style="color: rgb(0, 0, 0);">pivot)<br />     i</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);">if</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">j)<br />     arr[j</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);"> arr[i];<br />   }</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">endwhile</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">   arr[i] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> pivot;<br />   </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> end function</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);">var</span><span style="color: rgb(0, 0, 0);"> pivotpos </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> i; </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">Partition(arr，low，high);</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">   QuickSort(arr, low, pivotpos</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">);<br />   QuickSort(arr, pivotpos</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">, high);<br />  } </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"><br />   </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">;<br />   </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> arr;<br /> }<br /><br />直接选择排序基本思想<br />  　n个记录的文件的直接选择排序可经过n</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1趟直接选择排序得到有序结果：<br /> ①初始状态：无序区为R[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">..n]，有序区为空。<br /> ②第1趟排序<br />    在无序区R[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">..n]中选出关键字最小的记录R[k]，将它与无序区的第1个记录R[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">]交换，使R[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">..</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">]和R[</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。<br />　　……<br /> ③第i趟排序<br />　　第i趟排序开始时，当前有序区和无序区分别为R[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">..i</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">]和R[i..n](</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">≤i≤n</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">)。该趟排序从当前无序区中选出关键字最小的记录R [k]，将它与无序区的第1个记录R[i]交换，使R[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">..i]和R[i</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。<br />    这样，n个记录的文件的直接选择排序可经过n</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1趟直接选择排序得到有序结果。<br /><br />    算法描述<br /> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> SelectSort(arr) { </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">选择排序-&gt;直接选择排序</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);">var</span><span style="color: rgb(0, 0, 0);"> st </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();<br />  </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> temp;<br />  </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> i</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);">; i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">arr.length; i</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);">var</span><span style="color: rgb(0, 0, 0);"> k </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> i;<br />   </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">i</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">; j</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">arr.length; j</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);">if</span><span style="color: rgb(0, 0, 0);">((arr[j]) </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> (arr[k]))<br />     k </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> j;<br />   }<br />   </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (k </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> i){<br />    temp </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arr[i];<br />    arr[i] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> arr[k];<br />    arr[k] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> temp;<br />   }<br />  }<br />  status </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() </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);"> st) </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> ' ms';<br />  </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> arr;<br /> }<br /></span></div></span></p>
<img src ="http://www.blogjava.net/juhongtao/aggbug/131899.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/juhongtao/" target="_blank">javaGrowing</a> 2007-07-23 16:23 <a href="http://www.blogjava.net/juhongtao/archive/2007/07/23/131899.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dom +　Javascript 在本机浏览器中对的表格数据进行排序</title><link>http://www.blogjava.net/juhongtao/archive/2007/07/23/131898.html</link><dc:creator>javaGrowing</dc:creator><author>javaGrowing</author><pubDate>Mon, 23 Jul 2007 08:20:00 GMT</pubDate><guid>http://www.blogjava.net/juhongtao/archive/2007/07/23/131898.html</guid><wfw:comment>http://www.blogjava.net/juhongtao/comments/131898.html</wfw:comment><comments>http://www.blogjava.net/juhongtao/archive/2007/07/23/131898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/juhongtao/comments/commentRss/131898.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/juhongtao/services/trackbacks/131898.html</trackback:ping><description><![CDATA[
		<h3 id="csscodetitle">Dom +　Javascript 在本机浏览器中对的表格数据进行排序</h3>
		<div style="float: left;">
				<script type="text/javascript">
						<!--
google_ad_client = "pub-1253167922227550";
google_alternate_ad_url = "http://www.365tech.net/google_adsense_script.htm";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_type = "text";
google_ad_channel ="5362294942";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "8A3207";
google_color_text = "666666";
google_color_url = "666666";
//-->
				</script>
				<script style="display: none;" type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
				</script>
		</div>
		<p>在本机浏览器中对的表格数据进行排序<br />在Web应用中，数据从服务器端返回到客户端，以表格形式表现出来。如果要对数据集按指定的列排序显示，常规做法都是向服务器发出请求，服务器端程序重新从数据库中取出按指定列排序的数据，返回给客户端，页面重新显示排序后数据。<br /> <br />采用这种方式有如下缺点：<br />1- 响应时间延迟，每次排序都要向服务器端发送请求，等待结果返回，同时增加网络负载。<br />2- 编程复杂，可维护性差，而且客户端和服务器端代码耦合度很高，客户端和服务器端都要处理排序涉及的列名、排序方式，如果有分页和查询条件，都需要在客户端页面中保留，排序请求时重新传递到服务器端，当参数数量很多时极易出错。<br />3- 重用度很低，针对不同表格，很难抽象出一个公共程序来共用，需要逐个编写代码实现，增加工作量。<br /> <br />现在换一个角度考虑，数据既然已下载到了客户端，在重新排序时没有必要再重服务器端获取，只要对浏览器中的数据重新排序显示就可以了。要实现该目标，需要做到以下几点：<br />1 - 获得表格中要排序的数据，将其放入一个2维数组中。<br />2 - 对2维数组排序。<br />3 - 用排序后的数据重新更新表格。<br /> <br />利用浏览器支持的DOM(Document Object Model)和JavaScript即可实现上述目标。<br /> <br />通常页面中会很多的&lt;table&gt;，要获得需要排序数据所在的table，需要在&lt;table&gt;中增加一个id属性，便于document对象用getElementById得到该表格对象，例如要排序的表格定义如下：<br /> &lt;table id="st" &gt;<br />    &lt;tr&gt;<br />        &lt;td&gt;1&lt;/td&gt;<br />        &lt;td&gt;2&lt;/td&gt;<br />    &lt;/tr&gt;<br />&lt;/table&gt;<br /> <br />在javascript中，用var objTable = document.getElementById("st")就可得到表格对象，该对象在DOM中定义为一个Element。<br /> <br />然
后用 var objRows =
objTable.getElementsByTagName("tr")得到该表格中全部的行对象，ObjRows.length返回该表格行数；
var rowi =
objRows[i].getElementsByTagName("td")得到第i行的全部&lt;td&gt;节点，i从0开始计数，
rowi.item(j)则可得到第i行，第j列的节点，该节点的innerHTML为该节点&lt;td&gt;&lt;/td&gt;之间的内容。<br /> <br />获取表格数据到2维数组的代码见源代码，此处略。<br /> <br />下面说明在javascript中2维数组的构造和排序。<br />javascript不支持2维数组，因此需要用数组的数组来模拟一个2维数组，其方法是先定义一个1维数组，元素个数为2维数组的行数，然后对每个元素赋一个值，值为一个数组，其元素个数为2维数组的列数。构造代码如下：<br /> <br />var rows = new Array(R);  //R为行数<br />for(var i = 0; i &lt; rows.length; i++){<br />    rows[i] = new Array(C);    //C为列数<br />}<br /> <br /> <br />利用javascript中的Array.sort(comparer)对rows中的元素排序，比较方式由重新定义的比较函数得到。要根据第j列元素的大小排序，只要定义如下函数即可：<br /> <br />function compareCol(a,b){<br />    <br />    if (a[j] &lt; b[j])<br />        return -1;<br /> <br />    if (a[j] &gt; b[j])<br />        return 1;<br /> <br />   return 0;<br /> <br />}<br /> <br />因为compareCol只能有两个参数，因此j要定义为全局变量。<br /> <br />用rows.sort
(compareCol)就可实现根据j列值的大小对行进行排序。根据javascript文档，字符串比较大小是按照其Unicode编码的大小来比
较，对英文排序没有问题，对中文排序时就不是按通常的拼音排序，那需要javascript提供本地化支持，目前没有发现javascript此功能。该
功能在java中可用java.text.Collator实现。<br /> <br /> <br /> 以上介绍了在本地对浏览器中的数据进行排序的主要思想，
为方便使用，将这些功能进行了封装，以javascript函数的提供，存放在sorttable.js文件中，在需要的页面中用&lt;script
type=text/javascript src='sorttable.js'&gt;&lt;/script&gt;引入。<br /> <br /> <br /> 下面说明排序函数原型和使用方法。<br /> <br />函数1 function sortTable(tableId,sortCol,compareType)<br />对页面中指定表格中的数据进行排序，通常第一行为标题行，排序时从第二行开始，第一次调用为升序排列，第二次为降序排列，依次轮换。<br />tableId    为&lt;table id=''&gt;中id的值，在同一个页面中要唯一。<br />sortCol    排序时用来比较大小的数据所在的列，从1开始计数。<br />compareType 排序时比较大小的方式，s-按字符串比较大小，n-按数字比较大小。<br /> <br /> <br /> <br /> 函数2 function sortTableInRange(tableId,sortCol,compareType,startRow,endRow,startCol,endCol)<br /> <br />        对表格中指定的区域数据排序，有时数据第一列为流水号，最后一行为合计，这些数据不需要参与排序，可用此函数来对部分数据排序。<br />        <br />        tableId    为&lt;table id=''&gt;中id的值，在同一个页面中要唯一。<br />        sortCol    排序时用来比较大小的数据所在的列，从1开始计数。<br />        compareType 排序时比较大小的方式，s-按字符串比较大小，n-按数字比较大小。<br />        startRow,endRow 要排序区域开始和结束行号，从1开始计数。例如对第2行到第7行排序，startRow=2，endRow=7<br />        startCol,endCol  要排序区域开始和结束列号，从1开始计数。<br /> <br /> <br /> <br /> <br />  <br />存在的问题：<br />1- 中文不能按拼音排序。<br /> <br /> <br />要注意的问题：<br />要排序的table必须用ID标示，并要作为参数传给排序函数，表格中的数据应该是可以排序的，否则结果不可预知；要排序的表格不能有嵌套表，否则排序出错。<br /> <br /> <br />本函数已在IE6.0 ,FireFox1.01中运行通过。源代码和例子代码见后。<br /> <br /> <br /> <br /> <br />参考资料：<br /> <br />Danny Goodman with Michael Morrison   JavaScript Bible 5th  ,John Wiley and Sons  2004<br /> <br />David Flanagan  JavaScript The Definitive Guide 4th ,  O'Reilly  2001<br /> <br /> <br /> <br /> <br /> <br /> 附源代码：要运行例子，需要将javascript代码保存到sorttable.js文件中，html部分代码保存到同一目录下另一文件中即可。<br /> <br /> <br />sorttable.js<br /> <br /> </p>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<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, 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, 128, 128);"> 2</span> <span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">//<br /></span><span style="color: rgb(0, 128, 128);"> 3</span> <span style="color: rgb(0, 128, 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);">  在本机对浏览器页面表格中的数据行进行排序的javascript函数</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 4</span> <span style="color: rgb(0, 128, 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);"> </span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 5</span> <span style="color: rgb(0, 128, 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);">  author William  QQ: 22967225</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 6</span> <span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">  create date 2005-12-2</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 7</span> <span style="color: rgb(0, 128, 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);">  version 1.0</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 8</span> <span style="color: rgb(0, 128, 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);">=========================================================</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 9</span> <span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">10</span> <span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">column index for sort</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);">11</span> <span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> indexCol;<br /></span><span style="color: rgb(0, 128, 128);">12</span> <span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">比较函数，用于Array.sort()排序时比较用。</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);">13</span> <span style="color: rgb(0, 128, 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);">本函数比较数组元素array1[indexCol]和元素array2[indexCol]Unicode值的大小</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);">14</span> <span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> arrayCompare(array1,array2){<br /></span><span style="color: rgb(0, 128, 128);">15</span> <span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">alert(array1.length+"--"+array1[indexCol]);</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);">16</span> <span style="color: rgb(0, 128, 0);"></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);"> (array1[indexCol] </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> array2[indexCol])<br /></span><span style="color: rgb(0, 128, 128);">17</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, 0);">-</span><span style="color: rgb(0, 0, 0);">1</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);">if</span><span style="color: rgb(0, 0, 0);"> (array1[indexCol] </span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"> array2[indexCol])<br /></span><span style="color: rgb(0, 128, 128);">19</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, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 128, 128);">20</span> <span style="color: rgb(0, 0, 0);"> <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);">return</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);">;<br /></span><span style="color: rgb(0, 128, 128);">22</span> <span style="color: rgb(0, 0, 0);"> <br /></span><span style="color: rgb(0, 128, 128);">23</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);"> </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">比较数组元素array1[indexCol]和元素array2[indexCol]的数值大小</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);">25</span> <span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> arrayCompareNumber(array1,array2){<br /></span><span style="color: rgb(0, 128, 128);">26</span> <span style="color: rgb(0, 0, 0);"> <br /></span><span style="color: rgb(0, 128, 128);">27</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);"> (parseInt(array1[indexCol]) </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> parseInt(array2[indexCol]))<br /></span><span style="color: rgb(0, 128, 128);">28</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, 0);">-</span><span style="color: rgb(0, 0, 0);">1</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);">if</span><span style="color: rgb(0, 0, 0);"> (parseInt(array1[indexCol]) </span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"> parseInt(array2[indexCol]))<br /></span><span style="color: rgb(0, 128, 128);">30</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, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 128, 128);">31</span> <span style="color: rgb(0, 0, 0);"> <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);">return</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);">;<br /></span><span style="color: rgb(0, 128, 128);">33</span> <span style="color: rgb(0, 0, 0);"> }<br /></span><span style="color: rgb(0, 128, 128);">34</span> <span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">与arrayCompare相反方式比较大小，用于倒序使用</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);">35</span> <span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> arrayCompareRev(array1,array2){<br /></span><span style="color: rgb(0, 128, 128);">36</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);">  </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (array1[indexCol] </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> array2[indexCol])<br /></span><span style="color: rgb(0, 128, 128);">38</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, 0);">1</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);">  </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (array1[indexCol] </span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"> array2[indexCol])<br /></span><span style="color: rgb(0, 128, 128);">40</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, 0);">-</span><span style="color: rgb(0, 0, 0);">1</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);"> <br /></span><span style="color: rgb(0, 128, 128);">42</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, 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);"> <br /></span><span style="color: rgb(0, 128, 128);">44</span> <span style="color: rgb(0, 0, 0);"> }<br /></span><span style="color: rgb(0, 128, 128);">45</span> <span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">与arrayCompareNumber相反方式比较大小，用于倒序使用</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);">46</span> <span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> arrayCompareNumberRev(array1,array2){<br /></span><span style="color: rgb(0, 128, 128);">47</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);"> (parseInt(array1[indexCol]) </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> parseInt(array2[indexCol]))<br /></span><span style="color: rgb(0, 128, 128);">48</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, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 128, 128);">49</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);"> (parseInt(array1[indexCol]) </span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"> parseInt(array2[indexCol]))<br /></span><span style="color: rgb(0, 128, 128);">50</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, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<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, 0);">0</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);"> }<br /></span><span style="color: rgb(0, 128, 128);">54</span> <span style="color: rgb(0, 0, 0);"> <br /></span><span style="color: rgb(0, 128, 128);">55</span> <span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">define a 2-dimension array</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);">56</span> <span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> BiArray(rows,cols){<br /></span><span style="color: rgb(0, 128, 128);">57</span> <span style="color: rgb(0, 0, 0);"> <br /></span><span style="color: rgb(0, 128, 128);">58</span> <span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">simulate multidimension array</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);">59</span> <span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.rows </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> rows;<br /></span><span style="color: rgb(0, 128, 128);">60</span> <span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.cols </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> cols;<br /></span><span style="color: rgb(0, 128, 128);">61</span> <span style="color: rgb(0, 0, 0);"> <br /></span><span style="color: rgb(0, 128, 128);">62</span> <span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">construct array</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);">63</span> <span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> lines </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);"> Array(rows);<br /></span><span style="color: rgb(0, 128, 128);">64</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);">(</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> 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);">;i </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> lines.length; i</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);">65</span> <span style="color: rgb(0, 0, 0);">   lines[i] </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);"> Array(cols);<br /></span><span style="color: rgb(0, 128, 128);">66</span> <span style="color: rgb(0, 0, 0);">  }</span></div>
		<br />  <img src ="http://www.blogjava.net/juhongtao/aggbug/131898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/juhongtao/" target="_blank">javaGrowing</a> 2007-07-23 16:20 <a href="http://www.blogjava.net/juhongtao/archive/2007/07/23/131898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解析responseBody</title><link>http://www.blogjava.net/juhongtao/archive/2007/05/26/120124.html</link><dc:creator>javaGrowing</dc:creator><author>javaGrowing</author><pubDate>Fri, 25 May 2007 17:07:00 GMT</pubDate><guid>http://www.blogjava.net/juhongtao/archive/2007/05/26/120124.html</guid><wfw:comment>http://www.blogjava.net/juhongtao/comments/120124.html</wfw:comment><comments>http://www.blogjava.net/juhongtao/archive/2007/05/26/120124.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/juhongtao/comments/commentRss/120124.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/juhongtao/services/trackbacks/120124.html</trackback:ping><description><![CDATA[
		<p>function toHtml(strBody,cset)<br />{<br /> var Rec=new ActiveXObject("ADODB.RecordSet");<br /> Rec.Fields.Append("DDD",201,1);<br /> Rec.Open();<br /> Rec.AddNew();</p>
		<p> Rec(0).AppendChunk(strBody);</p>
		<p> Rec.Update();<br /> var HTML=Rec(0).Value;<br /> Rec.Close();<br /> delete Rec;<br /> document.charset=cset;<br /> return(HTML);<br />}</p>
<img src ="http://www.blogjava.net/juhongtao/aggbug/120124.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/juhongtao/" target="_blank">javaGrowing</a> 2007-05-26 01:07 <a href="http://www.blogjava.net/juhongtao/archive/2007/05/26/120124.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 完美ajax类　支持事件 </title><link>http://www.blogjava.net/juhongtao/archive/2007/05/26/120118.html</link><dc:creator>javaGrowing</dc:creator><author>javaGrowing</author><pubDate>Fri, 25 May 2007 16:37:00 GMT</pubDate><guid>http://www.blogjava.net/juhongtao/archive/2007/05/26/120118.html</guid><wfw:comment>http://www.blogjava.net/juhongtao/comments/120118.html</wfw:comment><comments>http://www.blogjava.net/juhongtao/archive/2007/05/26/120118.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/juhongtao/comments/commentRss/120118.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/juhongtao/services/trackbacks/120118.html</trackback:ping><description><![CDATA[
		<p>出处：<a href="http://www.smallrain.net/study_show.asp?id=703">http://www.smallrain.net/study_show.asp?id=703</a></p>
		<p>&lt;div id="Error"&gt;&lt;/div&gt;<br />&lt;div id="State"&gt;&lt;/div&gt;<br />&lt;div id="DownloadEnd"&gt;&lt;/div&gt;<br />&lt;Script Language="JavaScript"&gt;<br />&lt;!--<br />// more javascript from <a href="http://www.smallrain.net/">http://www.smallrain.net</a></p>
		<p>function Ajax(OnError,OnState,OnDownloadEnd)<br />{<br /> // 错误字符串<br /> this.ErrorStr   = null;<br /> // 错误事件驱动,当发生错误时触发<br /> this.OnError   = OnError;<br /> // 状态事件驱动,当状态改变时触发<br /> this.OnState   = OnState;<br /> // 完成事件驱动,当类操作完成时触发<br /> this.OnDownloadEnd  = OnDownloadEnd;</p>
		<p> // XMLHTTP 发送数据类型 GET 或 POST<br /> this.method  = "GET";<br /> // 将要获取的URL地址<br /> this.URL  = null;<br /> // 指定同步或异步读取方式(true 为异步,false 为同步)<br /> this.sync  = true;<br /> // 当method 为 POST 时 所要发送的数据<br /> this.PostData  = null<br /> // 返回读取完成后的数据<br /> this.RetData   = null;</p>
		<p> // 创建XMLHTTP对像<br /> this.HttpObj   = this.createXMLHttpRequest();<br /> if(this.HttpObj == null)<br /> {<br />  // 对像创建失败时中止运行<br />  return;<br /> }</p>
		<p> var Obj = this;<br /> // 调用事件检测<br /> this.HttpObj.onreadystatechange = function()<br /> {<br />  Ajax.handleStateChange(Obj);<br /> }<br />}</p>
		<p>// UTF 转入 GB (by:Rimifon)<br />Ajax.prototype.UTFTOGB = function(strBody)<br />{<br /> var Rec=new ActiveXObject("ADODB.RecordSet");<br /> Rec.Fields.Append("DDD",201,1);<br /> Rec.Open();<br /> Rec.AddNew();<br /> Rec(0).AppendChunk(strBody);<br /> Rec.Update();<br /> var HTML=Rec(0).Value;<br /> Rec.Close();<br /> delete Rec;<br /> return(HTML);<br />}</p>
		<p>// 创建XMLHTTP对像<br />Ajax.prototype.createXMLHttpRequest = function()<br />{<br /> if (window.XMLHttpRequest) <br /> { <br />  //Mozilla 浏览器<br />  return new XMLHttpRequest();<br /> }<br /> else if (window.ActiveXObject)<br /> {<br />         var msxmls = new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP');<br />         for (var i = 0; i &lt; msxmls.length; i++)<br />         {<br />                 try <br />                 {<br />                         return new ActiveXObject(msxmls[i]);<br />                 }catch (e){}</p>
		<p>  }<br /> }<br /> this.ErrorStr = "你的浏览器不支持XMLHttpRequest对象．"<br /> if(this.OnError)<br /> {<br />  this.OnError(this.ErrorStr);<br /> }<br />     return null;<br />}</p>
		<p>// 发送HTTP请求<br />Ajax.prototype.send = function()<br />{</p>
		<p> if (this.HttpObj !== null)<br /> {<br />  this.URL = this.URL + "?t=" + new Date().getTime();<br />  this.HttpObj.open(this.method, this.URL, this.sync);<br />  if(this.method.toLocaleUpperCase() == "GET")<br />  {<br />   this.HttpObj.send(null);<br />  }<br />  else if(this.method.toLocaleUpperCase() == "POST")<br />  {<br />   this.HttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");<br />   this.HttpObj.send(this.PostData);<br />  }<br />  else<br />  {<br />   this.ErrorStr = "错误的[method]命令．"<br />   if(this.OnError)<br />   {<br />    this.OnError(this.ErrorStr);<br />   }<br />   return;<br />  }</p>
		<p>  if (this.HttpObj.readyState == 4)<br />  {<br />   // 判断对象状态<br />              if (this.HttpObj.status == 200) <br />                 { <br />    this.RetData = this.UTFTOGB(this.HttpObj.responseBody);<br />    if(this.OnDownloadEnd)<br />    {<br />     this.OnDownloadEnd(this.RetData);<br />    }<br />                         return;<br />                 } <br />   else <br />   { <br />    this.ErrorStr = "您所请求的页面有异常．"<br />    if(this.OnError)<br />    {<br />     this.OnError(this.ErrorStr);<br />    }<br />    return;<br />   }<br />  }</p>
		<p> }</p>
		<p>}</p>
		<p>// 事件检测<br />Ajax.handleStateChange = function(Obj)<br />{<br /> if(Obj.OnState)<br /> {<br />  Obj.OnState(Obj.HttpObj.readyState);<br /> }</p>
		<p> if (Obj.HttpObj.readyState == 4)<br /> {<br />  // 判断对象状态<br />             if (Obj.HttpObj.status == 200) <br />                { <br />   Obj.RetData = Obj.UTFTOGB(Obj.HttpObj.responseBody);<br />   if(Obj.OnDownloadEnd)<br />   {<br />    Obj.OnDownloadEnd(Obj.RetData);<br />   }<br />                        return;<br />                } <br />  else <br />  { <br />   Obj.ErrorStr = "您所请求的页面有异常．"<br />   if(Obj.OnError)<br />   {<br />    Obj.OnError(Obj.ErrorStr);<br />   }<br />   return;<br />  }<br /> }<br />}</p>
		<p>
				<br />// 错误回调事件函数<br />function EventError(strValue)<br />{<br /> document.getElementById("Error").innerHTML = strValue;<br />}</p>
		<p>// 状态回调事件函数<br />function EventState(strValue)<br />{<br /> var strState = null;<br /> switch (strValue)<br /> {<br />     case 0:<br />  strState = "未初始化...";<br />  break;</p>
		<p>     case 1:<br />  strState = "开始读取数据...";<br />  break;</p>
		<p>     case 2:<br />  strState = "读取数据...";<br />  break;</p>
		<p>     case 3:<br />  strState = "读取数据中...";<br />  break;</p>
		<p>     case 4:<br />  strState = "读取完成...";<br />  break;</p>
		<p>     default: <br />  strState = "未初始化...";<br />  break;<br /> }<br /> document.getElementById("State").innerHTML = strState;<br />}</p>
		<p>// 完成回调事件函数<br />function EventDownloadEnd(strValue)<br />{<br /> document.getElementById("DownloadEnd").innerHTML = strValue;<br />}</p>
		<p>
				<br />// 初始化Ajax对像,引入事件回调函数<br />var A1 = new Ajax(EventError,EventState,EventDownloadEnd);<br />// 指定method数据发送类型<br />A1.method = "GET";<br />// 指定URL地址<br />A1.URL = "<a href="http://www.smallrain.net/help.htm">http://www.smallrain.net/help.htm</a>"<br />// 指定为异步处理<br />A1.sync = true;<br />//发送请求<br />A1.send();<br />//--&gt;<br />&lt;/Script&gt; </p>
<img src ="http://www.blogjava.net/juhongtao/aggbug/120118.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/juhongtao/" target="_blank">javaGrowing</a> 2007-05-26 00:37 <a href="http://www.blogjava.net/juhongtao/archive/2007/05/26/120118.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax代理程序自动判断字符编码 </title><link>http://www.blogjava.net/juhongtao/archive/2007/05/26/120115.html</link><dc:creator>javaGrowing</dc:creator><author>javaGrowing</author><pubDate>Fri, 25 May 2007 16:31:00 GMT</pubDate><guid>http://www.blogjava.net/juhongtao/archive/2007/05/26/120115.html</guid><wfw:comment>http://www.blogjava.net/juhongtao/comments/120115.html</wfw:comment><comments>http://www.blogjava.net/juhongtao/archive/2007/05/26/120115.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/juhongtao/comments/commentRss/120115.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/juhongtao/services/trackbacks/120115.html</trackback:ping><description><![CDATA[
		<strong>ajax代理程序自动判断字符编码 </strong>
		<table class="docParameter" cellspacing="6" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<p>作者：<a href="http://www.blueidea.com/common/contact.asp?type=作者&amp;username=llinzzi" target="_blank">llinzzi</a>　时间： 2006-03-16　文档类型：原创　来自：<a href="http://www.blueidea.com/">蓝色理想</a><br />浏览统计 total:6402 | year:1609 | Quarter:376 | Month:132 | Week:26 | today:2</p>
										<p class="list">
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="border" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<img height="6" src="http://www.blueidea.com/img/spacer.gif" width="6" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="pageLighter" cellspacing="11" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="content">
										<p>由于ajax在跨域的访问上有问题,目前最好的方法是做代理.写了个代理程序和心得.</p>
										<p>为了做ajax的代理,研究了下服务器端的xmlhttp并和客户端的ajax中的xmlhttp做了个比较,后台代码是asp的.</p>
										<p>服务器端的xmlhttp也就是asp小偷程序,我把代码改成了javascript.</p>
										<p>1.在服务器端的xmlhttp.Open("GET",url,false)异步必须是关闭的,而客户端的异步是打开的,这个很好理解.<br />2.在服务器端的xmlhttp.Responsebody 这里用的是Responsebody而不是ResponseText或ResponseXml,一开始我是用ResponseText,但在函数bytesToBSTR转换编码的时候提示错误,经过比较发现其他的asp小偷程序里的代码都是Responsebody,分析后,发现body返回来的是二进制数据而不是像ResponseText或ResponseXml那样返回字符或dom对象.</p>
										<p>ajax的asp代理函数介绍:<br />send_request(url) ,url为地址 </p>
										<p>服务器端代码如下带自动判断所有字符编码,已测试 日语 韩语 繁体:</p>
										<p>&lt;%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" </p>
										<p>
												<span class="code">
												</span>
										</p>
										<p>"http://www.w3.org/TR/html4/loose.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;<br />&lt;title&gt;XMLHTTP&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;% </p>
										<p> </p>
										<p>Server.ScriptTimeout=9999999;<br />function send_request(url) {<br /> var codedtext;<br /> http_request = Server.CreateObject("Microsoft.XMLHTTP");<br /> http_request.Open("GET",url,false);<br /> http_request.Send(null);<br /> if (http_request.ReadyState == 4){<br />  //自动判断编码开始<br />  var charresult = http_request.ResponseText.match(/CharSet=(\S+)\"&gt;/i);<br />  if (charresult != null){<br />  var Cset = charresult[1];<br />  }else{Cset = "gb2312"}//对获取不到的网站采用gb2312编码,可自行更改<br />  <br />//自动判断编码结束<br />  codedtext = bytesToBSTR(http_request.Responsebody,Cset);<br />  }else{<br />  codedtext = "Erro";<br />  }<br /> return(codedtext);<br />}</p>
										<p>function bytesToBSTR(body,Cset){<br />var objstream;<br />objstream = Server.CreateObject("Adodb.Stream");<br />objstream.Type = 1;<br />objstream.Mode = 3;<br />objstream.Open();<br />objstream.Write(body);<br />objstream.Position = 0;<br />objstream.Type = 2;<br />objstream.Charset = Cset;<br />bytesToBSTR = objstream.Readtext;<br />objstream.Close;<br />return(bytesToBSTR);<br />}</p>
										<p>%&gt;<br />&lt;body&gt;<br />&lt;% Response.Write(send_request("http://www.daum.net")) %&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /></p>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/juhongtao/aggbug/120115.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/juhongtao/" target="_blank">javaGrowing</a> 2007-05-26 00:31 <a href="http://www.blogjava.net/juhongtao/archive/2007/05/26/120115.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通用js校验类</title><link>http://www.blogjava.net/juhongtao/archive/2006/11/15/81244.html</link><dc:creator>javaGrowing</dc:creator><author>javaGrowing</author><pubDate>Wed, 15 Nov 2006 05:50:00 GMT</pubDate><guid>http://www.blogjava.net/juhongtao/archive/2006/11/15/81244.html</guid><wfw:comment>http://www.blogjava.net/juhongtao/comments/81244.html</wfw:comment><comments>http://www.blogjava.net/juhongtao/archive/2006/11/15/81244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/juhongtao/comments/commentRss/81244.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/juhongtao/services/trackbacks/81244.html</trackback:ping><description><![CDATA[
		<table class="tablenormal">
				<tbody>
						<tr>
								<td>
										<table class="overflow">
												<tbody>
														<tr>
																<td height="150" valign="top">
		
			
			
			
			
			
			
			
				
				
					
						
						
							common.js <br /><br /><br /><pre class="overflow"> //扩展String类功能<br />//删除字符串二边空格<br />   String.prototype.trim = function()<br />   {<br />    return this.replace(/(^[\s]*)|([\s]*$)/g, "");<br />   };<br />   //删除字符串左边空格<br />   String.prototype.lTrim = function()<br />   {<br />    return this.replace(/(^[\s]*)/g, "");<br />   };<br />   //删除字符串右边空格<br />   String.prototype.rTrim = function()<br />   {<br />    return this.replace(/([\s]*$)/g, "");<br />   };</pre><br />--------------------------------------------------------------------- <br />chkUtil.js <br /><br /><pre class="overflow"> //定义一个可静态调用方法的js类<br />function ChkUtil() { }<br />//校验是否为空(先删除二边空格再验证)<br />ChkUtil.isNull = function (str) {<br /> if (null == str ||  ""== str.trim()) {<br />  return true;<br /> } else {<br />  return false;<br /> }<br />};<br />//校验是否全是数字<br />ChkUtil.isDigit  = function (str) {<br /> var patrn=/^\d+$/;<br /> return patrn.test(str);<br />};<br />//校验是否是整数<br />ChkUtil.isInteger = function (str) {<br /> var patrn=/^([+-]?)(\d+)$/;<br /> return patrn.test(str);<br />};<br />//校验是否为正整数<br />ChkUtil.isPlusInteger = function (str) {<br /> var patrn=/^([+]?)(\d+)$/;<br /> return patrn.test(str);<br />};<br />//校验是否为负整数<br />ChkUtil.isMinusInteger = function (str) {<br /> var patrn=/^-(\d+)$/;<br /> return patrn.test(str);<br />};<br />//校验是否为浮点数<br />ChkUtil.isFloat=function(str){<br /> var patrn=/^([+-]?)\d*\.\d+$/;<br /> return patrn.test(str);<br />};<br />//校验是否为正浮点数<br />ChkUtil.isPlusFloat=function(str){<br />  var patrn=/^([+]?)\d*\.\d+$/;<br />  return patrn.test(str);<br />};<br />//校验是否为负浮点数<br />ChkUtil.isMinusFloat=function(str){<br />  var patrn=/^-\d*\.\d+$/;<br />  return patrn.test(str);<br />};<br />//校验是否仅中文<br />ChkUtil.isChinese=function(str){<br /> var patrn=/[\u4E00-\u9FA5\uF900-\uFA2D]+$/;<br /> return patrn.test(str);<br />};<br />//校验是否仅ACSII字符<br />ChkUtil.isAcsii=function(str){<br />var patrn=/^[\x00-\xFF]+$/;<br />return patrn.test(str);<br />};<br />//校验手机号码<br />ChkUtil.isMobile = function (str) {<br /> var patrn = /^0?1((3[0-9]{1})|(59)){1}[0-9]{8}$/;<br /> return patrn.test(str);<br />};<br />//校验电话号码<br />ChkUtil.isPhone = function (str) {<br /> var patrn = /^(0[\d]{2,3}-)?\d{6,8}(-\d{3,4})?$/;<br /> return patrn.test(str);<br />};<br />//校验URL地址<br />ChkUtil.isUrl=function(str){<br />var patrn= /^http[s]?:\/\/[\w-]+(\.[\w-]+)+([\w-\.\/?%&amp;=]*)?$/;<br />return patrn.test(str);<br />};<br />//校验电邮地址<br />ChkUtil.isEmail = function (str) {<br /> var patrn = /^[\w-]+@[\w-]+(\.[\w-]+)+$/;<br /> return patrn.test(str);<br />};<br />//校验邮编<br />ChkUtil.isZipCode = function (str) {<br /> var patrn = /^\d{6}$/;<br /> return patrn.test(str);<br />};<br />//校验合法时间<br />ChkUtil.isDate = function (str) {<br />  if(!/\d{4}(\.|\/|\-)\d{1,2}(\.|\/|\-)\d{1,2}/.test(str)){<br />    return false;<br />  }<br />  var r = str.match(/\d{1,4}/g);<br />  if(r==null){return false;};<br />  var d= new Date(r[0], r[1]-1, r[2]);<br />  return (d.getFullYear()==r[0]&amp;&amp;(d.getMonth()+1)==r[1]&amp;&amp;d.getDate()==r[2]);<br />};<br />//校验字符串：只能输入6-20个字母、数字、下划线(常用手校验用户名和密码)<br />ChkUtil.isString6_20=function(str){<br /> var patrn=/^(\w){6,20}$/;<br /> return patrn.test(str);<br />};</pre><br />------------------------------------------------------------------ <br />调用示例 <br /><pre class="overflow"><br />  &lt;script type='text/javascript' src='./common.js'&gt;&lt;/script&gt;<br />  &lt;script type='text/javascript' src='./chkUtil.js'&gt;&lt;/script&gt;<br />  &lt;script type='text/javascript'&gt;<br />   function $F(id){<br />      if(ChkUtil.isNull(id)){alert("函数$F()的参数不能为空");return false;}<br />      return document.getElementById(id).value;<br />   }<br />   function test(){<br />    var area=$F("area");<br />    if(area==false)return;<br />    alert(ChkUtil.isDate(area));//判断是否是合法日期<br />   }</pre></td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
						<!-- user pen -->
						<tr>
								<td>
										<br />
								</td>
						</tr>
						<!-- submit time -->
						<tr>
								<td>
										<table class="tablenormal">
												<tbody>
														<tr>
																<td width="80%">
																		<div class="thread_time">    </div>
																		<span class="gray">
																				<label>发表时间:2006-10-28 13:01</label>
																		</span>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/juhongtao/aggbug/81244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/juhongtao/" target="_blank">javaGrowing</a> 2006-11-15 13:50 <a href="http://www.blogjava.net/juhongtao/archive/2006/11/15/81244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 操作 excel</title><link>http://www.blogjava.net/juhongtao/archive/2006/11/09/80259.html</link><dc:creator>javaGrowing</dc:creator><author>javaGrowing</author><pubDate>Thu, 09 Nov 2006 13:24:00 GMT</pubDate><guid>http://www.blogjava.net/juhongtao/archive/2006/11/09/80259.html</guid><wfw:comment>http://www.blogjava.net/juhongtao/comments/80259.html</wfw:comment><comments>http://www.blogjava.net/juhongtao/archive/2006/11/09/80259.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/juhongtao/comments/commentRss/80259.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/juhongtao/services/trackbacks/80259.html</trackback:ping><description><![CDATA[function MakeExcel(){ <br />var i,j; <br />    try { <br />      var xls    = new ActiveXObject ( "Excel.Application" ); <br />     } <br />    catch(e) { <br />         alert( "要打印该表，您必须安装Excel电子表格软件，同时浏览器须使用“ActiveX 控件”，您的浏览器须允许执行控件。 请点击【帮助】了解浏览器设置方法！"); <br />              return ""; <br />     } <br /><br />    xls.visible =true;  //设置excel为可见 <br /><br />    var xlBook = xls.Workbooks.Add; <br />    var xlsheet = xlBook.Worksheets(1); <br /><!--合并-->     <br />      xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,7)).mergecells=true; <br />      xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,7)).value="发卡记录"; <br />     //  xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,6)).Interior.ColorIndex=5;//设置底色为蓝色  <br />                //   xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,6)).Font.ColorIndex=4;//设置字体色          <br />   // xlsheet.Rows(1). Interior .ColorIndex = 5 ;//设置底色为蓝色  设置背景色 Rows(1).Font.ColorIndex=4   <br /><br /><!--设置行高-->     <br />    xlsheet.Rows(1).RowHeight = 25; <br /><!--设置字体 ws.Range(ws.Cells(i0+1,j0), ws.Cells(i0+1,j1)).Font.Size = 13 -->     <br />    xlsheet.Rows(1).Font.Size=14; <br /><!--设置字体 设置选定区的字体 &nbsp;xlsheet.Range(xlsheet.Cells(i0,j0), ws.Cells(i0,j0)).Font.Name = "黑体" -->     <br />    xlsheet.Rows(1).Font.Name="黑体"; <br /><!--设置列宽 xlsheet.Columns(2)=14;-->     <br /><br />    xlsheet.Columns("A:D").ColumnWidth =18; <br /><!--设置显示字符而不是数字-->      <br />    xlsheet.Columns(2).NumberFormatLocal="@"; <br />    xlsheet.Columns(7).NumberFormatLocal="@"; <br /><br /><br />     //设置单元格内容自动换行 range.WrapText  =  true  ; <br />     //设置单元格内容水平对齐方式 range.HorizontalAlignment  =  Excel.XlHAlign.xlHAlignCenter;//设置单元格内容竖直堆砌方式 <br />      //range.VerticalAlignment=Excel.XlVAlign.xlVAlignCenter <br />    //range.WrapText  =  true;  xlsheet.Rows(3).WrapText=true  自动换行 <br />    <br />    //设置标题栏 <br /><br />     xlsheet.Cells(2,1).Value="卡号"; <br />     xlsheet.Cells(2,2).Value="密码"; <br />     xlsheet.Cells(2,3).Value="计费方式"; <br />     xlsheet.Cells(2,4).Value="有效天数"; <br />     xlsheet.Cells(2,5).Value="金额"; <br />     xlsheet.Cells(2,6).Value="所属服务项目"; <br />       xlsheet.Cells(2,7).Value="发卡时间"; <br /><br />     var oTable=document.all['fors:data']; <br />     var rowNum=oTable.rows.length; <br />     for(i=2;i&lt;=rowNum;i++){ <br />     for (j=1;j&lt;=7;j++){ <br />//html table类容写到excel <br /><br />       xlsheet.Cells(i+1,j).Value=oTable.rows(i-1).cells(j-1).innerHTML; <br />            } <br /><br /><br />    } <br /><!-- &nbsp; xlsheet.Range(xls.Cells(i+4,2),xls.Cells(rowNum,4)).Merge; -->     <br />    // xlsheet.Range(xlsheet.Cells(i, 4), xlsheet.Cells(i-1, 6)).BorderAround , 4 <br />     // for(mn=1,mn&lt;=6;mn++) .     xlsheet.Range(xlsheet.Cells(1, mn), xlsheet.Cells(i1, j)).Columns.AutoFit; <br />      xlsheet.Columns.AutoFit; <br />                 xlsheet.Range( xlsheet.Cells(1,1),xlsheet.Cells(rowNum+1,7)).HorizontalAlignment =-4108;//居中 <br />                   xlsheet.Range( xlsheet.Cells(1,1),xlsheet.Cells(1,7)).VerticalAlignment =-4108; <br />                 xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Font.Size=10; <br /><br />      xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(3).Weight = 2; //设置左边距 <br />       xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(4).Weight = 2;//设置右边距 <br />             xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(1).Weight = 2;//设置顶边距 <br />       xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(2).Weight = 2;//设置底边距 <br /> xls.UserControl = true;  //很重要,不能省略,不然会出问题 意思是excel交由用户控制 <br />       xls=null; <br />       xlBook=null; <br />       xlsheet=null; <br /><br />} <br /><img src ="http://www.blogjava.net/juhongtao/aggbug/80259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/juhongtao/" target="_blank">javaGrowing</a> 2006-11-09 21:24 <a href="http://www.blogjava.net/juhongtao/archive/2006/11/09/80259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>更改IE浏览器默认的源文件编辑器</title><link>http://www.blogjava.net/juhongtao/archive/2006/11/06/79468.html</link><dc:creator>javaGrowing</dc:creator><author>javaGrowing</author><pubDate>Mon, 06 Nov 2006 12:19:00 GMT</pubDate><guid>http://www.blogjava.net/juhongtao/archive/2006/11/06/79468.html</guid><wfw:comment>http://www.blogjava.net/juhongtao/comments/79468.html</wfw:comment><comments>http://www.blogjava.net/juhongtao/archive/2006/11/06/79468.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/juhongtao/comments/commentRss/79468.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/juhongtao/services/trackbacks/79468.html</trackback:ping><description><![CDATA[
		<h4>用户在浏览网页时，如果在网页中单击鼠标右键并选择菜单中的“查看源文件”选项后，系统就会调用记事本打开该网页的HTML源文件，用户可以通过修改注册表来更改默认的打开程序，然后如下：<br />一：打开注册表。<br />“开始”菜单-&gt;“运行”-&gt;输入 regedit 然后点确定。<br />二：打开HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\INTERNET EXPLORER,在其下新建一个主键"View Source Editor",在其下再新一个主键"Editor Name",又击右侧窗口中的"默认"将数值设为更换程序的路径及文件名.<br /><br />三:重新启动INTERNET EXPLORER,查看某个网页的源文件,用户就会发现打开的程序已经更改了. </h4>
<img src ="http://www.blogjava.net/juhongtao/aggbug/79468.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/juhongtao/" target="_blank">javaGrowing</a> 2006-11-06 20:19 <a href="http://www.blogjava.net/juhongtao/archive/2006/11/06/79468.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>禁止window.close()方法弹出的询问窗</title><link>http://www.blogjava.net/juhongtao/archive/2006/11/06/79354.html</link><dc:creator>javaGrowing</dc:creator><author>javaGrowing</author><pubDate>Mon, 06 Nov 2006 03:39:00 GMT</pubDate><guid>http://www.blogjava.net/juhongtao/archive/2006/11/06/79354.html</guid><wfw:comment>http://www.blogjava.net/juhongtao/comments/79354.html</wfw:comment><comments>http://www.blogjava.net/juhongtao/archive/2006/11/06/79354.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/juhongtao/comments/commentRss/79354.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/juhongtao/services/trackbacks/79354.html</trackback:ping><description><![CDATA[
		<div class="postcontent">
				<p> </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" />window.moveTo(</span>
						<span style="COLOR: #000000">2000</span>
						<span style="COLOR: #000000">,</span>
						<span style="COLOR: #000000">2000</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"> para </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> window.location.search; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">var</span>
						<span style="COLOR: #000000"> width </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">screen.availWidth; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">var</span>
						<span style="COLOR: #000000"> height </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> screen.availHeight; <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"> arg </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> window.showModalDialog('ChooseEstate.htm'</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">para,window,'dialogWidth:'</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">width</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">'px;dialogHeight:'</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">height</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">'px;help:</span>
						<span style="COLOR: #000000">0</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" />window.close(); <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>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
				</div>
				<p>－－－－使用以上代码，会弹出一个询问窗口，是否关闭当前窗口，我们只要稍做更改，就可避过这个机制： <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" />window.moveTo(</span>
						<span style="COLOR: #000000">2000</span>
						<span style="COLOR: #000000">,</span>
						<span style="COLOR: #000000">2000</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"> para </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> window.location.search; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">var</span>
						<span style="COLOR: #000000"> width </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">screen.availWidth; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">var</span>
						<span style="COLOR: #000000"> height </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> screen.availHeight; <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" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">var</span>
						<span style="COLOR: #000000"> arg </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> window.showModalDialog('ChooseEstate.htm'</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">para,window,'dialogWidth:'</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">width</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">'px;dialogHeight:'</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">height</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">'px;help:</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;'); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><font style="BACKGROUND-COLOR: #ffff00">window.opener </font></span>
						<span style="COLOR: #000000">
								<font style="BACKGROUND-COLOR: #ffff00">=</font>
						</span>
						<span style="COLOR: #000000">
								<font style="BACKGROUND-COLOR: #ffff00"> window;</font> 或window.opener=null;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />window.close(); <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>
						<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>
		</div>
<img src ="http://www.blogjava.net/juhongtao/aggbug/79354.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/juhongtao/" target="_blank">javaGrowing</a> 2006-11-06 11:39 <a href="http://www.blogjava.net/juhongtao/archive/2006/11/06/79354.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript中的编码与解码</title><link>http://www.blogjava.net/juhongtao/archive/2006/11/03/78936.html</link><dc:creator>javaGrowing</dc:creator><author>javaGrowing</author><pubDate>Fri, 03 Nov 2006 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/juhongtao/archive/2006/11/03/78936.html</guid><wfw:comment>http://www.blogjava.net/juhongtao/comments/78936.html</wfw:comment><comments>http://www.blogjava.net/juhongtao/archive/2006/11/03/78936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/juhongtao/comments/commentRss/78936.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/juhongtao/services/trackbacks/78936.html</trackback:ping><description><![CDATA[
		<p>
				<span twffan="done">javascript中可用的编码解码函数，有如下的组合：</span>
				<br />
		</p>
		<ul>
				<li>
						<span twffan="done">escape(string);</span>
						<br />
						<span twffan="done">unescape(string);</span>
				</li>
				<li>
						<span twffan="done">encodeURI(string);</span>
						<br />
						<span twffan="done">decodeURI(string);</span>
				</li>
				<li>
						<span twffan="done">encodeURIComponent(string);</span>
						<br />
						<span twffan="done">decodeURIComponent(string);</span>
				</li>
		</ul>
		<p>
				<span twffan="done">他们之间的区别为：</span>
		</p>
		<p>
				<span twffan="done">escape/unescape：</span>
				<br />
				<span twffan="done">以16进制编码字符串，对空格、符号等字符用%xx编码表示，对中文等字符用%uxxxx编码表示。自javascript1.5之后，此方法已经不被推荐使用。</span>
		</p>
		<p>
				<span twffan="done">encodeURI/decodeURI：</span>
				<br />
				<span twffan="done">以UTF-8编码编码字符串，对这些字符：“</span>
				<b>
						<span twffan="done">; , / ? : @ &amp; = + $</span>
				</b>
				<span twffan="done">”不做编码。</span>
		</p>
		<p>
				<span twffan="done">encodeURIComponent/decodeURIComponent：</span>
				<br />
				<span twffan="done">以UTF-8编码编码所有字符串。</span>
		</p>
		<p>
				<span twffan="done">因为escape/unescape已经deprecated。就不说它了，encodeURI和encodeURIComponent之前的区别用实例说明：</span>
				<br />
				<br />
				<span twffan="done">比如说要使用get方式将一个参数u，传递给服务器：</span>
		</p>
		<div style="BORDER-RIGHT: 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: 1px solid; PADDING-LEFT: 5px; BACKGROUND: rgb(230,230,230) 0% 50%; PADDING-BOTTOM: 5px; BORDER-LEFT: 1px solid; WIDTH: 90%; PADDING-TOP: 5px; BORDER-BOTTOM: 1px solid; FONT-FAMILY: 'Courier New'; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial" twffan="done">
				<div twffan="done">
						<b>
								<font color="#0000ff">
										<span twffan="done">var</span>
								</font>
						</b>
						<span twffan="done"> u="index.php?blogId=1&amp;op=Default";</span>
						<br />
						<b>
								<font color="#0000ff">
										<span twffan="done">var</span>
								</font>
						</b>
						<span twffan="done"> getURL="http://www.simplelife.cn/test.php?p="+encodeURI(u);</span>
				</div>
		</div>
		<br />
		<span twffan="done">这里，如果使用了encodeURI，那么最终的getURL的值为：</span>
		<br />
		<div style="BORDER-RIGHT: 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: 1px solid; PADDING-LEFT: 5px; BACKGROUND: rgb(230,230,230) 0% 50%; PADDING-BOTTOM: 5px; BORDER-LEFT: 1px solid; WIDTH: 90%; PADDING-TOP: 5px; BORDER-BOTTOM: 1px solid; FONT-FAMILY: 'Courier New'; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial" twffan="done">
				<div twffan="done">
						<span twffan="done">http://www.simplelife.cn/test.php?p=index.php?blogId=1&amp;op=Default</span>
				</div>
		</div>
		<br />
		<span twffan="done">这样，对参数u中的字符"&amp;op=Default"，将不会作为字符串参数传递到服务器端，而是当作test.php的参数传递过去了，因为对"&amp;op=Default"中的字符"&amp;"没有做编码。</span>
		<br />
		<span twffan="done">所以，在这种应用<font class="intellitextLink" onmouseover="tixa_adDisplay('场景','H',this)" onmouseout="tixa_adHide(this)" color="#006400"><u>场景</u></font>下，就需要使用encodeURIComponent，编码后的getURL值为：</span>
		<br />
		<div style="BORDER-RIGHT: 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: 1px solid; PADDING-LEFT: 5px; BACKGROUND: rgb(230,230,230) 0% 50%; PADDING-BOTTOM: 5px; BORDER-LEFT: 1px solid; WIDTH: 90%; PADDING-TOP: 5px; BORDER-BOTTOM: 1px solid; FONT-FAMILY: 'Courier New'; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial" twffan="done">
				<div twffan="done">
						<span twffan="done">http://www.simplelife.cn/test.php?p=index.php%3FblogId%3D1%26op%3DDefault</span>
				</div>
		</div>
		<br />
		<span twffan="done">这样，参数就可以顺利传递过去了。在服务器端得到的字符串将是正确的u。</span>
		<br />
		<br />
		<span twffan="done">反之，如果需要通过get方式访问某一URL，但是URL中包含中文等字符，为了防止乱码等编码问题，需要将URL通过encodeURI进行编码。</span>
<img src ="http://www.blogjava.net/juhongtao/aggbug/78936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/juhongtao/" target="_blank">javaGrowing</a> 2006-11-03 15:49 <a href="http://www.blogjava.net/juhongtao/archive/2006/11/03/78936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>