??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧洲成人,jzzjzzjzz亚洲成熟少妇,粉嫩老牛aⅴ一区二区三区http://www.aygfsteel.com/juhongtao/category/16856.htmlzh-cnMon, 23 Jul 2007 12:59:08 GMTMon, 23 Jul 2007 12:59:08 GMT60javascript 的几U排序方?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/juhongtao/archive/2007/07/23/131899.html</guid><wfw:comment>http://www.aygfsteel.com/juhongtao/comments/131899.html</wfw:comment><comments>http://www.aygfsteel.com/juhongtao/archive/2007/07/23/131899.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/juhongtao/comments/commentRss/131899.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/juhongtao/services/trackbacks/131899.html</trackback:ping><description><![CDATA[ <p>所谓排序,是要整理文件中的记录,使之按关键字递增(或递减)ơ序排列h。其切定义如下Q?br />  输入Qn个记录R<sub>1</sub>QR<sub>2</sub>Q…,R<sub>n</sub>Q其相应的关键字分别为K<sub>1</sub>QK<sub>2</sub>Q…,K<sub>n</sub>?br />  输出QR<sub>il</sub>QR<sub>i2</sub>Q…,R<sub>in</sub>Q得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>    q里Q我们简单介l几U排序方法,直接插入排序、希儿排序、冒泡排序、快速排序、直接选择排序Q文中所提及的代码在IE6下测试通过?/p> <p> <strong>直接插入排序基本思想</strong> <br />    假设待排序的记录存放在数lR[1..n]中。初始时QR[1]自成1个有序区Q无序区为R[2..n]。从i=2L至i=n为止Q依ơ将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区?/p> <p>    法描述<br /><span id="wmqeeuq" 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);">插入排序->直接插入法排?/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);"><</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);"><</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);">>-</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) </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);">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>作ؓW一个增量,把文件的全部记录分成d<sub>1</sub>个组。所有距Mؓd<sub>l</sub>的倍数的记录放在同一个组中。先在各l内q行直接插h排序Q然后,取第二个增量d<sub>2</sub><d<sub>1</sub>重复上述的分l和排序Q直x取的增量d<sub>t</sub>=1(d<sub>t</sub><d<sub>t-l</sub><?lt;d<sub>2</sub><d<sub>1</sub>)Q即所有记录放在同一l中q行直接插入排序为止?br />   该方法实质上是一U分l插入方法?/p> <p>    法描述<br /><span id="wmqeeuq" 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);">插入排序->希儿排序</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);">></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);"><</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);"><</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);">>-</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) </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);">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>    被排序的记录数lR[1..n]垂直排列Q每个记录R[i]看作是重量ؓR[i].key的气泡。根据轻气不能在重气之下的原则,从下往上扫描数l? RQ凡扫描到违反本原则的轻气Q就使其向上"飘Q"。如此反复进行,直到最后Q何两个气泡都是轻者在上,重者在下ؓ止?br /></p> <p>    法描述<br /><span id="wmqeeuq" 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);">交换排序->冒排序</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);"><</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);">>=</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);"><</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>    原问题分解q个规模更小但结构与原问题相似的子问题。递归地解q些子问题,然后这些子问题的解l合为原问题的解?br />    在R[low..high]中Q选一个记录作为基?Pivot)Q以此基准将当前无序区划分ؓ左、右两个较小的子区间R[low..pivotpos- 1)和R[pivotpos+1..high]Qƈ使左边子区间中所有记录的关键字均于{于基准记录(不妨Cؓpivot)的关键字 pivot.keyQ右边的子区间中所有记录的关键字均大于{于pivot.keyQ而基准记录pivot则位于正的位置(pivotpos)上,它无 d加后l的排序?/p> <p>    法描述<br /><span id="wmqeeuq" 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);">交换排序->快速排?/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);">></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);"><</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);"><</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);"><</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[j]</span><span style="color: rgb(0, 0, 0);">>=</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);"><</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);"><</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[i]</span><span style="color: rgb(0, 0, 0);"><=</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);"><</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(arrQlowQhigh);</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个记录的文g的直接选择排序可经qn</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1直接选择排序得到有序l果Q?br /> ①初始状态:无序ZؓR[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">..n]Q有序区为空?br /> ②第1排?br />    在无序区R[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">..n]中选出关键字最的记录R[k]Q将它与无序区的W?个记录R[</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">]交换QR[</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个的新有序区和记录个数减?个的新无序区?br />  …?br /> ③第i排?br />  Wi排序开始时Q当前有序区和无序区分别为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);">)。该排序从当前无序Z选出关键字最的记录R [k]Q将它与无序区的W?个记录R[i]交换QR[</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个的新有序区和记录个数减?个的新无序区?br />    q样Qn个记录的文g的直接选择排序可经qn</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1直接选择排序得到有序l果?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);">选择排序->直接选择排序</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);"><</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);"><</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);"><</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.aygfsteel.com/juhongtao/aggbug/131899.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/juhongtao/" target="_blank">javaGrowing</a> 2007-07-23 16:23 <a href="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/juhongtao/archive/2007/07/23/131898.html</guid><wfw:comment>http://www.aygfsteel.com/juhongtao/comments/131898.html</wfw:comment><comments>http://www.aygfsteel.com/juhongtao/archive/2007/07/23/131898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/juhongtao/comments/commentRss/131898.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/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应用中,数据从服务器端返回到客户端,以表格Ş式表现出来。如果要Ҏ据集按指定的列排序显C,常规做法都是向服务器发出hQ服务器端程序重C数据库中取出按指定列排序的数据,q回l客LQ页面重新显C排序后数据?br /> <br />采用q种方式有如下缺点:<br />1- 响应旉延迟Q每ơ排序都要向服务器端发送请求,{待l果q回Q同时增加网l负载?br />2- ~程复杂Q可l护性差Q而且客户端和服务器端代码耦合度很高,客户端和服务器端都要处理排序涉及的列名、排序方式,如果有分和查询条gQ都需要在客户端页面中保留Q排序请求时重新传递到服务器端Q当参数数量很多时极易出错?br />3- 重用度很低,针对不同表格Q很难抽象出一个公q序来qQ需要逐个~写代码实现Q增加工作量?br /> <br />现在换一个角度考虑Q数据既然已下蝲C客户端,在重新排序时没有必要再重服务器端获取Q只要对览器中的数据重新排序显C就可以了。要实现该目标,需要做C下几点:<br />1 - 获得表格中要排序的数据,其攑օ一?l数l中?br />2 - ?l数l排序?br />3 - 用排序后的数据重新更新表根{?br /> <br />利用览器支持的DOM(Document Object Model)和JavaScript卛_实现上述目标?br /> <br />通常面中会很多?lt;table>Q要获得需要排序数据所在的tableQ需要在<table>中增加一个id属性,便于document对象用getElementById得到该表格对象,例如要排序的表格定义如下Q?br /> <table id="st" ><br />    <tr><br />        <td>1</td><br />        <td>2</td><br />    </tr><br /></table><br /> <br />在javascript中,用var objTable = document.getElementById("st")可得到表格对象Q该对象在DOM中定义ؓ一个Element?br /> <br />? 后用 var objRows = objTable.getElementsByTagName("tr")得到该表g全部的行对象QObjRows.lengthq回该表D敎ͼ var rowi = objRows[i].getElementsByTagName("td")得到Wi行的全部<td>节点Qi?开始计敎ͼ rowi.item(j)则可得到Wi行,Wj列的节点Q该节点的innerHTML节点<td></td>之间的内宏V?br /> <br />获取表格数据?l数l的代码见源代码Q此处略?br /> <br />下面说明在javascript?l数l的构造和排序?br />javascript不支?l数l,因此需要用数组的数l来模拟一?l数l,其方法是先定义一?l数l,元素个数?l数l的行数Q然后对每个元素赋一个|gؓ一个数l,其元素个Cؓ2l数l的列数。构造代码如下:<br /> <br />var rows = new Array(R);  //R?br />for(var i = 0; i < rows.length; i++){<br />    rows[i] = new Array(C);    //C为列?br />}<br /> <br /> <br />利用javascript中的Array.sort(comparer)对rows中的元素排序Q比较方式由重新定义的比较函数得到。要ҎWj列元素的大小排序Q只要定义如下函数即可:<br /> <br />function compareCol(a,b){<br />    <br />    if (a[j] < b[j])<br />        return -1;<br /> <br />    if (a[j] > b[j])<br />        return 1;<br /> <br />   return 0;<br /> <br />}<br /> <br />因ؓcompareCol只能有两个参敎ͼ因此j要定义ؓ全局变量?br /> <br />用rows.sort (compareCol)可实现Ҏj列值的大小对行q行排序。根据javascript文档Q字W串比较大小是按照其Unicode~码的大来? 较,对英文排序没有问题,对中文排序时׃是按通常的拼x序,那需要javascript提供本地化支持,目前没有发现javascript此功能。该 功能在java中可用java.text.Collator实现?br /> <br /> <br /> 以上介绍了在本地Ҏ览器中的数据q行排序的主要思想Q? 为方便用,这些功能进行了装Q以javascript函数的提供,存放在sorttable.js文g中,在需要的面中用<script type=text/javascript src='sorttable.js'></script>引入?br /> <br /> <br /> 下面说明排序函数原型和用方法?br /> <br />函数1 function sortTable(tableId,sortCol,compareType)<br />寚w面中指定表格中的数据q行排序Q通常W一行ؓ标题行,排序时从W二行开始,W一ơ调用ؓ升序排列Q第二次为降序排列,依次轮换?br />tableId    ?lt;table id=''>中id的|在同一个页面中要唯一?br />sortCol    排序时用来比较大的数据所在的列,?开始计数?br />compareType 排序时比较大的方式Qs-按字W串比较大小Qn-按数字比较大?br /> <br /> <br /> <br /> 函数2 function sortTableInRange(tableId,sortCol,compareType,startRow,endRow,startCol,endCol)<br /> <br />        对表g指定的区域数据排序,有时数据W一列ؓ水P最后一行ؓ合计Q这些数据不需要参与排序,可用此函数来寚w分数据排序?br />        <br />        tableId    ?lt;table id=''>中id的|在同一个页面中要唯一?br />        sortCol    排序时用来比较大的数据所在的列,?开始计数?br />        compareType 排序时比较大的方式Qs-按字W串比较大小Qn-按数字比较大?br />        startRow,endRow 要排序区域开始和l束行号Q从1开始计数。例如对W?行到W?行排序,startRow=2QendRow=7<br />        startCol,endCol  要排序区域开始和l束列号Q从1开始计数?br /> <br /> <br /> <br /> <br />  <br />存在的问题:<br />1- 中文不能按拼x序?br /> <br /> <br />要注意的问题Q?br />要排序的table必须用ID标示Qƈ要作为参Cl排序函敎ͼ表格中的数据应该是可以排序的Q否则结果不可预知;要排序的表格不能有嵌套表Q否则排序出错?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 /> 附源代码Q要q行例子Q需要将javascript代码保存到sorttable.js文g中,html部分代码保存到同一目录下另一文g中即可?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);">  在本机对览器页面表g的数据行q行排序的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);">比较函数Q用于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);">本函数比较数l元素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);"><</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);">></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);"><</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);">></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相反方式比较大小Q用于倒序使用</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);"><</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);">></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相反方式比较大小Q用于倒序使用</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);"><</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);">></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);"><</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.aygfsteel.com/juhongtao/aggbug/131898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/juhongtao/" target="_blank">javaGrowing</a> 2007-07-23 16:20 <a href="http://www.aygfsteel.com/juhongtao/archive/2007/07/23/131898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解析responseBodyhttp://www.aygfsteel.com/juhongtao/archive/2007/05/26/120124.htmljavaGrowingjavaGrowingFri, 25 May 2007 17:07:00 GMThttp://www.aygfsteel.com/juhongtao/archive/2007/05/26/120124.htmlhttp://www.aygfsteel.com/juhongtao/comments/120124.htmlhttp://www.aygfsteel.com/juhongtao/archive/2007/05/26/120124.html#Feedback0http://www.aygfsteel.com/juhongtao/comments/commentRss/120124.htmlhttp://www.aygfsteel.com/juhongtao/services/trackbacks/120124.htmlfunction toHtml(strBody,cset)
{
 var Rec=new ActiveXObject("ADODB.RecordSet");
 Rec.Fields.Append("DDD",201,1);
 Rec.Open();
 Rec.AddNew();

 Rec(0).AppendChunk(strBody);

 Rec.Update();
 var HTML=Rec(0).Value;
 Rec.Close();
 delete Rec;
 document.charset=cset;
 return(HTML);
}



