﻿<?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-bob-文章分类-javascript</title><link>http://www.blogjava.net/keweibo/category/25492.html</link><description>一专  Java 多能  C#,Delphi,Powerbuilder ... 
&lt;br&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "ca-pub-1944176156128447";
/* 468x15, 创建于 09-2-25 */
google_ad_slot = "5582725142";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;</description><language>zh-cn</language><lastBuildDate>Thu, 24 Jul 2014 21:58:19 GMT</lastBuildDate><pubDate>Thu, 24 Jul 2014 21:58:19 GMT</pubDate><ttl>60</ttl><item><title>JavaScript中实现函数重载和参数默认值(转)</title><link>http://www.blogjava.net/keweibo/articles/416152.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 24 Jul 2014 01:22:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/416152.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/416152.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/416152.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/416152.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/416152.html</trackback:ping><description><![CDATA[<div>转自：<a href="http://www.2cto.com/kf/201208/149413.html">http://www.2cto.com/kf/201208/149413.html</a><br /><br />
<p style="padding-bottom: 0px; border-right-width: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); list-style-type: none; text-indent: 2em; margin: 0px 0px 8px; padding-left: 0px; padding-right: 0px; font: 14px/28px 宋体; white-space: normal; orphans: 2; border-top-width: 0px; border-bottom-width: 0px; letter-spacing: normal; color: rgb(51,51,51); border-left-width: 0px; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">参数默认值是指在调用函数时，若省略了某个实参，函数会自动为该参数分配一个默认值，使得函数调用的方便性和灵活性大大提高。</p>
<p style="padding-bottom: 0px; border-right-width: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); list-style-type: none; text-indent: 2em; margin: 0px 0px 8px; padding-left: 0px; padding-right: 0px; font: 14px/28px 宋体; white-space: normal; orphans: 2; border-top-width: 0px; border-bottom-width: 0px; letter-spacing: normal; color: rgb(51,51,51); border-left-width: 0px; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">举个例子，比如<a style="color: rgb(51,51,51); font-size: 14px; text-decoration: none" class="keylink" href="http://www.2cto.com/kf/web/php/" target="_blank">PHP</a>中的字符串截取函数substr(string,start,length)，当不指定length时，函数将默认截取字符串中start位置到字符串结束，而如果指定了length，则截取从start位置开始的以length为长度的字符串，所以如果调用的是substr('http://www.hualai.net.cn',11,6)，则返回的是hualai；如果省略掉最后一个参数，substr('http://www.hualai.net.cn',11)，则返回hualai.net.cn。</p>
<p style="padding-bottom: 0px; border-right-width: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); list-style-type: none; text-indent: 2em; margin: 0px 0px 8px; padding-left: 0px; padding-right: 0px; font: 14px/28px 宋体; white-space: normal; orphans: 2; border-top-width: 0px; border-bottom-width: 0px; letter-spacing: normal; color: rgb(51,51,51); border-left-width: 0px; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">再比如jQuery框架中，$(selector).html()方法是获取该元素内的HTML代码，而$(selector).html(content)则是设置该元素内的HTML。我们知道，在C语言中，我们可以通过如下形式来为函数参数设置默认值：</p>
<p style="padding-bottom: 0px; border-right-width: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); list-style-type: none; text-indent: 2em; margin: 0px 0px 8px; padding-left: 0px; padding-right: 0px; font: 14px/28px 宋体; white-space: normal; orphans: 2; border-top-width: 0px; border-bottom-width: 0px; letter-spacing: normal; color: rgb(51,51,51); border-left-width: 0px; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">[cpp]&nbsp;<br />void foo(int a, int b = 1, bool c = false);&nbsp;&nbsp;&nbsp;<br />在<a style="color: rgb(51,51,51); font-size: 14px; text-decoration: none" class="keylink" href="http://www.2cto.com/kf/ware/Java/" target="_blank">Java</a>中，则可以通过函数重载来设置函数参数默认值：</p>
<p style="padding-bottom: 0px; border-right-width: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); list-style-type: none; text-indent: 2em; margin: 0px 0px 8px; padding-left: 0px; padding-right: 0px; font: 14px/28px 宋体; white-space: normal; orphans: 2; border-top-width: 0px; border-bottom-width: 0px; letter-spacing: normal; color: rgb(51,51,51); border-left-width: 0px; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">[java]<br />public void foo(int a){&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; foo(a, 1);&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;<br />public void foo(int a, int b){&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; foo(a, b, false);&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;<br />public void foo(int a, int b, bool c){&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; //函数内容&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;<br />而在<a style="color: rgb(51,51,51); font-size: 14px; text-decoration: none" class="keylink" href="http://www.2cto.com/kf/qianduan/JS/" target="_blank">JavaScript</a>中，如何像jQuery那样设置函数参数默认值呢？JavaScript中并没有像C语言中定义函数时直接在参数后面赋值的方法，也没有像Java里那样的函数重载，但我们可以通过JavaScript方法中的一个arguments只读变量数组来实现，具体如下：</p>
<p style="padding-bottom: 0px; border-right-width: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); list-style-type: none; text-indent: 2em; margin: 0px 0px 8px; padding-left: 0px; padding-right: 0px; font: 14px/28px 宋体; white-space: normal; orphans: 2; border-top-width: 0px; border-bottom-width: 0px; letter-spacing: normal; color: rgb(51,51,51); border-left-width: 0px; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">[js]&nbsp;<br />function foo(){&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; var a = arguments[0] ? arguments[0] : 1;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; var b = arguments[1] ? arguments[1] : false;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; //函数内容&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;<br />以上是通过判断参数是否存在，若不存在则将默认值附给变量，而我们可以通过判断参数的类型来实现重载：</p>
<p style="padding-bottom: 0px; border-right-width: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); list-style-type: none; text-indent: 2em; margin: 0px 0px 8px; padding-left: 0px; padding-right: 0px; font: 14px/28px 宋体; white-space: normal; orphans: 2; border-top-width: 0px; border-bottom-width: 0px; letter-spacing: normal; color: rgb(51,51,51); border-left-width: 0px; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">[js]&nbsp;<br />function foo(){&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; if(typeof arguments[0] == 'string')&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert('参数类型为字符串');&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; else if(typeof arguments[0] == 'number')&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert('参数类型为数值');&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;<br />或者：</p>
<p style="padding-bottom: 0px; border-right-width: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); list-style-type: none; text-indent: 2em; margin: 0px 0px 8px; padding-left: 0px; padding-right: 0px; font: 14px/28px 宋体; white-space: normal; orphans: 2; border-top-width: 0px; border-bottom-width: 0px; letter-spacing: normal; color: rgb(51,51,51); border-left-width: 0px; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">[js]&nbsp;<br />function foo(){&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; if(arguments[0].constructor == String)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert('参数类型为字符串');&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; else if(arguments[0].constructor == Number)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert('参数类型为数值');&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;</p></div><img src ="http://www.blogjava.net/keweibo/aggbug/416152.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2014-07-24 09:22 <a href="http://www.blogjava.net/keweibo/articles/416152.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 计算日期相差的天数</title><link>http://www.blogjava.net/keweibo/articles/395722.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 26 Feb 2013 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/395722.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/395722.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/395722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/395722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/395722.html</trackback:ping><description><![CDATA[<font face="Verdana">&lt;html&gt;<br />&nbsp;&lt;head&gt;<br />&nbsp;&nbsp;&lt;script type="text/javascript"&gt;<br />&nbsp;&nbsp;&nbsp;function moreThanOneMonth(dt)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;var s1=new Date(dt.replace(/-/g, "/")); //日期格式为yyyy-mm-dd转换成yyyy/mm/dd<br />&nbsp;&nbsp;&nbsp;&nbsp;var s2=new Date();<br />&nbsp;&nbsp;&nbsp;&nbsp;var time= s2.getTime() - s1.getTime();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;var days = parseInt(time / (1000 * 60 * 60 * 24));<br />&nbsp;&nbsp;&nbsp;&nbsp;if(days &gt; 30)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;function load(dt)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if( checkDate(dt) )<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("days &gt; 30");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("days &lt; 30");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&lt;/script&gt;<br />&nbsp;&lt;/head&gt;<br />&nbsp;&lt;body onLoad="load('2013-01-01')"&gt;<br />&nbsp;&lt;/body&gt;<br />&lt;/html&gt;</font><img src ="http://www.blogjava.net/keweibo/aggbug/395722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2013-02-26 10:00 <a href="http://www.blogjava.net/keweibo/articles/395722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript倒计时自动跳转功能</title><link>http://www.blogjava.net/keweibo/articles/362008.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 25 Oct 2011 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/362008.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/362008.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/362008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/362008.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/362008.html</trackback:ping><description><![CDATA[<div>&lt;center&gt;<br />&lt;font size=5 color="Fuchsia"&gt; 修改成功&lt;/font&gt;<br />&lt;br&gt;<br />&lt;font size=3 color="red"&gt;&lt;span id="jump"&gt;3&lt;/span&gt; 秒后自动跳转到购物车页面。&lt;/font&gt;<br />&lt;/center&gt;<br />&lt;script language="JavaScript"&gt;<br />&nbsp;function countDown(secs){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jump.innerText=secs;//用于改变id=jump中的秒数的显示。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(--secs&gt;=0){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setTimeout( "countDown(" +secs+ ")" ,1000);//每隔1000毫秒执行一个countDown<br /><br />（secs）方法<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location.href = 'cart.jsp';//重定向的页面<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp; }<br />&nbsp;&nbsp;&nbsp; countDown(3);<br />&lt;/script&gt;</div><img src ="http://www.blogjava.net/keweibo/aggbug/362008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2011-10-25 15:03 <a href="http://www.blogjava.net/keweibo/articles/362008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用JavaScript判断两个日期相差天数</title><link>http://www.blogjava.net/keweibo/articles/353274.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 28 Jun 2011 08:29:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/353274.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/353274.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/353274.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/353274.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/353274.html</trackback:ping><description><![CDATA[<div><strong>&lt;script type="text/javascript"&gt;</strong></div>
<div><strong>&nbsp;&nbsp;&nbsp;&nbsp;var st = new Date(&#8216;2011/01/28 16:22:00&#8217;);</strong></div>
<div><strong>			</strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;var et = new Date(&#8216;2011/03/28 16:22:00&#8217;);</strong></div>
<div><strong>			</strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;if( (et.getTime()-st.getTime())/1000/60/60/24 &gt; 31 ) {</strong></div>
<div><strong>				</strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("時間間隔不能超出31天");</strong></div>
<div><strong>			</strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;}</strong></div>
<div><strong>&lt;/script&gt;</strong></div><img src ="http://www.blogjava.net/keweibo/aggbug/353274.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2011-06-28 16:29 <a href="http://www.blogjava.net/keweibo/articles/353274.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery+DWR動態編輯表格Script</title><link>http://www.blogjava.net/keweibo/articles/306929.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 22 Dec 2009 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/306929.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/306929.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/306929.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/306929.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/306929.html</trackback:ping><description><![CDATA[&lt;script type="text/javascript" src="&lt;%=root %&gt;/dwr/interface/systemDaoAjax.js"&gt;&lt;/script&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript" src="&lt;%=root %&gt;/dwr/engine.js"&gt;&lt;/script&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript" src="&lt;%=root %&gt;/publicJS/jquery-1.3.1.js"&gt;&lt;/script&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $(function(){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //edit table可編輯表格<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var numTD = $("#datatable tbody td.edit");//排除掉不能被修改的單元格<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; numTD.dblclick(function(){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var inputobj = $("&lt;input type='text'&gt;");//新建文本輸入框<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var tdobj = $(this);//被編輯的單元格<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var text = tdobj.html();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; inputobj.val(text);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //important 一定要在插入文本框前進行判斷<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(tdobj.children("input").length &gt; 0){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return false;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tdobj.html("");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; inputobj.width(tdobj.width());<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; inputobj.appendTo(tdobj);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; inputobj.trigger("focus").trigger("select");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //阻止文本框的雙擊事件<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; inputobj.click(function(){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return false;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //處理鍵盤事件<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; inputobj.keyup(function(event){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //獲取當前按鍵的值<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //jQuery的event對象上有一個which的屬性可以獲得鍵盤按鍵的鍵值<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var keycode = event.which;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //處理回車的情況<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(keycode == 13){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //獲取當前文本框的內容<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var inputtext = $(this).val();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //將td的內容修改成文本框珠內容<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tdobj.html(inputtext);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var v_id = tdobj.parent().children().eq(1).html();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var column = tdobj.attr("id");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(column == "roleName"){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; systemDaoAjax.updateRole({id : v_id, <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; roleName : tdobj.parent().children("#roleName").html(),<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; createUser : $("#hidden_username").val()<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }, null);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }else if(column == 'roleDesc'){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; systemDaoAjax.updateRole({id : v_id, <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; roleDesc : tdobj.parent().children("#roleDesc").html(),<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; createUser : $("#hidden_username").val()<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }, null);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //處理ESC的情況<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(keycode == 27){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //將td中的內容原來為原先的值text<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tdobj.html(text);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //文本框失去焦點事件,與ESC事件一樣<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; inputobj.blur(function(){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //將td中的內容原來為原先的值text<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tdobj.html(text);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; function checkUserName(){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var username = document.getElementById("username").value;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(!username==""){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; systemDaoAjax.validateUserName(username, function userNameCallback(data){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(data){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; document.getElementById("saveButton").disabled = false;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; document.getElementById("feedBackMessage").style.display='none';<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setCheckbox();//設置或者清空篩選框<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; document.getElementById("saveButton").disabled = true;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; document.getElementById("feedBackMessage").style.display='block';<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; function setCheckbox(){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var checkitem = document.getElementsByName("roleIdCheckbox")<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; systemDaoAjax.getRoleByUserName(document.getElementById("username").value, function funcRoleCallback(roleArray){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(var i=0; i&lt;checkitem.length; i++) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; checkitem[i].checked=false;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(var j=0; j&lt;roleArray.length; j++){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(checkitem[i].value==roleArray[j])<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; checkitem[i].checked=true;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; function saveUserRole(){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var arrays = new Array();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var items = document.getElementsByName("roleIdCheckbox")<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(i=0; i&lt;items.length; i++) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(items[i].checked)<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; arrays.push(items[i].value);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(arrays.length&gt;0){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; systemDaoAjax.saveUserRole(document.getElementById("username").value, arrays, function saveUserRoleCallback(data){ <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(data)<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; alert("操作成功!");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; alert("注意:操作失敗!");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; alert("請選擇要授權的角色!");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &lt;/script&gt;<br />
<img src ="http://www.blogjava.net/keweibo/aggbug/306929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2009-12-22 16:46 <a href="http://www.blogjava.net/keweibo/articles/306929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS的正则表达式 </title><link>http://www.blogjava.net/keweibo/articles/186187.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 14 Mar 2008 01:29:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/186187.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/186187.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/186187.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/186187.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/186187.html</trackback:ping><description><![CDATA[//校验是否全由数字组成 <br />
[code] function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } [/code] <br />
<br />
//校验登录名：只能输入5-20个以字母开头、可带数字、&#8220;_&#8221;、&#8220;.&#8221;的字串 <br />
[code] function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/; if (!patrn.exec(s)) return false return true } [/code] <br />
<br />
//校验用户姓名：只能输入1-30个以字母开头的字串 <br />
[code] function isTrueName(s) { var patrn=/^[a-zA-Z]{1,30}$/; if (!patrn.exec(s)) return false return true } }} //校验密码：只能输入6-20个字母、数字、下划线 [code] function isPasswd(s) { var patrn=/^(\w){6,20}$/; if (!patrn.exec(s)) return false return true } [/code] <br />
<br />
//校验普通电话、传真号码：可以&#8220;+&#8221;开头，除数字外，可含有&#8220;-&#8221; <br />
[code] function isTel(s) { //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/; var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; if (!patrn.exec(s)) return false return true } [/code] <br />
<br />
//校验手机号码：必须以数字开头，除数字外，可含有&#8220;-&#8221; <br />
[code] function isMobil(s) { var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; if (!patrn.exec(s)) return false return true } [/code] <br />
<br />
//校验邮政编码 <br />
[code] function isPostalCode(s) { //var patrn=/^[a-zA-Z0-9]{3,12}$/; var patrn=/^[a-zA-Z0-9 ]{3,12}$/; if (!patrn.exec(s)) return false return true } [/code] <br />
<br />
//校验搜索关键字 <br />
[code] function isSearch(s) { var patrn=/^[^`~!@#$%^&amp;*()+=|\\\][\]\{\}:;'\,.&lt;&gt;/?]{1}[^`~!@$%^&amp;()+=|\\\] [\]\{\}:;'\,.&lt;&gt;?]{0,19}$/; if (!patrn.exec(s)) return false return true } function isIP(s) //by zergling { var patrn=/^[0-9.]{1,20}$/; if (!patrn.exec(s)) return false return true } [/code] <br />
<br />
<span style="font-size: 18pt"><span class="hilite2"><span class="hilite2">正则表达式</span></span></span> <br />
[code] "^\\d+$"　　//非负整数（正整数 + 0） "^[0-9]*[1-9][0-9]*$"　　//正整数 "^((-\\d+)|(0+))$"　　//非正整数（负整数 + 0） "^-[0-9]*[1-9][0-9]*$"　　//负整数 "^-?\\d+$"　　　　//整数 "^\\d+(\\.\\d+)?$"　　//非负浮点数（正浮点数 + 0） "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"　 //正浮点数 "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"　　//非正浮点数（负浮点数 + 0） "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"　 //负浮点数 "^(-?\\d+)(\\.\\d+)?$"　　//浮点数 "^[A-Za-z]+$"　　//由26个英文字母组成的字符串 "^[A-Z]+$"　　//由26个英文字母的大写组成的字符串 "^[a-z]+$"　　//由26个英文字母的小写组成的字符串 "^[A-Za-z0-9]+$"　　//由数字和26个英文字母组成的字符串 "^\\w+$"　　//由数字、26个英文字母或者下划线组成的字符串 "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"　　　　//email地址 "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"　　//url "^[A-Za-z0-9_]*$" [/code] <br />
<br />
<span style="font-size: 18pt"><span class="hilite2"><span class="hilite2">正则表达式</span></span>使用详解</span> <br />
<br />
简介 <br />
<br />
简单的说，<span class="hilite2"><span class="hilite2">正则表达式</span></span>是一种可以用于模式匹配和替换的强有力的工具。其作用如下： <br />
测试字符串的某个模式。例如，可以对一个输入字符串进行测试，看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。 <br />
替换文本。可以在文档中使用一个<span class="hilite2"><span class="hilite2">正则表达式</span></span>来标识特定文字，然后可以全部将其删除，或者替换为别的文字。 <br />
根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。 <br />
<br />
基本语法 <br />
<br />
在对<span class="hilite2"><span class="hilite2">正则表达式</span></span>的功能和作用有了初步的了解之后，我们就来具体看一下<span class="hilite2"><span class="hilite2">正则表达式</span></span>的语法格式。 <br />
<br />
<span class="hilite2"><span class="hilite2">正则表达式</span></span>的形式一般如下：　　 <br />
<br />
/love/　　其中位于&#8220;/&#8221;定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入&#8220;/&#8221;定界符之间即可。为了能够使用户更加灵活的定制模式内容，<span class="hilite2"><span class="hilite2">正则表达式</span></span>提供了专门的&#8220;元字符&#8221;。所谓元字符就是指那些在<span class="hilite2"><span class="hilite2">正则表达式</span></span>中具有特殊意义的专用字符，可以用来规定其前导字符（即位于元字符前面的字符）在目标对象中的出现模式。 <br />
较为常用的元字符包括： &#8220;+&#8221;， &#8220;*&#8221;，以及 &#8220;?&#8221;。 <br />
<br />
&#8220;+&#8221;元字符规定其前导字符必须在目标对象中连续出现一次或多次。 <br />
<br />
&#8220;*&#8221;元字符规定其前导字符必须在目标对象中出现零次或连续多次。 <br />
<br />
&#8220;?&#8221;元字符规定其前导对象必须在目标对象中连续出现零次或一次。 <br />
<br />
下面，就让我们来看一下<span class="hilite2"><span class="hilite2">正则表达式</span></span>元字符的具体应用。 <br />
<br />
/fo+/　　因为上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>中包含&#8220;+&#8221;元字符，表示可以与目标对象中的 &#8220;fool&#8221;, &#8220;fo&#8221;, 或者 &#8220;football&#8221;等在字母f后面连续出现一个或多个字母o的字符串相匹配。 <br />
<br />
/eg*/　　因为上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>中包含&#8220;*&#8221;元字符，表示可以与目标对象中的 &#8220;easy&#8221;, &#8220;ego&#8221;, 或者 &#8220;egg&#8221;等在字母e后面连续出现零个或多个字母g的字符串相匹配。 <br />
<br />
/Wil?/　　因为上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>中包含&#8220;？&#8221;元字符，表示可以与目标对象中的 &#8220;Win&#8221;, 或者&#8220;Wilson&#8221;,等在字母i后面连续出现零个或一个字母l的字符串相匹配。 <br />
<br />
有时候不知道要匹配多少字符。为了能适应这种不确定性，<span class="hilite2"><span class="hilite2">正则表达式</span></span>支持限定符的概念。这些限定符可以指定<span class="hilite2"><span class="hilite2">正则表达式</span></span>的一个给定组件必须要出现多少次才能满足匹配。 <br />
<br />
{n} n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 "Bob" 中的 'o'，但是能匹配 "food" 中的两个 o。 <br />
<br />
{n,} n 是一个非负整数。至少匹配 n 次。例如，'o{2,}' 不能匹配 "Bob" 中的 'o'，但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 <br />
<br />
{n,m} m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。例如，"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 <br />
<br />
除了元字符之外，用户还可以精确指定模式在匹配对象中出现的频率。例如，/jim {2,6}/ 上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>规定字符m可以在匹配对象中连续出现2-6次，因此，上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>可以同jimmy或jimmmmmy等字符串相匹配。 <br />
在对如何使用<span class="hilite2"><span class="hilite2">正则表达式</span></span>有了初步了解之后，我们来看一下其它几个重要的元字符的使用方式。 <br />
[code] \s：用于匹配单个空格符，包括tab键和换行符； \S：用于匹配除单个空格符之外的所有字符； \d：用于匹配从0到9的数字； \w：用于匹配字母，数字或下划线字符； \W：用于匹配所有与\w不匹配的字符； . ：用于匹配除换行符之外的所有字符。 [/code] <br />
（说明：我们可以把\s和\S以及\w和\W看作互为逆运算） <br />
下面，我们就通过实例看一下如何在<span class="hilite2"><span class="hilite2">正则表达式</span></span>中使用上述元字符。 <br />
/\s+/ 上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>可以用于匹配目标对象中的一个或多个空格字符。 <br />
/\d000/　如果我们手中有一份复杂的财务报表，那么我们可以通过上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>轻而易举的查找到所有总额达千元的款项。 <br />
除了我们以上所介绍的元字符之外，<span class="hilite2"><span class="hilite2">正则表达式</span></span>中还具有另外一种较为独特的专用字符，即定位符。定位符用于规定匹配模式在目标对象中的出现位置。 较为常用的定位符包括： &#8220;^&#8221;, &#8220;$&#8221;, &#8220;\b&#8221; 以及 &#8220;\B&#8221;。 <br />
[code] &#8220;^&#8221;定位符规定匹配模式必须出现在目标字符串的开头 &#8220;$&#8221;定位符规定匹配模式必须出现在目标对象的结尾 &#8220;\b&#8221;定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一 &#8220;\B&#8221;定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内， 即匹配对象既不能作为目标字符串的开头，也不能作为目标字符串的结尾。 [/code] <br />
同样，我们也可以把&#8220;^&#8221;和&#8220;$&#8221;以及&#8220;\b&#8221;和&#8220;\B&#8221;看作是互为逆运算的两组定位符。举例来说： /^hell/　因为上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>中包含&#8220;^&#8221;定位符，所以可以与目标对象中以 &#8220;hell&#8221;, &#8220;hello&#8221;或&#8220;hellhound&#8221;开头的字符串相匹配。 /ar$/　因为上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>中包含&#8220;$&#8221;定位符，所以可以与目标对象中以 &#8220;car&#8221;, &#8220;bar&#8221;或 &#8220;ar&#8221; 结尾的字符串相匹配。 /\bbom/　因为上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式以&#8220;\b&#8221;定位符开头，所以可以与目标对象中以 &#8220;bomb&#8221;, 或 &#8220;bom&#8221;开头的字符串相匹配。/man\b/　因为上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式以&#8220;\b&#8221;定位符结尾，所以可以与目标对象中以 &#8220;human&#8221;, &#8220;woman&#8221;或 &#8220;man&#8221;结尾的字符串相匹配。 <br />
为了能够方便用户更加灵活的设定匹配模式，<span class="hilite2"><span class="hilite2">正则表达式</span></span>允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。例如： <br />
[code] /[A-Z]/　　上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>将会与从A到Z范围内任何一个大写字母相匹配。 /[a-z]/　　上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>将会与从a到z范围内任何一个小写字母相匹配。 /[0-9]/ 　上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>将会与从0到9范围内任何一个数字相匹配。 /([a-z][A-Z][0-9])+/　上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>将会与任何由字母和数字组成的字符串，如 &#8220;aB0&#8221; 等相匹配。 [/code] <br />
这里需要提醒用户注意的一点就是可以在<span class="hilite2"><span class="hilite2">正则表达式</span></span>中使用 &#8220;()&#8221; 把字符串组合在一起。&#8220;()&#8221;符号包含的内容必须同时出现在目标对象中。因此，上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>将无法与诸如 &#8220;abc&#8221;等的字符串匹配，因为&#8220;abc&#8221;中的最后一个字符为字母而非数字。 <br />
如果我们希望在<span class="hilite2"><span class="hilite2">正则表达式</span></span>中实现类似编程逻辑中的&#8220;或&#8221;运算，在多个不同的模式中任选一个进行匹配的话，可以使用管道符 &#8220;|&#8221;。例如：/to|too|2/　上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>将会与目标对象中的 &#8220;to&#8221;, &#8220;too&#8221;, 或 &#8220;2&#8221; 相匹配。 <br />
<span class="hilite2"><span class="hilite2">正则表达式</span></span>中还有一个较为常用的运算符，即否定符 &#8220;[^]&#8221;。与我们前文所介绍的定位符 &#8220;^&#8221; 不同，否定符 &#8220;[^]&#8221;规定目标对象中不能存在模式中所规定的字符串。例如：/[^A-C]/　上述字符串将会与目标对象中除A，B，和C之外的任何字符相匹配。一般来说，当&#8220;^&#8221;出现在 &#8220;[]&#8221;内时就被视做否定运算符；而当&#8220;^&#8221;位于&#8220;[]&#8221;之外，或没有&#8220;[]&#8221;时，则应当被视做定位符。 <br />
最后，当用户需要在<span class="hilite2"><span class="hilite2">正则表达式</span></span>的模式中加入元字符，并查找其匹配对象时，可以使用转义符&#8220;\&#8221;。例如：/Th\*/ 　上述<span class="hilite2"><span class="hilite2">正则表达式</span></span>将会与目标对象中的&#8220;Th*&#8221;而非&#8220;The&#8221;等相匹配。 <br />
在构造<span class="hilite2"><span class="hilite2">正则表达式</span></span>之后，就可以象数学表达式一样来求值，也就是说，可以从左至右并按照一个优先级顺序来求值。优先级如下： <br />
[code] 1．\ 转义符 2．(), (?:), (?=), [] 圆括号和方括号 3．*, +, ?, {n}, {n,}, {n,m} 限定符 4．^, $, \anymetacharacter 位置和顺序 5．|&#8220;或&#8221;操作 [/code] <br />
<br />
<span style="font-size: 18pt">使用实例</span> <br />
在<span class="hilite1"><span class="hilite1">JavaScript</span></span> 1.2中带有一个功能强大的RegExp()对象，可以用来进行<span class="hilite2"><span class="hilite2">正则表达式</span></span>的匹配操作。其中的test()方法可以检验目标对象中是否包含匹配模式，并相应的返回true或false。 <br />
我们可以使用<span class="hilite1"><span class="hilite1">JavaScript</span></span>编写以下脚本，验证用户输入的邮件地址的有效性。 <br />
[code] &lt;html&gt; &lt;head&gt; 　 &lt;script language="<span class="hilite1"><span class="hilite1">Javascript</span></span>1.2"&gt; 　　　　 &lt;!-- start hiding 　　　　 function verifyAddress(obj) 　　　　　{ 　　　　　　var email = obj.email.value; 　　　　　　var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/; 　　　　　　flag = pattern.test(email); 　　　　　　if(flag) 　　　　　　{ 　　　　　　　alert(&#8220;Your email address is correct!&#8221;); 　　　　　　　return true; 　　　　　　} 　　　　　　else 　　　　　　　{ 　　　　　　　　alert(&#8220;Please try again!&#8221;); 　　　　　　　　return false; 　　　　　　　 } 　　　　　 } 　　　　 // stop hiding --&gt; 　　　 &lt;/script&gt; 　　&lt;/head&gt; 　 &lt;body&gt; 　　 &lt;form onSubmit="return verifyAddress(this);"&gt; 　　　 &lt;input name="email" type="text"&gt; 　　　 &lt;input type="submit"&gt; 　　　 &lt;/form&gt; 　　&lt;/body&gt; &lt;/html&gt; [/code] <br />
<br />
<span style="font-size: 18pt"><span class="hilite2"><span class="hilite2">正则表达式</span></span>对象</span> <br />
本对象包含<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式以及表明如何应用模式的标志。 <br />
[code] 语法 1 re = /pattern/[flags] 语法 2 re = new RegExp("pattern",["flags"]) [/code] <br />
参数 <br />
re <br />
必选项。将要赋值为<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式的变量名。 <br />
<br />
Pattern <br />
必选项。要使用的<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式。如果使用语法 1，用 "/" 字符分隔模式。如果用语法 2，用引号将模式引起来。 <br />
<br />
Flags <br />
可选项。如果使用语法 2 要用引号将 flag 引起来。标志可以组合使用，可用的有： <br />
[code] g （全文查找出现的所有 pattern） i （忽略大小写） m （多行查找） [/code] <br />
<br />
<span style="font-size: 18pt">示例</span> <br />
下面的示例创建一个包含<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式及相关标志的对象(re)，向您演示<span class="hilite2"><span class="hilite2">正则表达式</span></span>对象的用法。在本例中，作为结果的<span class="hilite2"><span class="hilite2">正则表达式</span></span>对象又用于 match 方法中： <br />
[code] function MatchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain"; re = new RegExp("ain","g"); // 创建<span class="hilite2"><span class="hilite2">正则表达式</span></span>对象。 r = s.match(re); // 在字符串 s 中查找匹配。 return(r); } [/code] <br />
<br />
返回值： ain,ain,ain,ain\\ <br />
属性 lastIndex 属性 | source 属性\\ <br />
方法 compile 方法 | exec 方法 | test 方法\\ <br />
要求 版本 3\\ <br />
请参阅 RegExp 对象 | <span class="hilite2"><span class="hilite2">正则表达式</span></span>语法 | String 对象\\ <br />
<br />
<span style="font-size: 18pt">exec 方法</span> <br />
用<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式在字符串中运行查找，并返回包含该查找结果的一个数组。 <br />
rgExp.exec(str) <br />
<br />
参数 <br />
<br />
rgExp <br />
必选项。包含<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式和可用标志的<span class="hilite2"><span class="hilite2">正则表达式</span></span>对象。 <br />
<br />
str <br />
必选项。要在其中执行查找的 String 对象或字符串文字。 <br />
<br />
说明\\ <br />
如果 exec 方法没有找到匹配，则它返回 null。如果它找到匹配，则 exec 方法返回一个数组，并且更新全局 RegExp 对象的属性，以反映匹配结果。数组的0元素包含了完整的匹配，而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志 (g) 的 match 方法。 <br />
如果为<span class="hilite2"><span class="hilite2">正则表达式</span></span>设置了全局标志，exec 从以 lastIndex 的值指示的位置开始查找。如果没有设置全局标志，exec 忽略 lastIndex 的值，从字符串的起始位置开始搜索。 <br />
<br />
exec 方法返回的数组有三个属性，分别是 input、index 和 lastIndex。Input 属性包含了整个被查找的字符串。Index 属性中包含了整个被查找字符串中被匹配的子字符串的位置。LastIndex 属性中包含了匹配中最后一个字符的下一个位置。 <br />
<br />
示例\\ <br />
下面的例子举例说明了 exec 方法的用法： <br />
[code] function RegExpTest() { var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion()) if (ver &gt;= 5.5){ // 测试 JScript 的版本。 var src = "The rain in Spain falls mainly in the plain."; var re = /\w+/g; // 创建<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式。 var arr; while ((arr = re.exec(src)) != null) document.write(arr.index + "-" + arr.lastIndex + arr + "\t"); } else{ alert("请使用 JScript 的更新版本"); } } [/code] <br />
<br />
返回值：0-3The 4-8rain 9-11in 12-17Spain 18-23falls 24-30mainly 31-33in 34-37the 38-43plain <br />
<br />
test 方法\\ <br />
返回一个 Boolean 值，它指出在被查找的字符串中是否存在模式。 <br />
rgexp.test(str) <br />
<br />
参数\\ <br />
rgexp <br />
必选项。包含<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式或可用标志的<span class="hilite2"><span class="hilite2">正则表达式</span></span>对象。 <br />
<br />
str <br />
必选项。要在其上测试查找的字符串。 <br />
<br />
说明 <br />
test 方法检查在字符串中是否存在一个模式，如果存在则返回 true，否则就返回 false。 <br />
全局 RegExp 对象的属性不由 test 方法来修改。 <br />
<br />
示例 <br />
下面的例子举例说明了 test 方法的用法： <br />
[code] function TestDemo(re, s) { var s1; // 声明变量。 // 检查字符串是否存在<span class="hilite2"><span class="hilite2">正则表达式</span></span>。 if (re.test(s)) // 测试是否存在。 s1 = " contains "; // s 包含模式。 else s1 = " does not contain "; // s 不包含模式。 return("'" + s + "'" + s1 + "'"+ re.source + "'"); // 返回字符串。 } [/code] <br />
<br />
函数调用：document.write (TestDemo(/ain+/ ,"The rain in Spain falls mainly in the plain.")); <br />
<br />
返回值：'The rain in Spain falls mainly in the plain.' contains 'ain+' <br />
<br />
<span style="font-size: 18pt">match 方法</span> <br />
使用<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式对字符串执行查找，并将包含查找的结果作为数组返回。\\ <br />
stringObj.match(rgExp) <br />
<br />
参数\\ <br />
stringObj <br />
必选项。对其进行查找的 String 对象或字符串文字。 <br />
<br />
rgExp <br />
必选项。为包含<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式和可用标志的<span class="hilite2"><span class="hilite2">正则表达式</span></span>对象。也可以是包含<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式和可用标志的变量名或字符串文字。 <br />
<br />
说明\\ <br />
如果 match 方法没有找到匹配，返回 null。如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果。 <br />
match 方法返回的数组有三个属性：input、index 和 lastIndex。Input 属性包含整个的被查找字符串。Index 属性包含了在整个被查找字符串中匹配的子字符串的位置。LastIndex 属性包含了最后一次匹配中最后一个字符的下一个位置。 <br />
如果没有设置全局标志 (g)，数组的 0 元素包含整个匹配，而第 1 到 n 元素包含了匹配中曾出现过的任一个子匹配。这相当于没有设置全局标志的 exec 方法。如果设置了全局标志，元素 0 到 n 中包含所有匹配。 <br />
<br />
示例\\ <br />
下面的示例演示了match 方法的用法： <br />
[code] function MatchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain"; re = /ain/i; // 创建<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式。 r = s.match(re); // 尝试匹配搜索字符串。 return(r); // 返回第一次出现 "ain" 的地方。 } [/code] <br />
返回值：ain <br />
<br />
本示例说明带 g 标志设置的 match 方法的用法。 <br />
[code] function MatchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain"; re = /ain/ig; // 创建<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式。 r = s.match(re); // 尝试去匹配搜索字符串。 return(r); // 返回的数组包含了所有 "ain" // 出现的四个匹配。 } [/code] <br />
返回值：ain,ain,ain,ain <br />
<br />
上面几行代码演示了字符串文字的 match 方法的用法。 <br />
[code] var r, re = "Spain"; r = "The rain in Spain".replace(re, "Canada"); return r; [/code] <br />
返回值：The rain in Canada <br />
<br />
<span style="font-size: 18pt">search 方法</span> <br />
返回与<span class="hilite2"><span class="hilite2">正则表达式</span></span>查找内容匹配的第一个子字符串的位置。 <br />
<br />
stringObj.search(rgExp) <br />
<br />
参数\\ <br />
stringObj <br />
必选项。要在其上进行查找的 String 对象或字符串文字。 <br />
<br />
rgExp <br />
必选项。包含<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式和可用标志的<span class="hilite2"><span class="hilite2">正则表达式</span></span>对象。 <br />
<br />
说明 <br />
<br />
search 方法指明是否存在相应的匹配。如果找到一个匹配，search 方法将返回一个整数值，指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配，则返回 -1。 <br />
<br />
示例\\ <br />
下面的示例演示了 search 方法的用法。 <br />
[code] function SearchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain."; re = /falls/i; // 创建<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式。 r = s.search(re); // 查找字符串。 return(r); // 返回 Boolean 结果。 } [/code] <br />
返回值：18 <br />
<br />
<br />
<span style="font-size: 18pt"><span class="hilite2"><span class="hilite2">正则表达式</span></span>语法</span> <br />
一个<span class="hilite2"><span class="hilite2">正则表达式</span></span>就是由普通字符（例如字符 a 到 z）以及特殊字符（称为元字符）组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。<span class="hilite2"><span class="hilite2">正则表达式</span></span>作为一个模板，将某个字符模式与所搜索的字符串进行匹配。 <br />
<br />
这里有一些可能会遇到的<span class="hilite2"><span class="hilite2">正则表达式</span></span>示例： <br />
[code] JScript VBScript 匹配 /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。 /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID 号码是否由一个2位数字，一个连字符以及一个5位数字组成。 /&lt;(.*)&gt;.*&lt;\/\1&gt;/ "&lt;(.*)&gt;.*&lt;\/\1&gt;" 匹配一个 HTML 标记。 [/code] <br />
<br />
下表是元字符及其在<span class="hilite2"><span class="hilite2">正则表达式</span></span>上下文中的行为的一个完整列表： <br />
<br />
字符 描述 <br />
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如，'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 <br />
<br />
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性，^ 也匹配 '\n' 或 '\r' 之后的位置。 <br />
<br />
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性，$ 也匹配 '\n' 或 '\r' 之前的位置。 <br />
<br />
* 匹配前面的子表达式零次或多次。例如，zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。 <br />
<br />
+ 匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 "zo" 以及 "zoo"，但不能匹配 "z"。+ 等价于 {1,}。 <br />
<br />
? 匹配前面的子表达式零次或一次。例如，"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 <br />
<br />
{n} n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 "Bob" 中的 'o'，但是能匹配 "food" 中的两个 o。 <br />
<br />
{n,} n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 "Bob" 中的 'o'，但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 <br />
<br />
{n,m} m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。刘， "o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 <br />
<br />
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串 "oooo"，'o+?' 将匹配单个 "o"，而 'o+' 将匹配所有 'o'。 <br />
<br />
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符，请使用象 '[.\n]' 的模式。 <br />
(pattern) 匹配pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到，在VBScript 中使用 SubMatches 集合，在JScript 中则使用 $0&#8230;$9 属性。要匹配圆括号字符，请使用 '\(' 或 '\)'。 <br />
<br />
(?:pattern) 匹配 pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如， 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 <br />
<br />
(?=pattern) 正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如， 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ，但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。 <br />
<br />
(?!pattern) 负向预查，在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows"，但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始 <br />
<br />
x|y 匹配 x 或 y。例如，'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 <br />
<br />
[xyz] 字符集合。匹配所包含的任意一个字符。例如， '[abc]' 可以匹配 "plain" 中的 'a'。 <br />
<br />
[^xyz] 负值字符集合。匹配未包含的任意字符。例如， '[^abc]' 可以匹配 "plain" 中的'p'。 <br />
<br />
[a-z] 字符范围。匹配指定范围内的任意字符。例如，'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。 <br />
<br />
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如，'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。 <br />
<br />
\b 匹配一个单词边界，也就是指单词和空格间的位置。例如， 'er\b' 可以匹配"never" 中的 'er'，但不能匹配 "verb" 中的 'er'。 <br />
<br />
\B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er'，但不能匹配 "never" 中的 'er'。 <br />
<br />
\cx 匹配由x指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。 <br />
<br />
\d 匹配一个数字字符。等价于 [0-9]。 <br />
<br />
\D 匹配一个非数字字符。等价于 [^0-9]。 <br />
<br />
\f 匹配一个换页符。等价于 \x0c 和 \cL。 <br />
<br />
\n 匹配一个换行符。等价于 \x0a 和 \cJ。 <br />
<br />
\r 匹配一个回车符。等价于 \x0d 和 \cM。 <br />
<br />
\s 匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 <br />
<br />
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 <br />
<br />
\t 匹配一个制表符。等价于 \x09 和 \cI。 <br />
<br />
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。 <br />
<br />
\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 <br />
<br />
\W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。 <br />
<br />
\xn 匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如， '\x41' 匹配 "A"。'\x041' 则等价于 '\x04' &amp; "1"。<span class="hilite2"><span class="hilite2">正则表达式</span></span>中可以使用 ASCII 编码。. <br />
<br />
\num 匹配 num，其中 num 是一个正整数。对所获取的匹配的引用。例如，'(.)\1' 匹配两个连续的相同字符。 <br />
<br />
\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为后向引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。 <br />
<br />
\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式，则 nm 为后向引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。 <br />
<br />
\nml 如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。 <br />
<br />
\un 匹配 n，其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如， \u00A9 匹配版权符号 (?)。 <br />
<br />
<br />
<span style="font-size: 18pt">优先权顺序</span> <br />
在构造<span class="hilite2"><span class="hilite2">正则表达式</span></span>之后，就可以象数学表达式一样来求值，也就是说，可以从左至右并按照一个优先权顺序来求值。 <br />
<br />
下表从最高优先级到最低优先级列出各种<span class="hilite2"><span class="hilite2">正则表达式</span></span>操作符的优先权顺序： <br />
[code] 操作符 描述 \ 转义符 (), (?:), (?=), [] 圆括号和方括号 *, +, ?, {n}, {n,}, {n,m} 限定符 ^, $, \anymetacharacter 位置和顺序 | &#8220;或&#8221;操作 [/code] <br />
<br />
普通字符 <br />
<br />
普通字符由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符，所有数字，所有标点符号以及一些符号。 <br />
<br />
最简单的<span class="hilite2"><span class="hilite2">正则表达式</span></span>是一个单独的普通字符，可以匹配所搜索字符串中的该字符本身。例如，单字符模式 'A' 可以匹配所搜索字符串中任何位置出现的字母 'A'。这里有一些单字符<span class="hilite2"><span class="hilite2">正则表达式</span></span>模式的示例： <br />
[code] /a/ /7/ /M/ [/code] <br />
等价的 VBScript 单字符<span class="hilite2"><span class="hilite2">正则表达式</span></span>为： <br />
[code] "a" "7" "M" [/code] <br />
可以将多个单字符组合在一起得到一个较大的表达式。例如，下面的 JScript <span class="hilite2"><span class="hilite2">正则表达式</span></span>不是别的，就是通过组合单字符表达式 'a'、'7'以及 'M' 所创建出来的一个表达式。 <br />
<br />
/a7M/ <br />
等价的 VBScript 表达式为： <br />
<br />
"a7M" <br />
请注意这里没有连接操作符。所需要做的就是将一个字符放在了另一个字符后面。 
<img src ="http://www.blogjava.net/keweibo/aggbug/186187.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2008-03-14 09:29 <a href="http://www.blogjava.net/keweibo/articles/186187.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript获取当前页面url值及url中的参数值</title><link>http://www.blogjava.net/keweibo/articles/186186.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 14 Mar 2008 01:25:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/186186.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/186186.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/186186.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/186186.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/186186.html</trackback:ping><description><![CDATA[<table style="table-layout: fixed">
    <tbody>
        <tr>
            <td>
            <div class="cnt" id="blog_text">
            <p>一个简单使用的例子：<br />
            &lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />
            &lt;!--<br />
            var q = location.search.substr(1);<br />
            var qs = q.split("&amp;");<br />
            if (qs) {<br />
            for (var i=0;i&lt;qs.length;i++) {<br />
            &nbsp;&nbsp; alert("QueryName:"+qs[i].substring(0,qs[i].indexOf("="))+"\nQueryValue:"+qs[i].substring(qs[i].indexOf("=")+1))<br />
            }<br />
            }<br />
            //--&gt;<br />
            &lt;/SCRIPT&gt;</p>
            <p>《JAVA权威指南》中的例子：<br />
            &nbsp;&nbsp; function&nbsp;&nbsp;&nbsp; getArgs()&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp;&nbsp; args=new&nbsp;&nbsp;&nbsp; Object();&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp;&nbsp; query=location.search.substring(1);//获取查询串&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp;&nbsp; pairs=query.split(",");//在逗号处断开&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var&nbsp;&nbsp;&nbsp; i=0;i&lt;pairs.length;i++)&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp;&nbsp; pos=pairs[i].indexOf('=');//查找name=value&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pos==-1)&nbsp;&nbsp;&nbsp; continue;//如果没有找到就跳过&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp;&nbsp; argname=pairs[i].substring(0,pos);//提取name&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp;&nbsp; value=pairs[i].substring(pos+1);//提取value&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; args[argname]=unescape(value);//存为属性&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp;&nbsp; args;//返回对象&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; } </p>
            <p>搜集来的例子：<br />
            &lt;script&gt;&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; var&nbsp;&nbsp;&nbsp; url="http://www.163.com/123.aspx?name=mary&amp;age=23&amp;page=123";&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; var&nbsp;&nbsp;&nbsp; str=url.split("?")[1];&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; var&nbsp;&nbsp;&nbsp; result="";&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; function&nbsp;&nbsp;&nbsp; getParameter(psName){&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; if(str.indexOf(psName)!=-1&amp;&amp;(str.substr(str.indexOf(psName)-1,1)=="?"||str.substr(str.indexOf(psName)-1,1)=="&amp;")){&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; if(str.substring(str.indexOf(psName),str.length).indexOf("&amp;")!=-1){&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; var&nbsp;&nbsp;&nbsp; Test=str.substring(str.indexOf(psName),str.length);&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; result=Test.substr(Test.indexOf(psName),Test.indexOf("&amp;")-Test.indexOf(psName));&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; else{&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; result=str.substring(str.indexOf(psName),str.length);&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; else{&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; result="无此参数";&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; alert(result);&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; getParameter("age");&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp; &lt;/script&gt;</p>
            <p><br />
            &lt;script type="text/javascript"&gt;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //var pathname = location.pathname;当前页面的URL<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //var href = location.href;当前页面中连接的URL<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var q = location.search.substr(1);//前一页面的URL<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var qs = q.split("&amp;");<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var m=qs[1].substring(qs[1].indexOf("=")+1);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var d=qs[2].substring(qs[2].indexOf("=")+1);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("您所统计的日期为"+m+"月"+d+"日！");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
            &lt;/script&gt;<br />
            搜集相关网址：<a href="http://www.ifmiss.com/1/blog/article.asp?id=195">http://www.ifmiss.com/1/blog/article.asp?id=195</a><br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://blog.chinaunix.net/u/21267/showart.php?id=276569">http://blog.chinaunix.net/u/21267/showart.php?id=276569</a></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
 <img src ="http://www.blogjava.net/keweibo/aggbug/186186.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2008-03-14 09:25 <a href="http://www.blogjava.net/keweibo/articles/186186.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>break语句和continue语句 </title><link>http://www.blogjava.net/keweibo/articles/176317.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 18 Jan 2008 11:51:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/176317.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/176317.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/176317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/176317.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/176317.html</trackback:ping><description><![CDATA[<p><span style="font-size: 9.5pt">break</span><span style="font-family: 宋体">和</span><span style="font-size: 9.5pt">continue</span><span style="font-family: 宋体">语句对循环中的代码执行提供了更严格的控制。</span><span style="font-size: 9.5pt">break</span><span style="font-family: 宋体">语句可以立即退出循环，阻止再次反复执行任何代码，而</span><span style="font-size: 9.5pt">continue</span><span style="font-family: 宋体">语句只是退出当前循环，根据控制表达式还允许继续进行下一次循环。例如：</span></p>
<p style="margin: 6pt 0cm"><img style="width: 659px; height: 155px" height="155" alt="" src="http://book.csdn.net/BookFiles/110/02/image210.jpg" width="659" /></p>
<p><span style="font-family: 宋体">在上面的代码中，</span><span style="font-size: 9.5pt">for</span><span style="font-family: 宋体">循环将从</span><span style="font-family: 'Times New Roman'; letter-spacing: 0pt">1</span><span style="font-family: 宋体">到</span><span style="font-family: 'Times New Roman'; letter-spacing: 0pt">10</span><span style="font-family: 宋体">迭代变量</span><span style="font-size: 9.5pt">i</span><span style="font-family: 宋体">。在循环主体中，</span><span style="font-size: 9.5pt">if</span><span style="font-family: 宋体">语句将（使用取模运算符）检查</span><span style="font-size: 9.5pt">i</span><span style="font-family: 宋体">的值是否能被</span><span style="font-family: 'Times New Roman'; letter-spacing: 0pt">5</span><span style="font-family: 宋体">整除。如果能被</span><span style="font-family: 'Times New Roman'; letter-spacing: 0pt">5</span><span style="font-family: 宋体">整除，将执行</span><span style="font-size: 9.5pt">break</span><span style="font-family: 宋体">语句，警告显示</span><span style="font-size: 9.5pt">"4"</span><span style="font-family: 宋体">，即在退出循环前执行循环的次数。如果用</span><span style="font-size: 9.5pt">continue</span><span style="font-family: 宋体">语句代替这个例子中的</span><span style="font-size: 9.5pt">break</span><span style="font-family: 宋体">语句，结果将不同：</span></p>
<p style="margin: 6pt 0cm"><img style="width: 668px; height: 157px" height="157" alt="" src="http://book.csdn.net/BookFiles/110/02/image212.jpg" width="668" /></p>
<p><span style="margin-top: 19px; z-index: 47; left: 0px; margin-left: 555px; width: 43px; position: absolute; height: 21px"><img height="21" alt="" src="http://book.csdn.net/BookFiles/110/02/image213.gif" width="43" /></span><span style="font-family: 宋体">这里，警告将显示</span><span style="font-size: 9.5pt">"8"</span><span style="font-family: 宋体">，即执行循环的次数。可能执行的循环总数为</span><span style="font-family: 'Times New Roman'; letter-spacing: 0pt">9</span><span style="font-family: 宋体">，不过当</span><span style="font-size: 9.5pt">i</span><span style="font-family: 宋体">的值为</span><span style="font-size: 9.5pt">5</span><span style="font-family: 宋体">时，将执行</span><span style="font-size: 9.5pt">continue</span><span style="font-family: 宋体">语句，会使循环跳过表达式</span><span style="font-size: 9.5pt">iNum++</span><span style="font-family: 宋体">，返回循环开头。</span></p>
<p><span style="font-size: 9.5pt">break</span><span style="font-family: 宋体">语句和</span><span style="font-size: 9.5pt">continue</span><span style="font-family: 宋体">语句都可以与有标签的语句联合使用，返回代码中的特定位置。通常，当循环内部还有循环时，会这样做，如下面的例子所示：</span></p>
<p style="margin: 6pt 0cm"><img style="width: 640px; height: 198px" height="198" alt="" src="http://book.csdn.net/BookFiles/110/02/image215.jpg" width="640" /></p>
<p><span style="font-family: 宋体">在这个例子中，标签</span><span style="font-size: 9.5pt">outermost</span><span style="font-family: 宋体">表示的是第一个</span><span style="font-size: 9.5pt">for</span><span style="font-family: 宋体">语句。正常情况下，每个</span><span style="font-size: 9.5pt">for</span><span style="font-family: 宋体">语句执行</span><span style="font-family: 'Times New Roman'; letter-spacing: 0pt">10</span><span style="font-family: 宋体">次代码块，意味着</span><span style="font-size: 9.5pt">iNum++</span><span style="font-family: 宋体">正常情况下将被执行</span><span style="font-family: 'Times New Roman'; letter-spacing: 0pt">100</span><span style="font-family: 宋体">次，在执行完成时，</span><span style="font-size: 9.5pt">iNum</span><span style="font-family: 宋体">应该等于</span><span style="font-family: 'Times New Roman'; letter-spacing: 0pt">100</span><span style="font-family: 宋体">。这里的</span><span style="font-size: 9.5pt">break</span><span style="font-family: 宋体">语句有一个参数，即停止循环后要跳转到的语句的标签。这样</span><span style="font-size: 9.5pt">break</span><span style="font-family: 宋体">语句不止能跳出内部</span><span style="font-size: 9.5pt">for</span><span style="font-family: 宋体">语句（即使用变量</span><span style="font-size: 9.5pt">j</span><span style="font-family: 宋体">的语句），还能跳出外部</span><span style="font-size: 9.5pt">for</span><span style="font-family: 宋体">语句（即使用变量</span><span style="font-size: 9.5pt">i</span><span style="font-family: 宋体">的语句）。因此，</span><span style="font-size: 9.5pt">iNum</span><span style="font-family: 宋体">最后的值是</span><span style="font-size: 9.5pt">55</span><span style="font-family: 宋体">，因为当</span><span style="font-size: 9.5pt">i</span><span style="font-family: 宋体">和</span><span style="font-size: 9.5pt">j</span><span style="font-family: 宋体">的值都等于</span><span style="font-size: 9.5pt">5</span><span style="font-family: 宋体">时，循环将终止。可以以同样的方式使用</span><span style="font-size: 9.5pt">continue</span><span style="font-family: 宋体">语句：</span></p>
<p style="margin: 6pt 0cm"><img style="width: 686px; height: 116px" height="116" alt="" src="http://book.csdn.net/BookFiles/110/02/image217.jpg" width="686" /></p>
<p style="margin: 6pt 0cm"><img style="width: 701px; height: 97px" height="97" alt="" src="http://book.csdn.net/BookFiles/110/02/image218.jpg" width="701" /></p>
<p><span style="font-family: 宋体">在这个例子中，</span><span style="font-size: 9.5pt">continue</span><span style="font-family: 宋体">语句会迫使循环继续，不止是内部循环，外部循环也如此。当</span><span style="font-size: 9.5pt">j</span><span style="font-family: 宋体">等于</span><span style="font-size: 9.5pt">5</span><span style="font-family: 宋体">时出现这种情况，意味着内部循环将减少</span><span style="font-family: 'Times New Roman'; letter-spacing: 0pt">5</span><span style="font-family: 宋体">次迭代，致使</span><span style="font-size: 9.5pt">iNum</span><span style="font-family: 宋体">的值为</span><span style="font-size: 9.5pt">95</span><span style="font-family: 宋体">。</span></p>
<p style="margin: 4.5pt 0cm"><span style="margin-top: 27px; z-index: 48; left: 0px; margin-left: -39px; width: 44px; position: absolute; height: 21px"><img height="21" alt="" src="http://book.csdn.net/BookFiles/110/02/image219.gif" width="44" /></span><span style="font-family: 楷体_GB2312">可以看到，与</span><span style="font-size: 9.5pt">break</span><span style="font-family: 楷体_GB2312">和</span><span style="font-size: 9.5pt">continue</span><span style="font-family: 楷体_GB2312">联合使用的有标签语句的功能非常强大，不过过度使用它们会给调试代码带来麻烦。要确保使用的标签具有说明性，不要嵌套太多层循环。</span></p>
<img src ="http://www.blogjava.net/keweibo/aggbug/176317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2008-01-18 19:51 <a href="http://www.blogjava.net/keweibo/articles/176317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript迭代语句</title><link>http://www.blogjava.net/keweibo/articles/176316.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 18 Jan 2008 11:49:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/176316.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/176316.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/176316.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/176316.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/176316.html</trackback:ping><description><![CDATA[<p><span style="font-family: 宋体">迭代语句又叫循环语句，声明一组要反复执行的命令，直到满足了某些条件为止。循环通常用于迭代数组的值（因此而得名），或者执行重复的算术任务。</span>ECMAScript<span style="font-family: 宋体">为了这种处理提供了四种迭代语句。</span></p>
<p>1. <strong><span style="font-size: 9.5pt">do-while</strong></span><span style="font-family: 黑体">语句</span></p>
<p><span style="font-size: 9.5pt">do-while</span><span style="font-family: 宋体">语句是后测试循环，即退出条件在执行过循环内部的代码之后计算。这意味着在计算表达式之前，至少会执行循环主体一次。语法如下：</span></p>
<p style="margin: 6pt 0cm"><img style="width: 180px; height: 50px" height="50" alt="" src="http://book.csdn.net/BookFiles/110/02/image197.jpg" width="180" /></p>
<p><span style="font-family: 宋体">例如：</span></p>
<p style="margin: 6pt 0cm"><span style="margin-top: 56px; z-index: 45; left: 0px; margin-left: 555px; width: 43px; position: absolute; height: 21px"><img height="21" alt="" src="http://book.csdn.net/BookFiles/110/02/image198.gif" width="43" /></span><img style="width: 192px; height: 90px" height="90" alt="" src="http://book.csdn.net/BookFiles/110/02/image199.jpg" width="192" /></p>
<p>2. <strong><span style="font-size: 9.5pt">while</strong></span><span style="font-family: 黑体">语句</span></p>
<p><span style="font-size: 9.5pt">while</span><span style="font-family: 宋体">语句是前测试循环。这意味着退出条件是在执行循环内部的代码之前计算的。因此，循环主体可能根本不被执行。语法如下：</span></p>
<p style="margin: 6pt 0cm"><img style="width: 188px; height: 10px" height="10" alt="" src="http://book.csdn.net/BookFiles/110/02/image200.jpg" width="188" /></p>
<p><span style="font-family: 宋体">例如：</span></p>
<p style="margin: 6pt 0cm"><img style="width: 185px; height: 91px" height="91" alt="" src="http://book.csdn.net/BookFiles/110/02/image201.jpg" width="185" /></p>
<p>3. <strong><span style="font-size: 9.5pt">for</strong></span><span style="font-family: 黑体">语句</span></p>
<p><span style="font-size: 9.5pt">for</span><span style="font-family: 宋体">语句是前测试循环，而且在进入循环之前，能够初始化变量，并定义循环后要执行的代码。语法如下：</span></p>
<p style="margin: 6pt 0cm"><img style="width: 403px; height: 9px" height="9" alt="" src="http://book.csdn.net/BookFiles/110/02/image202.jpg" width="403" /></p>
<p><span style="font-family: 宋体">例如：</span></p>
<p style="margin: 6pt 0cm"><img style="width: 242px; height: 44px" height="44" alt="" src="http://book.csdn.net/BookFiles/110/02/image203.jpg" width="242" /></p>
<p><span style="font-family: 宋体">这段代码定义了初始值为</span><span style="font-size: 9.5pt">0</span><span style="font-family: 宋体">的变量</span><span style="font-size: 9.5pt">i</span><span style="font-family: 宋体">。只有当条件表达式（</span><span style="font-size: 9.5pt">i&lt;iCount</span><span style="font-family: 宋体">）的值为</span><span style="font-size: 9.5pt">true</span><span style="font-family: 宋体">时，才进入</span><span style="font-size: 9.5pt">for</span><span style="font-family: 宋体">循环，这样循环主体可能不被执行。如果执行了循环主体，那么将执行循环后表达式，并迭代变量</span><span style="font-size: 9.5pt">i</span><span style="font-family: 宋体">。</span></p>
<p>4. <strong><span style="font-size: 9.5pt">for-in</strong></span><span style="font-family: 黑体">语句</span></p>
<p><span style="font-size: 9.5pt">for-in</span><span style="font-family: 宋体">语句是严格的迭代语句，用于枚举对象的属性。语法如下：</span></p>
<p style="margin: 6pt 0cm"><img height="9" alt="" src="http://book.csdn.net/BookFiles/110/02/image204.jpg" width="239" /></p>
<p><span style="font-family: 宋体">例如：</span></p>
<p style="margin: 6pt 0cm"><img style="width: 212px; height: 52px" height="52" alt="" src="http://book.csdn.net/BookFiles/110/02/image205.jpg" width="212" /></p>
<p><span style="margin-top: 22px; z-index: 46; left: 0px; margin-left: -39px; width: 44px; position: absolute; height: 21px"><img height="21" alt="" src="http://book.csdn.net/BookFiles/110/02/image206.gif" width="44" /></span><span style="font-family: 宋体">这里，</span><span style="font-size: 9.5pt">for-in</span><span style="font-family: 宋体">语句用于显示</span>BOM <span style="font-size: 9.5pt">window</span><span style="font-family: 宋体">对象的所有属性。前面讨论过的方法</span><span style="font-size: 9.5pt">property- IsEnumerable()</span><span style="font-family: 宋体">是</span>ECMAScript<span style="font-family: 宋体">中专门用于说明属性是否可以用</span><span style="font-size: 9.5pt">for-in</span><span style="font-family: 宋体">语句访问的方法。</span></p>
<img src ="http://www.blogjava.net/keweibo/aggbug/176316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2008-01-18 19:49 <a href="http://www.blogjava.net/keweibo/articles/176316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中的字符串操作</title><link>http://www.blogjava.net/keweibo/articles/175289.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Mon, 14 Jan 2008 12:09:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/175289.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/175289.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/175289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/175289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/175289.html</trackback:ping><description><![CDATA[<span class="t18">&nbsp; 一、概述<br />
&nbsp;&nbsp;&nbsp; 字符串在JavaScript中几乎无处不在，在你处理用户的输入<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u6570_u636E";KeyGate_ads.ShowGgAds(this,"_u6570_u636E",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BR1B4SVCLR_LWI5z26wPqx_B-24_LPNvJl9gDwI23AeDFCBACGAIgrYXQDSgUOABQ1qCA5_j_____AWCdsd6B2AWqAQoyMDAwMDM3NTQxsgEPd3d3Lmtub3dza3kuY29tyAEB2gEiaHR0cDovL3d3dy5rbm93c2t5LmNvbS8zNDEyMzAuaHRtbIACAakCg7aTRJOBgj7IAs_i-ASoAwHoA7QD6AMi6AMg6AMF&amp;num=2&amp;adurl=http://www.zycode.cn/PRODUCTS/solution.htm&amp;client=ca-pub-5186439242807756");GgKwClickStat("数据","www.zycode.cn","afc","2000037541");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u6570_u636E"'>数据</strong></nobr>的时候，在读取或设置DOM对象的属性时，在操作cookie时，当然还有更多...。JavaScript的核心部分提供了一组属性和方法用于通用的字符串操作，如分割字符串，改变字符串的大小写，操作子字符串等。<br />
&nbsp;&nbsp;&nbsp; 当前的大部分浏览器也能从强大的正则表达式获益，因为它极大地简化了大量的字符串操作任务，不过它也需要你克服一条有些陡峭的学习曲线。在这里，主要是介绍字符串本身的一些操作，正则表达式会在以后的随笔中涉及。
<p>二、字符串的创建<br />
&nbsp;&nbsp;&nbsp; 创建一个字符串有几种方法。最简单的是用引号将一组字符包含起来，可以将其赋值给一个字符串变量。<br />
&nbsp;&nbsp;&nbsp; var myStr = "Hello, String!";<br />
&nbsp;&nbsp;&nbsp; 可以用双引号或单引号将字符串包含，但要注意，作为界定字符串的一对引号必须是相同的，不能混用。<br />
&nbsp;&nbsp;&nbsp; 像var myString = "Fluffy is a pretty cat.'; 这样的声明就是非法的。<br />
&nbsp;&nbsp;&nbsp; 允许使用两种引号，使得某些操作变得简单，比如将一种嵌入另外一种：<br />
&nbsp;&nbsp;&nbsp; document.write("&lt;img src='img/logo.jpg' height='30' width='100' alt='Logo'&gt;");</p>
<p>&nbsp;&nbsp;&nbsp; 我们在上面脚本创建了几个字符串，但本质上，它们并不是真正的字符串对象，准确地说，它们是字符串类型的值。要创建一个字符串对象，可使用如下语句：var strObj = new String("Hello, String!");<br />
&nbsp;&nbsp;&nbsp; 使用typeof运算符查看会发现，上面的myStr类型为string，而strObj类型为object。<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 如果想知道字符串的长度，使用其length属性：string.length。<br />
&nbsp;&nbsp;&nbsp; 得到字符串的指定位置的字符使用方法：string.charAt(index);</p>
<p>三、字符串的拼接<br />
问题：<br />
&nbsp;&nbsp;&nbsp; 将两个或多个字符串拼接为一个大的字符串<br />
<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u89E3_u51B3_u65B9_u6848";KeyGate_ads.ShowGgAds(this,"_u89E3_u51B3_u65B9_u6848",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BWmaUSVCLR_LWI5z26wPqx_B-zZ7SPumuoJ0FwI23AfDXHBAIGAggrYXQDSgUOABQ8JaUovr_____AWCdsd6B2AWqAQoyMDAwMDM3NTQxsgEPd3d3Lmtub3dza3kuY29tyAEB2gEiaHR0cDovL3d3dy5rbm93c2t5LmNvbS8zNDEyMzAuaHRtbKkCg7aTRJOBgj7IArm0jASoAwHoA7QD6AMi6AMg6AMF&amp;num=8&amp;adurl=http://www.boschsecurity.com.cn&amp;client=ca-pub-5186439242807756");GgKwClickStat("解决方案","www.boschsecurity.com.cn","afc","2000037541");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u89E3_u51B3_u65B9_u6848"'>解决方案</strong></nobr>：<br />
&nbsp;&nbsp;&nbsp; 非常简单，就用一个"+"将两个字符串"相加"：<br />
&nbsp;&nbsp;&nbsp; var longString = "One piece " + "plus one more piece."; <br />
&nbsp;&nbsp;&nbsp; 要将多个字符串累积为一个字符串，还可以使用"+="操作符：<br />
&nbsp;&nbsp;&nbsp; var result = "";<br />
&nbsp;&nbsp;&nbsp; result += "My name is Anders"<br />
&nbsp;&nbsp;&nbsp; result += " and my age is 25";&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 要在字符串中添加换行符，需要使用转义字符"\n"：<br />
&nbsp;&nbsp;&nbsp; var confirmString = "You did not enter a response to the last " +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "question.\n\nSubmit form anyway?";<br />
&nbsp;&nbsp;&nbsp; var confirmValue = confirm(confirmString);<br />
&nbsp;&nbsp;&nbsp; 但这种方法只能用在像警告、确认对话框之类的情况下，如果将这段文本作为HTML内容呈现，就无效了，此时用"&lt;br&gt;"代替它：<br />
&nbsp;&nbsp;&nbsp; var htmlString = "First line of string.&lt;br&gt;Second line of string.";<br />
&nbsp;&nbsp;&nbsp; document.write(htmlString);</p>
<p>&nbsp;&nbsp;&nbsp; String对象还提供了方法concat()，它完成与"+"相同的功能：<br />
&nbsp;&nbsp;&nbsp; string.concat(value1, value2, ...)<br />
&nbsp;&nbsp;&nbsp; 不过concat()方法显然不如"+"来得直观简洁。</p>
<p>四、访问字符串的子串<br />
问题：<br />
&nbsp;&nbsp;&nbsp; 获得一字符串的一部分的副本。<br />
解决方案：<br />
&nbsp;&nbsp;&nbsp; 使用substring()或slice()方法(NN4+, IE4+)，下面说明它们的具体用法。<br />
&nbsp;&nbsp;&nbsp; substring()的<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u539F_u578B";KeyGate_ads.ShowGgAds(this,"_u539F_u578B",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BR1B4SVCLR_LWI5z26wPqx_B-24_LPNvJl9gDwI23AeDFCBACGAIgrYXQDSgUOABQ1qCA5_j_____AWCdsd6B2AWqAQoyMDAwMDM3NTQxsgEPd3d3Lmtub3dza3kuY29tyAEB2gEiaHR0cDovL3d3dy5rbm93c2t5LmNvbS8zNDEyMzAuaHRtbIACAakCg7aTRJOBgj7IAs_i-ASoAwHoA7QD6AMi6AMg6AMF&amp;num=2&amp;adurl=http://www.zycode.cn/PRODUCTS/solution.htm&amp;client=ca-pub-5186439242807756");GgKwClickStat("原型","www.zycode.cn","afc","2000037541");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u539F_u578B"'>原型</strong></nobr>为：&nbsp; string.substring(from, to)<br />
&nbsp;&nbsp;&nbsp; 第一个参数from指定了子字符串在原字符串中的起始位置(基于0的索引)；第二个参数to是可选的，它指定了子字符串在原字符串的结束位置(基于0的索引)，一般情况下，它应比from大，如果它被省略，那么子字符串将一直到原字符串的结尾处。<br />
&nbsp;&nbsp;&nbsp; 如果参数from不小心比参数to大了会怎样？JavaScript会自动调解子字符串的起止位置，也就是说，substring()总是从两个参数中较小的那个开始，到较大的那个结束。不过要注意，它包含起始位置的那个字符，但不包含结束位置的那个字符。<br />
&nbsp;&nbsp;&nbsp; var fullString = "Every dog has his day.";<br />
&nbsp;&nbsp;&nbsp; var section = fullString.substring(0, 4); // section is "Ever".<br />
&nbsp;&nbsp;&nbsp; section = fullString.substring(4, 0);&nbsp;&nbsp;&nbsp;&nbsp; // section is also "Ever".<br />
&nbsp;&nbsp;&nbsp; section = fullString.substring(1, 1);&nbsp;&nbsp;&nbsp;&nbsp; // section is an empty string.<br />
&nbsp;&nbsp;&nbsp; section = fullString.substring(-2, 4); // section is "Ever", same as fullString.substring(0, 4);&nbsp;&nbsp;&nbsp; slice()的原型为：&nbsp; string.slice(start, end)<br />
&nbsp;&nbsp;&nbsp; 参数start表示子串的起始位置，如果为负数，那么可以理解为倒数第几个开始，例如-3表示从倒数第三个开始；参数end表示结束位置，与start一样，它也可以为负数，其含义也表示到倒数第几个结束。slice()的参数可以为负数，所以要比substring()更加灵活，但没那么宽容了，如果start比end要大，它将返回一个空字符串(示例略)。<br />
&nbsp;&nbsp;&nbsp; 还有一个方法是substr()，其原型为： string.substr(start, length)<br />
&nbsp;&nbsp;&nbsp; 从原型可以看出它的参数的含义，start表示起始位置，length则表示子字符串的长度。JavaScript标准不提倡使用该方法。<br />
五、字符串的大小写转换<br />
问题：<br />
&nbsp;&nbsp;&nbsp; 在你的页面上有文本框接收用户的输入信息，比如城市，然后你会根据他的城市的不同做不同的处理，这时自然会用到字符串比较，那么在比较前，最好进行大小写转换，这样只要考虑转换后的情形即可；或者要在页面上收集数据，然后将这些数据存储在<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u6570_u636E_u5E93";KeyGate_ads.ShowGgAds(this,"_u6570_u636E_u5E93",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BR1B4SVCLR_LWI5z26wPqx_B-24_LPNvJl9gDwI23AeDFCBACGAIgrYXQDSgUOABQ1qCA5_j_____AWCdsd6B2AWqAQoyMDAwMDM3NTQxsgEPd3d3Lmtub3dza3kuY29tyAEB2gEiaHR0cDovL3d3dy5rbm93c2t5LmNvbS8zNDEyMzAuaHRtbIACAakCg7aTRJOBgj7IAs_i-ASoAwHoA7QD6AMi6AMg6AMF&amp;num=2&amp;adurl=http://www.zycode.cn/PRODUCTS/solution.htm&amp;client=ca-pub-5186439242807756");GgKwClickStat("数据库","www.zycode.cn","afc","2000037541");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u6570_u636E_u5E93"'>数据库</strong></nobr>，而数据库恰好只接收大写字符；在这些情况下，我们都要考虑对字符串进行大小写转换。<br />
解决方案：<br />
&nbsp;&nbsp;&nbsp; 使用toLowerCase()和toUpperCase()方法：<br />
&nbsp;&nbsp;&nbsp; var city = "ShanGHai"; <br />
&nbsp;&nbsp;&nbsp; city = city.toLowerCase();&nbsp; // city is "shanghai" now.<br />
六、判断两个字符串是否相等<br />
问题：<br />
&nbsp;&nbsp;&nbsp; 比如，你想拿用户的输入值与已知的字符串比较<br />
解决方案：<br />
&nbsp;&nbsp;&nbsp; 先将用户的输入值全部转换为大写（或小写），然后再行比较：<br />
&nbsp;&nbsp;&nbsp; var name = document.form1.txtUserName.value.toLowerCase();<br />
&nbsp;&nbsp;&nbsp; if(name == "urname")<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // statements go here.<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; JavaScript有两种相等运算符。一种是完全向后兼容的，标准的"=="，如果两个操作数类型不一致，它会在某些时候自动对操作数进行类型转换，考虑下面的赋值语句：<br />
&nbsp;&nbsp;&nbsp; var strA = "i love you!";<br />
&nbsp;&nbsp;&nbsp; var strB = new String("i love you!");<br />
&nbsp;&nbsp;&nbsp; 这两个变量含有相同的字符序列，但数据类型却不同，前者为string，后者为object，在使用"=="操作符时，JavaScript会尝试各种求值，以检测两者是否会在某种情况下相等。所以下面的表达式结果为true： strA == strB。<br />
&nbsp;&nbsp;&nbsp; 第二种操作符是"严格"的"==="，它在求值时不会这么宽容，不会进行类型转换。所以表达式strA === strB的值为false，虽然两个变量持有的值相同。<br />
&nbsp;&nbsp;&nbsp; 有时代码的逻辑要求你判断两个值是否不相等，这里也有两个选择："!="和严格的"!=="，它们的关系就类似于"=="和"==="。<br />
讨论：<br />
&nbsp;&nbsp;&nbsp; "=="和"!="在求值时会尽可能地寻找值的匹配性，但你可能还是想在比较前进行显式的类型转换，以"帮助"它们完成工作。比如，如果想判断一个用户的输入值（字符串）是否等于一个数字，你可以让"=="帮你完成类型转换：<br />
&nbsp;&nbsp;&nbsp; if(document.form1.txtAge.value == someNumericVar) { ... }<br />
&nbsp;&nbsp;&nbsp; 也可以提前转换：<br />
&nbsp;&nbsp;&nbsp; if(parseInt(document.form1.txtAge.value) == someNumericVar) { ... }<br />
&nbsp;&nbsp;&nbsp; 如果你比较习惯于强类型的编程语言(比如C#,Java等)，那么这里你可以延续你的习惯(类型转换)，这样也会增强程序的可读性。</p>
<p>&nbsp;&nbsp;&nbsp; 有一种情况需要注意，就是计算机的区域设置。如果用"&lt;"和"&gt;"来比较字符串，那么JavaScript把它们作为Unicode来比较，但显然，人们在浏览网页时不会把文本当作Unicode来阅读:) 比如在西班牙语中，按照传统的排序，"ch"将作为一个字符排在"c"和"d"之间。localeCompare()提供了一种方式，可以帮助你使用默认区域设置下的字符排序规则。<br />
&nbsp;&nbsp;&nbsp; var strings;&nbsp; // 要排序的字符串数组，假设已经得到初始化<br />
&nbsp;&nbsp;&nbsp; strings.sort(function(a,b) { return a.localeCompare(b) });&nbsp; // 调用sort()方法进行排序</p>
<p>七、字符串的查找<br />
问题：<br />
&nbsp;&nbsp;&nbsp; 判断一个字符串是否包含另一个字符串。<br />
解决方案：<br />
&nbsp;&nbsp;&nbsp; 使用string的indexOf()方法：<br />
&nbsp;&nbsp;&nbsp; strObj.indexOf(subString[, startIndex])<br />
&nbsp;&nbsp;&nbsp; strObj为要进行判断的字符串，subString为要在strObj查找的子字符串，startIndex是可选的，表示查找的开始位置(基于0的索引)，如果startIndex省略，则从strObj开始处查找，如果startIndex小于0，则从0开始，如果startIndex大于最大索引，则从最大索引处开始。<br />
&nbsp;&nbsp;&nbsp; indexOf()返回strObj中subString的开始位置，如果没有找到，则返回-1。在脚本中，可以这么使用：<br />
&nbsp;&nbsp;&nbsp; if(largeString.indexOf(shortString) != -1)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 如果包含，进行相应处理；<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; 也许一个字符串会包含另一字符串不止一次，这时第二个参数startIndex也许会派上用场，下面这个函数演示如何求得一个字符串包含另外一个字符串的次数：<br />
&nbsp;&nbsp;&nbsp; function countInstances(mainStr, subStr)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var count = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var offset = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; offset = mainStr.indexOf(subStr, offset);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(offset != -1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; offset += subStr.length;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }while(offset != -1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return count;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; String对象有一个与indexOf()对应的方法，lastIndexOf()：<br />
&nbsp;&nbsp;&nbsp; strObj.lastIndexOf(substring[, startindex])<br />
&nbsp;&nbsp;&nbsp; strObj为要进行判断的字符串，subString为要在strObj查找的子字符串，startIndex是可选的，表示查找的开始位置(基于0的索引)，如果startIndex省略，则从strObj末尾处查找，如果startIndex小于0，则从0开始，如果startIndex大于最大索引，则从最大索引处开始。该方法自右向左查找，返回subString在strObj中最后出现的位置，如果没有找到，返回-1。</p>
<p>八、在Unicode值和字符串中的字符间转换<br />
问题：<br />
&nbsp;&nbsp;&nbsp; 获得一个字符的Unicode编码值，反之亦然。<br />
解决方案：<br />
&nbsp;&nbsp;&nbsp; 要获得字符的Unicode编码，可以使用string.charCodeAt(index)方法，其定义为：<br />
&nbsp;&nbsp;&nbsp; strObj.charCodeAt(index)<br />
&nbsp;&nbsp;&nbsp; index为指定字符在strObj对象中的位置（基于0的索引），返回值为0与65535之间的16位整数。例如：<br />
&nbsp;&nbsp;&nbsp; var strObj = "ABCDEFG";<br />
&nbsp;&nbsp;&nbsp; var code = strObj.charCodeAt(2); // Unicode value of character 'C' is 67<br />
&nbsp;&nbsp;&nbsp; 如果index指定的索引处没有字符，则返回值为NaN。</p>
<p>&nbsp;&nbsp;&nbsp; 要将Unicode编码转换为一个字符，使用String.fromCharCode()方法，注意它是String对象的一个"静态方法"，也就是说在使用前不需要创建字符串实例：<br />
&nbsp;&nbsp;&nbsp; String.fromCharCode(c1, c2, ...)<br />
&nbsp;&nbsp;&nbsp; 它接受0个或多个整数，返回一个字符串，该字符串包含了各参数指定的字符，例如：<br />
&nbsp;&nbsp;&nbsp; var str = String.fromCharCode(72, 101, 108, 108, 111);&nbsp; // str == "Hello"<br />
讨论：<br />
Unicode包含了这个世界上很多书写语言的字符集，但别因为Unicode包含一个字符就期望这个字符能够在警告对话框、文本框或页面呈现时正常<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u663E_u793A";KeyGate_ads.ShowGgAds(this,"_u663E_u793A",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BHbhDSVCLR_LWI5z26wPqx_B-0OfmQpSntasEwI23AZCSFBABGAEgrYXQDSgUOABQqv_nqwJgnbHegdgFqgEKMjAwMDAzNzU0MbIBD3d3dy5rbm93c2t5LmNvbcgBAdoBImh0dHA6Ly93d3cua25vd3NreS5jb20vMzQxMjMwLmh0bWyAAgGpAoO2k0STgYI-yAKI28ABqAMB6AO0A-gDIugDIOgDBQ&amp;num=1&amp;adurl=http://www.3ctest.cn/Company.asp%3FComID%3D1&amp;client=ca-pub-5186439242807756");GgKwClickStat("显示","www.3ctest.cn","afc","2000037541");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u663E_u793A"'>显示</strong></nobr>。如果字符集不可用，在页面将显示为问号或其它符号。一台典型的北美的计算机将不能在屏幕上显示中文字符，除非中文的字符集及其字体已经安装。</p>
<p>&nbsp;&nbsp;&nbsp; 参考：<br />
&nbsp;&nbsp;&nbsp; JavaScript And Dhtml Cookbook(Oreilly)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br />
&nbsp;&nbsp;&nbsp; JavaScript-The Definitive Guide(4th Edition);<br />
转:http://www.knowsky.com/341230.html</p>
</span>
<img src ="http://www.blogjava.net/keweibo/aggbug/175289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2008-01-14 20:09 <a href="http://www.blogjava.net/keweibo/articles/175289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中取得已知结点的父结点</title><link>http://www.blogjava.net/keweibo/articles/175281.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Mon, 14 Jan 2008 10:55:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/175281.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/175281.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/175281.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/175281.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/175281.html</trackback:ping><description><![CDATA[<span style="color: #0000ff"><strong>&nbsp;&lt;script type="text/javascript"&gt;<br />
&nbsp;function change(event)<br />
&nbsp;{<br />
&nbsp;&nbsp;var curNode ;<br />
&nbsp;&nbsp;if(event == null)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;curNode = window.event.srcElement ;&nbsp;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;curNode = event.target ;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;var parNode = curNode.parentNode ;<br />
&nbsp;&nbsp;parNode.action = "account/updateCart.action" ;<br />
&nbsp;&nbsp;parNode.submit() ;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;&lt;/script&gt;</strong></span><br />
<strong>&lt;s:iterator value="#items"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;td&gt;&lt;s:property value="bookName"/&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;s:text name="global.format.money"&gt;&lt;s:param value="bookPrice"/&gt;&lt;/s:text&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;form action="" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;input type="hidden" name="bookId" value="&lt;s:property value="bookId"/&gt;"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;input type="text" name="quantity" size="2" value="&lt;s:property value="quantity"/&gt;" <span style="color: #0000ff">onchange="change();"&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&lt;/s:iterator&gt;</strong>
<img src ="http://www.blogjava.net/keweibo/aggbug/175281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2008-01-14 18:55 <a href="http://www.blogjava.net/keweibo/articles/175281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获取表格的行数和列数</title><link>http://www.blogjava.net/keweibo/articles/175017.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sun, 13 Jan 2008 11:41:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/175017.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/175017.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/175017.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/175017.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/175017.html</trackback:ping><description><![CDATA[&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;script type="text/javascript"&gt;<br />
&nbsp;&nbsp;&nbsp; function show()<br />
&nbsp;{<br />
&nbsp;&nbsp;var tab = document.getElementById("test") ;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;//表格行数<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;var rows = tab.rows.length ;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;//表格列数<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;var cells = tab.rows.item(0).cells.length ;<br />
&nbsp;&nbsp;alert("行数"+rows+"列数"+cells);<br />
&nbsp;}<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;table id="test" border="1"&gt;<br />
&lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;nbsp;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;nbsp;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;input type="button" onclick="show();"/&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;
<img src ="http://www.blogjava.net/keweibo/aggbug/175017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2008-01-13 19:41 <a href="http://www.blogjava.net/keweibo/articles/175017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用javascript取得当前页面的url路径</title><link>http://www.blogjava.net/keweibo/articles/161402.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sun, 18 Nov 2007 06:58:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/161402.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/161402.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/161402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/161402.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/161402.html</trackback:ping><description><![CDATA[&lt;script type="text/javascript"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;function getURL()<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;var url = <span style="color: red">window.location.href;<br />
</span>&nbsp;&nbsp;&nbsp;alert(url);<br />
&nbsp;&nbsp;}<br />
&nbsp;&lt;/script&gt;
<img src ="http://www.blogjava.net/keweibo/aggbug/161402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-11-18 14:58 <a href="http://www.blogjava.net/keweibo/articles/161402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>可编辑表格</title><link>http://www.blogjava.net/keweibo/articles/156276.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 26 Oct 2007 14:19:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/156276.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/156276.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/156276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/156276.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/156276.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/keweibo/articles/156276.html'>阅读全文</a><img src ="http://www.blogjava.net/keweibo/aggbug/156276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-10-26 22:19 <a href="http://www.blogjava.net/keweibo/articles/156276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>删除表格的最后一行(单元格)</title><link>http://www.blogjava.net/keweibo/articles/156270.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 26 Oct 2007 13:57:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/156270.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/156270.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/156270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/156270.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/156270.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/keweibo/articles/156270.html'>阅读全文</a><img src ="http://www.blogjava.net/keweibo/aggbug/156270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-10-26 21:57 <a href="http://www.blogjava.net/keweibo/articles/156270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>删除节点</title><link>http://www.blogjava.net/keweibo/articles/156266.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 26 Oct 2007 13:42:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/156266.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/156266.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/156266.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/156266.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/156266.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/keweibo/articles/156266.html'>阅读全文</a><img src ="http://www.blogjava.net/keweibo/aggbug/156266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-10-26 21:42 <a href="http://www.blogjava.net/keweibo/articles/156266.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态生成表格</title><link>http://www.blogjava.net/keweibo/articles/156257.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 26 Oct 2007 13:28:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/156257.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/156257.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/156257.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/156257.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/156257.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/keweibo/articles/156257.html'>阅读全文</a><img src ="http://www.blogjava.net/keweibo/aggbug/156257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-10-26 21:28 <a href="http://www.blogjava.net/keweibo/articles/156257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>document.getelementbyid has no properties</title><link>http://www.blogjava.net/keweibo/articles/156247.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 26 Oct 2007 13:04:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/156247.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/156247.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/156247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/156247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/156247.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/keweibo/articles/156247.html'>阅读全文</a><img src ="http://www.blogjava.net/keweibo/aggbug/156247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-10-26 21:04 <a href="http://www.blogjava.net/keweibo/articles/156247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修改节点</title><link>http://www.blogjava.net/keweibo/articles/156239.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 26 Oct 2007 12:36:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/156239.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/keweibo/articles/156239.html'>阅读全文</a><img src ="http://www.blogjava.net/keweibo/aggbug/156239.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-10-26 20:36 <a href="http://www.blogjava.net/keweibo/articles/156239.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用的弹出窗口用法</title><link>http://www.blogjava.net/keweibo/articles/141972.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 01 Sep 2007 10:47:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/141972.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/141972.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/141972.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/141972.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/141972.html</trackback:ping><description><![CDATA[<p>1、最基本的弹出窗口代码</p>
<p>以下是引用片段：<br />
<span style="color: #000000">&lt;SCRIPT LANGUAGE="<span style="color: #000000"><a href="http://www.knowsky.com/article.asp?typeid=36">javascript</a>"&gt;&nbsp; </span></span><br />
&lt;!--&nbsp; <br />
window.open ('page.html')&nbsp; <br />
--&gt;&nbsp; <br />
&lt;/SCRIPT&gt;&nbsp; </p>
<p>代码放在&lt;SCRIPT LANGUAGE="javascript"&gt;标签和&lt;/script&gt;之间。 <br />
<span style="color: #ff00ff">&lt;!-- 和 --&gt;是对一些版本低的浏览器起作用。 <br />
</span>window.open ('page.html') 用于控制弹出新的窗口page.html，如果page.html不与主窗口在同一路径下，前面应写明路径，绝对路径(http://)和相对路径(../)均可。用单引号和双引号都可以，只是不要混用。 <br />
这一段代码可以加入HTML的任意位置，&lt;head&gt;和&lt;/head&gt;之间可以，&lt;body&gt;间&lt;/body&gt;也可以，越前越早执行，尤其是页面代码长，又想使页面早点弹出就尽量往前放。 </p>
<p><br />
2、经过设置后的弹出窗口</p>
<p>定制这个弹出的窗口的外观，尺寸大小，弹出的位置以适应该页面的具体情况。 </p>
<p>以下是引用片段：<br />
&lt;SCRIPT LANGUAGE="javascript"&gt;&nbsp; <br />
&lt;!--&nbsp; <br />
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')&nbsp; <br />
//写成一行&nbsp; <br />
--&gt;&nbsp; <br />
&lt;/SCRIPT&gt;&nbsp; </p>
<p>参数解释： <br />
以下是引用片段：<br />
&lt;SCRIPT LANGUAGE="javascript"&gt; js脚本开始；&nbsp; <br />
window.open 弹出新窗口的命令；<span style="color: #ff00ff">&nbsp; <br />
'page.html' 弹出窗口的文件名；&nbsp; <br />
'newwindow' 弹出窗口的名字（不是文件名），非必须，可用空''代替；&nbsp; <br />
height=100 窗口高度；&nbsp; <br />
width=400 窗口宽度；&nbsp; <br />
top=0 窗口距离屏幕上方的象素值；&nbsp; <br />
left=0 窗口距离屏幕左侧的象素值；&nbsp; <br />
toolbar=no 是否显示工具栏，yes为显示；&nbsp; <br />
menubar，scrollbars 表示菜单栏和滚动栏。&nbsp; <br />
resizable=no 是否允许改变窗口大小，yes为允许；&nbsp; <br />
location=no 是否显示地址栏，yes为允许；&nbsp; <br />
status=no 是否显示状态栏内的信息（通常是文件已经打开），yes为允许；&nbsp;</span> <br />
&lt;/SCRIPT&gt; <br />
js脚本结束 </p>
<p><br />
3、用函数控制弹出窗口</p>
<p>完整的代码示范 </p>
<p>以下是引用片段：<br />
&lt;html&gt;&nbsp; <br />
&lt;head&gt;&nbsp; <br />
&lt;script LANGUAGE="javascript"&gt;&nbsp; <br />
&lt;!--&nbsp; <br />
function openwin() { window.open ("page.html", "newwindow", "height=100, width=400, toolbar= no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")&nbsp; <br />
//写成一行&nbsp; <br />
}&nbsp; <br />
//--&gt;&nbsp; <br />
&lt;/script&gt;&nbsp; <br />
&lt;/head&gt;&nbsp; <br />
&lt;body onload="openwin()"&gt;&nbsp; <br />
...任意的页面内容...&nbsp; <br />
&lt;/body&gt;&nbsp; <br />
&lt;/html&gt;&nbsp; </p>
<p><br />
这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。 <br />
怎么调用呢？ <br />
方法一：&lt;body onload="openwin()"&gt; 浏览器读页面时弹出窗口； <br />
方法二：&lt;body onunload="openwin()"&gt; 浏览器离开页面时弹出窗口； <br />
方法三：用一个连接调用： <br />
&lt;a href="#" onclick="openwin()"&gt;打开一个窗口&lt;/a&gt; <br />
注意：使用的&#8220;#&#8221;是虚连接。 <br />
方法四：用一个按钮调用： <br />
&lt;input type="button" onclick="openwin()" value="打开窗口"&gt;&nbsp;</p>
<img src ="http://www.blogjava.net/keweibo/aggbug/141972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-09-01 18:47 <a href="http://www.blogjava.net/keweibo/articles/141972.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>