javaGrowing 2007-05-26 01:07 发表评论
]]>
完美ajaxcR支持事g http://www.aygfsteel.com/juhongtao/archive/2007/05/26/120118.htmljavaGrowingjavaGrowingFri, 25 May 2007 16:37:00 GMThttp://www.aygfsteel.com/juhongtao/archive/2007/05/26/120118.htmlhttp://www.aygfsteel.com/juhongtao/comments/120118.htmlhttp://www.aygfsteel.com/juhongtao/archive/2007/05/26/120118.html#Feedback0http://www.aygfsteel.com/juhongtao/comments/commentRss/120118.htmlhttp://www.aygfsteel.com/juhongtao/services/trackbacks/120118.html出处Q?a >http://www.smallrain.net/study_show.asp?id=703

<div id="Error"></div>
<div id="State"></div>
<div id="DownloadEnd"></div>
<Script Language="JavaScript">
<!--
// more javascript from http://www.smallrain.net

function Ajax(OnError,OnState,OnDownloadEnd)
{
 // 错误字符?br /> this.ErrorStr   = null;
 // 错误事g驱动,当发生错误时触发
 this.OnError   = OnError;
 // 状态事仉?当状态改变时触发
 this.OnState   = OnState;
 // 完成事g驱动,当类操作完成时触?br /> this.OnDownloadEnd  = OnDownloadEnd;

 // XMLHTTP 发送数据类?GET ?POST
 this.method  = "GET";
 // 要获取的URL地址
 this.URL  = null;
 // 指定同步或异步读取方?true 为异?false 为同?
 this.sync  = true;
 // 当method ?POST ?所要发送的数据
 this.PostData  = null
 // q回d完成后的数据
 this.RetData   = null;

 // 创徏XMLHTTP对像
 this.HttpObj   = this.createXMLHttpRequest();
 if(this.HttpObj == null)
 {
  // 对像创徏p|时中止运?br />  return;
 }

 var Obj = this;
 // 调用事g?br /> this.HttpObj.onreadystatechange = function()
 {
  Ajax.handleStateChange(Obj);
 }
}

// UTF 转入 GB (by:Rimifon)
Ajax.prototype.UTFTOGB = function(strBody)
{
 var Rec=new ActiveXObject("ADODB.RecordSet");
 Rec.Fields.Append("DDD",201,1);
 Rec.Open();
 Rec.AddNew();
 Rec(0).AppendChunk(strBody);
 Rec.Update();
 var HTML=Rec(0).Value;
 Rec.Close();
 delete Rec;
 return(HTML);
}

// 创徏XMLHTTP对像
Ajax.prototype.createXMLHttpRequest = function()
{
 if (window.XMLHttpRequest)
 {
  //Mozilla 览?br />  return new XMLHttpRequest();
 }
 else if (window.ActiveXObject)
 {
         var msxmls = new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP');
         for (var i = 0; i < msxmls.length; i++)
         {
                 try
                 {
                         return new ActiveXObject(msxmls[i]);
                 }catch (e){}

  }
 }
 this.ErrorStr = "你的览器不支持XMLHttpRequest对象Q?
 if(this.OnError)
 {
  this.OnError(this.ErrorStr);
 }
     return null;
}

// 发送HTTPh
Ajax.prototype.send = function()
{

 if (this.HttpObj !== null)
 {
  this.URL = this.URL + "?t=" + new Date().getTime();
  this.HttpObj.open(this.method, this.URL, this.sync);
  if(this.method.toLocaleUpperCase() == "GET")
  {
   this.HttpObj.send(null);
  }
  else if(this.method.toLocaleUpperCase() == "POST")
  {
   this.HttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
   this.HttpObj.send(this.PostData);
  }
  else
  {
   this.ErrorStr = "错误的[method]命oQ?
   if(this.OnError)
   {
    this.OnError(this.ErrorStr);
   }
   return;
  }

  if (this.HttpObj.readyState == 4)
  {
   // 判断对象状?br />              if (this.HttpObj.status == 200)
                 {
    this.RetData = this.UTFTOGB(this.HttpObj.responseBody);
    if(this.OnDownloadEnd)
    {
     this.OnDownloadEnd(this.RetData);
    }
                         return;
                 }
   else
   {
    this.ErrorStr = "您所h的页面有异常Q?
    if(this.OnError)
    {
     this.OnError(this.ErrorStr);
    }
    return;
   }
  }

 }

}

// 事g?br />Ajax.handleStateChange = function(Obj)
{
 if(Obj.OnState)
 {
  Obj.OnState(Obj.HttpObj.readyState);
 }

 if (Obj.HttpObj.readyState == 4)
 {
  // 判断对象状?br />             if (Obj.HttpObj.status == 200)
                {
   Obj.RetData = Obj.UTFTOGB(Obj.HttpObj.responseBody);
   if(Obj.OnDownloadEnd)
   {
    Obj.OnDownloadEnd(Obj.RetData);
   }
                        return;
                }
  else
  {
   Obj.ErrorStr = "您所h的页面有异常Q?
   if(Obj.OnError)
   {
    Obj.OnError(Obj.ErrorStr);
   }
   return;
  }
 }
}


// 错误回调事g函数
function EventError(strValue)
{
 document.getElementById("Error").innerHTML = strValue;
}

// 状态回调事件函?br />function EventState(strValue)
{
 var strState = null;
 switch (strValue)
 {
     case 0:
  strState = "未初始化...";
  break;

     case 1:
  strState = "开始读取数?..";
  break;

     case 2:
  strState = "d数据...";
  break;

     case 3:
  strState = "d数据?..";
  break;

     case 4:
  strState = "d完成...";
  break;

     default:
  strState = "未初始化...";
  break;
 }
 document.getElementById("State").innerHTML = strState;
}

// 完成回调事g函数
function EventDownloadEnd(strValue)
{
 document.getElementById("DownloadEnd").innerHTML = strValue;
}


// 初始化Ajax对像,引入事g回调函数
var A1 = new Ajax(EventError,EventState,EventDownloadEnd);
// 指定method数据发送类?br />A1.method = "GET";
// 指定URL地址
A1.URL = "// 指定为异步处?br />A1.sync = true;
//发送请?br />A1.send();
//-->
</Script> 



javaGrowing 2007-05-26 00:37 发表评论
]]>
ajax代理E序自动判断字符~码 http://www.aygfsteel.com/juhongtao/archive/2007/05/26/120115.htmljavaGrowingjavaGrowingFri, 25 May 2007 16:31:00 GMThttp://www.aygfsteel.com/juhongtao/archive/2007/05/26/120115.htmlhttp://www.aygfsteel.com/juhongtao/comments/120115.htmlhttp://www.aygfsteel.com/juhongtao/archive/2007/05/26/120115.html#Feedback0http://www.aygfsteel.com/juhongtao/comments/commentRss/120115.htmlhttp://www.aygfsteel.com/juhongtao/services/trackbacks/120115.htmlajax代理E序自动判断字符~码

作者:llinzzi 旉Q?2006-03-16 文档cdQ原创 来自Q?a >蓝色理想
览l计 total:6402 | year:1609 | Quarter:376 | Month:132 | Week:26 | today:2

׃ajax在跨域的讉K上有问题,目前最好的Ҏ是做代理.写了个代理程序和心得.

Z做ajax的代?研究了下服务器端的xmlhttpq和客户端的ajax中的xmlhttp做了个比?后台代码是asp?

服务器端的xmlhttp也就是asp偷E序,我把代码Ҏ了javascript.

1.在服务器端的xmlhttp.Open("GET",url,false)异步必须是关闭的,而客L的异步是打开?q个很好理解.
2.在服务器端的xmlhttp.Responsebody q里用的是Responsebody而不是ResponseText或ResponseXml,一开始我是用ResponseText,但在函数bytesToBSTR转换~码的时候提C错?l过比较发现其他的asp偷E序里的代码都是Responsebody,分析?发现bodyq回来的是二q制数据而不是像ResponseText或ResponseXml那样q回字符或dom对象.

ajax的asp代理函数介绍:
send_request(url) ,url为地址

服务器端代码如下带自动判断所有字W编?已测?日语 韩语 J体:

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>XMLHTTP</title>
</head>
<%

 

Server.ScriptTimeout=9999999;
function send_request(url) {
 var codedtext;
 http_request = Server.CreateObject("Microsoft.XMLHTTP");
 http_request.Open("GET",url,false);
 http_request.Send(null);
 if (http_request.ReadyState == 4){
  //自动判断~码开?br />  var charresult = http_request.ResponseText.match(/CharSet=(\S+)\">/i);
  if (charresult != null){
  var Cset = charresult[1];
  }else{Cset = "gb2312"}//对获取不到的|站采用gb2312~码,可自行更?br />  
//自动判断~码l束
  codedtext = bytesToBSTR(http_request.Responsebody,Cset);
  }else{
  codedtext = "Erro";
  }
 return(codedtext);
}

function bytesToBSTR(body,Cset){
var objstream;
objstream = Server.CreateObject("Adodb.Stream");
objstream.Type = 1;
objstream.Mode = 3;
objstream.Open();
objstream.Write(body);
objstream.Position = 0;
objstream.Type = 2;
objstream.Charset = Cset;
bytesToBSTR = objstream.Readtext;
objstream.Close;
return(bytesToBSTR);
}

%>
<body>
<% Response.Write(send_request("http://www.daum.net")) %>
</body>
</html>



javaGrowing 2007-05-26 00:31 发表评论
]]>
通用js校验c?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/juhongtao/archive/2006/11/15/81244.html</guid><wfw:comment>http://www.aygfsteel.com/juhongtao/comments/81244.html</wfw:comment><comments>http://www.aygfsteel.com/juhongtao/archive/2006/11/15/81244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/juhongtao/comments/commentRss/81244.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/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"> //扩展Stringcd?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"> //定义一个可静态调用方法的jsc?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 />//校验是否为QҎ<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 />//校验手机L<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 />//校验电话L<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-\.\/?%&=]*)?$/;<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]&&(d.getMonth()+1)==r[1]&&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 />调用CZ <br /><pre class="overflow"><br />  <script type='text/javascript' src='./common.js'></script><br />  <script type='text/javascript' src='./chkUtil.js'></script><br />  <script type='text/javascript'><br />   function $F(id){<br />      if(ChkUtil.isNull(id)){alert("函数$F()的参C能ؓI?);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 id="wmqeeuq" class="thread_time">    </div> <span id="wmqeeuq" class="gray"> <label>发表旉:2006-10-28 13:01</label> </span> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <img src ="http://www.aygfsteel.com/juhongtao/aggbug/81244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/juhongtao/" target="_blank">javaGrowing</a> 2006-11-15 13:50 <a href="http://www.aygfsteel.com/juhongtao/archive/2006/11/15/81244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 操作 excelhttp://www.aygfsteel.com/juhongtao/archive/2006/11/09/80259.htmljavaGrowingjavaGrowingThu, 09 Nov 2006 13:24:00 GMThttp://www.aygfsteel.com/juhongtao/archive/2006/11/09/80259.htmlhttp://www.aygfsteel.com/juhongtao/comments/80259.htmlhttp://www.aygfsteel.com/juhongtao/archive/2006/11/09/80259.html#Feedback0http://www.aygfsteel.com/juhongtao/comments/commentRss/80259.htmlhttp://www.aygfsteel.com/juhongtao/services/trackbacks/80259.htmlvar i,j;
   try {
     var xls    = new ActiveXObject ( "Excel.Application" );
    }
   catch(e) {
        alert( "要打印该表,您必d装Excel电子表格软gQ同时浏览器M用“ActiveX 控g”,您的览器须允许执行控g?L凅R帮助】了解浏览器讄ҎQ?);
             return "";
    }

   xls.visible =true;  //讄excel为可?

   var xlBook = xls.Workbooks.Add;
   var xlsheet = xlBook.Worksheets(1);
   
     xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,7)).mergecells=true;
     xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,7)).value="发卡记录";
    //  xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,6)).Interior.ColorIndex=5;//讄底色?
               //   xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,6)).Font.ColorIndex=4;//讄字体?       
  // xlsheet.Rows(1). Interior .ColorIndex = 5 ;//讄底色? 讄背景?Rows(1).Font.ColorIndex=4  

   
   xlsheet.Rows(1).RowHeight = 25;
   
   xlsheet.Rows(1).Font.Size=14;
   
   xlsheet.Rows(1).Font.Name="黑体";
   

   xlsheet.Columns("A:D").ColumnWidth =18;
   
   // xlsheet.Range(xlsheet.Cells(i, 4), xlsheet.Cells(i-1, 6)).BorderAround , 4
    // for(mn=1,mn<=6;mn++) .     xlsheet.Range(xlsheet.Cells(1, mn), xlsheet.Cells(i1, j)).Columns.AutoFit;
     xlsheet.Columns.AutoFit;
                xlsheet.Range( xlsheet.Cells(1,1),xlsheet.Cells(rowNum+1,7)).HorizontalAlignment =-4108;//居中
                  xlsheet.Range( xlsheet.Cells(1,1),xlsheet.Cells(1,7)).VerticalAlignment =-4108;
                xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Font.Size=10;

     xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(3).Weight = 2; //讄左边?
      xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(4).Weight = 2;//讄双?
            xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(1).Weight = 2;//讄边?
      xlsheet.Range( xlsheet.Cells(2,1),xlsheet.Cells(rowNum+1,7)).Borders(2).Weight = 2;//讄底边?
xls.UserControl = true;  //很重?不能省略,不然会出问题 意思是excel交由用户控制
      xls=null;
      xlBook=null;
      xlsheet=null;

}


javaGrowing 2006-11-09 21:24 发表评论
]]>
更改IE览器默认的源文件编辑器http://www.aygfsteel.com/juhongtao/archive/2006/11/06/79468.htmljavaGrowingjavaGrowingMon, 06 Nov 2006 12:19:00 GMThttp://www.aygfsteel.com/juhongtao/archive/2006/11/06/79468.htmlhttp://www.aygfsteel.com/juhongtao/comments/79468.htmlhttp://www.aygfsteel.com/juhongtao/archive/2006/11/06/79468.html#Feedback0http://www.aygfsteel.com/juhongtao/comments/commentRss/79468.htmlhttp://www.aygfsteel.com/juhongtao/services/trackbacks/79468.html用户在浏览网|Q如果在|页中单击鼠标右键ƈ选择菜单中的“查看源文g”选项后,pȝ׃调用C本打开该网늚HTML源文Ӟ用户可以通过修改注册表来更改默认的打开E序Q然后如下:
一Q打开注册表?br />“开始”菜?>“运行?>输入 regedit 然后点确定?br />二:打开HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\INTERNET EXPLORER,在其下新Z个主?View Source Editor",在其下再C个主?Editor Name",又击右侧H口中的"默认"数D为更换程序的路径及文件名.

?重新启动INTERNET EXPLORER,查看某个|页的源文g,用户׃发现打开的程序已l更改了.

javaGrowing 2006-11-06 20:19 发表评论
]]>
止window.close()Ҏ弹出的询问窗http://www.aygfsteel.com/juhongtao/archive/2006/11/06/79354.htmljavaGrowingjavaGrowingMon, 06 Nov 2006 03:39:00 GMThttp://www.aygfsteel.com/juhongtao/archive/2006/11/06/79354.htmlhttp://www.aygfsteel.com/juhongtao/comments/79354.htmlhttp://www.aygfsteel.com/juhongtao/archive/2006/11/06/79354.html#Feedback0http://www.aygfsteel.com/juhongtao/comments/commentRss/79354.htmlhttp://www.aygfsteel.com/juhongtao/services/trackbacks/79354.html

 

< script language = " javascript " >
window.moveTo(
2000 , 2000 ); 
var  para  =  window.location.search; 
var  width  = screen.availWidth; 
var  height  =  screen.availHeight; 

var  arg  =  window.showModalDialog('ChooseEstate.htm' + para,window,'dialogWidth:' + width + 'px;dialogHeight:' + height + 'px;help: 0 ;'); 

window.close(); 
</ script >

Q-Q-使用以上代码Q会弹出一个询问窗口,是否关闭当前H口Q我们只要稍做更改,可避过q个机制Q?

< script language = " javascript " >
window.moveTo(
2000 , 2000 ); 
var  para  =  window.location.search; 
var  width  = screen.availWidth; 
var  height  =  screen.availHeight; 


var  arg  =  window.showModalDialog('ChooseEstate.htm' + para,window,'dialogWidth:' + width + 'px;dialogHeight:' + height + 'px;help: 0 ;'); 
window.opener 
=  window; 或window.opener=null;
window.close(); 
</ script >



javaGrowing 2006-11-06 11:39 发表评论
]]>
javascript中的~码与解?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/juhongtao/archive/2006/11/03/78936.html</guid><wfw:comment>http://www.aygfsteel.com/juhongtao/comments/78936.html</wfw:comment><comments>http://www.aygfsteel.com/juhongtao/archive/2006/11/03/78936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/juhongtao/comments/commentRss/78936.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/juhongtao/services/trackbacks/78936.html</trackback:ping><description><![CDATA[ <p> <span twffan="done">javascript中可用的~码解码函数Q有如下的组合:</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">他们之间的区别ؓQ?/span> </p> <p> <span twffan="done">escape/unescapeQ?/span> <br /> <span twffan="done">?6q制~码字符Ԍ对空根{符L字符?xx~码表示Q对中文{字W用%uxxxx~码表示。自javascript1.5之后Q此Ҏ已经不被推荐使用?/span> </p> <p> <span twffan="done">encodeURI/decodeURIQ?/span> <br /> <span twffan="done">以UTF-8~码~码字符Ԍ对这些字W:?/span> <b> <span twffan="done">; , / ? : @ & = + $</span> </b> <span twffan="done">”不做编码?/span> </p> <p> <span twffan="done">encodeURIComponent/decodeURIComponentQ?/span> <br /> <span twffan="done">以UTF-8~码~码所有字W串?/span> </p> <p> <span twffan="done">因ؓescape/unescape已经deprecated。就不说它了QencodeURI和encodeURIComponent之前的区别用实例说明Q?/span> <br /> <br /> <span twffan="done">比如说要使用get方式一个参数uQ传递给服务器:</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&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">q里Q如果用了encodeURIQ那么最l的getURL的gؓQ?/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&op=Default</span> </div> </div> <br /> <span twffan="done">q样Q对参数u中的字符"&op=Default"Q将不会作ؓ字符串参C递到服务器端Q而是当作test.php的参C递过MQ因为对"&op=Default"中的字符"&"没有做编码?/span> <br /> <span twffan="done">所以,在这U应?font class="intellitextLink" onmouseover="tixa_adDisplay('场景','H',this)" onmouseout="tixa_adHide(this)" color="#006400"><u>场景</u></font>下,需要用encodeURIComponentQ编码后的getURLgؓQ?/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">q样Q参数就可以利传递过M。在服务器端得到的字W串是正确的u?/span> <br /> <br /> <span twffan="done">反之Q如果需要通过get方式讉K某一URLQ但是URL中包含中文等字符Qؓ了防止ؕ码等~码问题Q需要将URL通过encodeURIq行~码?/span> <img src ="http://www.aygfsteel.com/juhongtao/aggbug/78936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/juhongtao/" target="_blank">javaGrowing</a> 2006-11-03 15:49 <a href="http://www.aygfsteel.com/juhongtao/archive/2006/11/03/78936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʶ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">崨</a>| <a href="http://" target="_blank">ͬ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٲ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ij</a>| <a href="http://" target="_blank">佭</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯʨ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">п</a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">Һ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">人</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">°</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϊ</a>| <a href="http://" target="_blank">¤</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ͽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʲ</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Զ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ͳ</a>| <a href="http://" target="_blank">ˮ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>