﻿<?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-★Daniel's Blog★-文章分类-Script</title><link>http://www.blogjava.net/Daniel2005/category/4914.html</link><description>URL:http://www.blogjava.net/Daniel2005</description><language>zh-cn</language><lastBuildDate>Sun, 24 Jun 2007 20:07:01 GMT</lastBuildDate><pubDate>Sun, 24 Jun 2007 20:07:01 GMT</pubDate><ttl>60</ttl><item><title>WEB打印方式!</title><link>http://www.blogjava.net/Daniel2005/articles/125849.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Fri, 22 Jun 2007 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/125849.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/125849.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/125849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/125849.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/125849.html</trackback:ping><description><![CDATA[<p><span style="COLOR: red">1).NET &nbsp; Framework &nbsp; 类库</span> &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; PrinterSettings &nbsp; 成员请参见 &nbsp; <br>&nbsp; PrinterSettings &nbsp; 类 &nbsp; | &nbsp; System.Drawing.Printing &nbsp; 命名空间 &nbsp; | &nbsp; C++ &nbsp; 托管扩展编程 &nbsp; &nbsp; <br>&nbsp; PrinterSettings &nbsp; 概述 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 公共构造函数 &nbsp; <br>&nbsp; PrinterSettings &nbsp; 构造函数 &nbsp; 初始化 &nbsp; PrinterSettings &nbsp; 类的新实例。 &nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 公共属性 &nbsp; <br>&nbsp; CanDuplex &nbsp; 获取指示打印机是否支持双面打印的值。 &nbsp; &nbsp; <br>&nbsp; Collate &nbsp; 获取或设置一个值，该值指示打印文档是否逐份打印。 &nbsp; &nbsp; <br>&nbsp; Copies &nbsp; 获取或设置要打印的文档份数。 &nbsp; &nbsp; <br>&nbsp; DefaultPageSettings &nbsp; 获取此打印机的默认页设置。 &nbsp; &nbsp; <br>&nbsp; Duplex &nbsp; 获取或设置双面打印的打印机设置。 &nbsp; &nbsp; <br>&nbsp; FromPage &nbsp; 获取或设置要打印的第一页的页码。 &nbsp; &nbsp; <br>&nbsp; InstalledPrinters &nbsp; 获取安装在计算机上所有打印机的名称。 &nbsp; &nbsp; <br>&nbsp; IsDefaultPrinter &nbsp; 获取一个值，该值指示 &nbsp; PrinterName &nbsp; 属性是否指定默认打印机（用户显式设置 &nbsp; PrinterName &nbsp; 的情况除外）。 &nbsp; &nbsp; <br>&nbsp; IsPlotter &nbsp; 获取指示该打印机是否是绘图仪的值。 &nbsp; &nbsp; <br>&nbsp; IsValid &nbsp; 获取一个值，该值指示 &nbsp; PrinterName &nbsp; 属性是否指定了有效的打印机。 &nbsp; &nbsp; <br>&nbsp; LandscapeAngle &nbsp; 获取旋转纵向方向以生成横向方向的角度，以度为单位。 &nbsp; &nbsp; <br>&nbsp; MaximumCopies &nbsp; 获取打印机允许一次打印的最多份数。 &nbsp; &nbsp; <br>&nbsp; MaximumPage &nbsp; 获取或设置可以在 &nbsp; PrintDialog &nbsp; 中选定的最大的 &nbsp; FromPage &nbsp; 或 &nbsp; ToPage。 &nbsp; &nbsp; <br>&nbsp; MinimumPage &nbsp; 获取或设置可以在 &nbsp; PrintDialog &nbsp; 中选定的最小的 &nbsp; FromPage &nbsp; 或 &nbsp; ToPage。 &nbsp; &nbsp; <br>&nbsp; PaperSizes &nbsp; 获取该打印机支持的纸张大小。 &nbsp; &nbsp; <br>&nbsp; PaperSources &nbsp; 获取打印机上可用的纸张来源纸盒。 &nbsp; &nbsp; <br>&nbsp; PrinterName &nbsp; 获取或设置要使用的打印机的名称。 &nbsp; &nbsp; <br>&nbsp; PrinterResolutions &nbsp; 获取该打印机支持的所有分辨率。 &nbsp; &nbsp; <br>&nbsp; PrintRange &nbsp; 获取或设置用户已指定要打印的页码。 &nbsp; &nbsp; <br>&nbsp; PrintToFile &nbsp; 获取或设置一个值，该值指示打印输出是否发送到文件，而不发送到端口。 &nbsp; &nbsp; <br>&nbsp; SupportsColor &nbsp; 获取指示该打印机是否支持彩色打印的值。 &nbsp; &nbsp; <br>&nbsp; ToPage &nbsp; 获取或设置要打印的最后一页的页码。 &nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 公共方法 &nbsp; <br>&nbsp; Clone &nbsp; 创建此 &nbsp; PrinterSettings &nbsp; 对象的一个副本。 &nbsp; &nbsp; <br>&nbsp; CreateMeasurementGraphics &nbsp; 返回 &nbsp; Graphics &nbsp; 对象，该对象包含创建 &nbsp; PrintDocument &nbsp; 时有用的打印机信息，例如，打印机的 &nbsp; TextMetric &nbsp; 对象。 &nbsp; &nbsp; <br>&nbsp; Equals（从 &nbsp; Object &nbsp; 继承） &nbsp; 已重载。确定两个 &nbsp; Object &nbsp; 实例是否相等。 &nbsp; &nbsp; <br>&nbsp; GetHashCode（从 &nbsp; Object &nbsp; 继承） &nbsp; 用作特定类型的哈希函数，适合在哈希算法和数据结构（如哈希表）中使用。 &nbsp; &nbsp; <br>&nbsp; GetHdevmode &nbsp; 已重载。创建与打印机设置相对应的 &nbsp; DEVMODE &nbsp; 结构的句柄。 &nbsp; &nbsp; <br>&nbsp; GetHdevnames &nbsp; 创建与打印机设置相对应的 &nbsp; DEVNAMES &nbsp; 结构的句柄。 &nbsp; &nbsp; <br>&nbsp; GetType（从 &nbsp; Object &nbsp; 继承） &nbsp; 获取当前实例的 &nbsp; Type。 &nbsp; &nbsp; <br>&nbsp; SetHdevmode &nbsp; 将相关信息从给定句柄复制到 &nbsp; PrinterSettings &nbsp; 中。 &nbsp; &nbsp; <br>&nbsp; SetHdevnames &nbsp; 将相关信息从给定句柄复制到 &nbsp; PrinterSettings &nbsp; 中。 &nbsp; &nbsp; <br>&nbsp; ToString &nbsp; 已重写。参见 &nbsp; Object.ToString。 &nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 受保护的方法 &nbsp; <br>&nbsp; Finalize（从 &nbsp; Object &nbsp; 继承） &nbsp; 已重写。允许 &nbsp; Object &nbsp; 在&#8220;垃圾回收&#8221;回收 &nbsp; Object &nbsp; 之前尝试释放资源并执行其他清理操作。 &nbsp; &nbsp; <br>&nbsp; 在 &nbsp; C# &nbsp; 和 &nbsp; C++ &nbsp; 中，使用析构函数语法来表示终结程序。 &nbsp; <br>&nbsp; &nbsp; &nbsp; <br>&nbsp; MemberwiseClone（从 &nbsp; Object &nbsp; 继承） &nbsp; 创建当前 &nbsp; Object &nbsp; 的浅表副本。 &nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 请参见 &nbsp; <br>&nbsp; PrinterSettings &nbsp; 类 &nbsp; | &nbsp; System.Drawing.Printing &nbsp; 命名空间 &nbsp; | &nbsp; C++ &nbsp; 托管扩展编程</p>
<span style="COLOR: red">2)1、控制"纵打"、 横打&#8221;和&#8220;页面的边距。 <br>（1）<font color=#000000>&lt;OBJECT id="factory" codeBase="smsx.cab" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext&gt;&lt;/OBJECT&gt; </font><br><span style="COLOR: #000000">&lt;</span></span>script defer&gt; <br>function SetPrintSettings() { <br>　// -- advanced features <br>　factory.printing.SetMarginMeasure(2) // measure margins in inches <br>　factory.SetPageRange(false, 1, 3) // need pages from 1 to 3 <br>　factory.printing.printer = "HP DeskJet 870C" <br>　factory.printing.copies = 2 <br>　factory.printing.collate = true <br>　factory.printing.paperSize = "A4" <br>　factory.printing.paperSource = "Manual feed" <br><br>　// -- basic features <br>　factory.printing.header = "This is MeadCo" <br>　factory.printing.footer = "Advanced Printing by ScriptX" <br>　factory.printing.portrait = false <br>　factory.printing.leftMargin = 1.0 <br>　factory.printing.topMargin = 1.0 <br>　factory.printing.rightMargin = 1.0 <br>　factory.printing.bottomMargin = 1.0 <br>} <br>&lt;/script&gt; <br><br><span style="COLOR: red">（3）</span> <br>&lt;script language="javascript"&gt; <br>　　function printsetup(){ <br>　　// 打印页面设置 <br>　　wb.execwb(8,1); <br>　　} <br>　　function printpreview(){ <br>　　// 打印页面预览 <br>　　　　 <br>　　wb.execwb(7,1); <br>　　　　　 <br>　　　　 <br>　　} <br><br>　　function printit() <br>　　{ <br>　　if (confirm('确定打印吗？')) { <br>　　wb.execwb(6,6) <br>　　} <br>　　} <br>　　&lt;/script&gt; <br>&lt;/head&gt; <br>&lt;body&gt; <br>&lt;OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0&gt;&lt;/OBJECT&gt; <br>&lt;input type=button name=button_print value="打印" onclick="javascript:printit()"&gt; <br>&lt;input type=button　name=button_setup value="打印页面设置" onclick="javascript:printsetup();"&gt; <br>&lt;input type=button　name=button_show value="打印预览" onclick="javascript:printpreview();"&gt; <br>&lt;input type=button name=button_fh value="关闭" onclick="javascript:window.close();"&gt; <br><br>
<img src ="http://www.blogjava.net/Daniel2005/aggbug/125849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2007-06-22 15:21 <a href="http://www.blogjava.net/Daniel2005/articles/125849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>How to do this in th uk format dd/mm/yyyy datediff in javascript.</title><link>http://www.blogjava.net/Daniel2005/articles/115936.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Tue, 08 May 2007 06:24:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/115936.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/115936.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/115936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/115936.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/115936.html</trackback:ping><description><![CDATA[Date.fromUKFormat = function(sUK) <br>{ <br>&nbsp; var A = sUK.split(/[\\\/]/); <br>A = [A[1],A[0],A[2]]; <br>&nbsp; return new Date(Date.parse(A.join('/'))); <br>} </font>
<p><font class=me face=verdana color=#000000 size=2>wrongToday = new Date(Date.parse("25/1/2005")) <br>today&nbsp;&nbsp; = Date.fromUKFormat("25/1/2005"); </font>
<p><font class=me face=verdana color=#000000 size=2>alert("bad: " +wrongToday) <br>alert("good: "+today)<font class=me face=verdana color=#000000 size=2></p>
<br><br><br>
<p><font class=me face=verdana color=#000000 size=2>function <strong style="COLOR: black; BACKGROUND-COLOR: #ffffaa">datediff</strong>erence() <br>{ <br>var strDate1 = document.FrmName.DateStart.value <br>var strDate2 = document.FrmName.DateEnd.value <br>var bl<strong style="COLOR: black; BACKGROUND-COLOR: #ffffaa">datediff</strong> = false </font>
<p><font class=me face=verdana color=#000000 size=2>//Start date split to UK date format and add 31 days for maximum <strong style="COLOR: black; BACKGROUND-COLOR: #ffffaa">datediff</strong> <br>strDate1 = strDate1.split("/"); <br>starttime = new Date(strDate1[2],strDate1[1]-1,strDate1[0]); <br>starttime = new Date(starttime.valueOf()+31*86400000); </font>
<p><font class=me face=verdana color=#000000 size=2>//End date split to UK date format <br>strDate2 = strDate2.split("/"); <br>endtime = new Date(strDate2[2],strDate2[1]-1,strDate2[0]); <br>endtime = new Date(endtime.valueOf()); </font>
<p><font class=me face=verdana color=#000000 size=2>if(endtime &gt; starttime) <br>{ <br>bl<strong style="COLOR: black; BACKGROUND-COLOR: #ffffaa">datediff</strong> = true <br>} </font>
<p><font class=me face=verdana color=#000000 size=2>return bl<strong style="COLOR: black; BACKGROUND-COLOR: #ffffaa">datediff</strong> <br>} </font>
<p><font class=me face=verdana color=#000000 size=2>------------------------------------------------------ <br>function submit() <br>//This will go into the submit button function. <br>bl<strong style="COLOR: black; BACKGROUND-COLOR: #ffffaa">datediff</strong> = <strong style="COLOR: black; BACKGROUND-COLOR: #ffffaa">datediff</strong>erence() </font>
<p><font class=me face=verdana color=#000000 size=2>// Takes the date from the Start date and adds <br>// 31 days to make it the maximum end date <br>strDate1 = strDate1.split("/"); <br>starttime = new Date(strDate1[2],strDate1[1]-1,strDate1[0]); <br>starttime = new Date(starttime.valueOf()+31*86400000); <br>starttime = padDigit(starttime.getDate())+"/"+padDigit(starttime.getMonth()+1)+"/"+starttime.getYear(); </font>
<p><font class=me face=verdana color=#000000 size=2>// if bl<strong style="COLOR: black; BACKGROUND-COLOR: #ffffaa">datediff</strong> = true than the end date is later than 31 days. <br>if (bl<strong style="COLOR: black; BACKGROUND-COLOR: #ffffaa">datediff</strong>==true) <br>{ <br>alert("Please pick an End Date before:\n\n" + starttime) <br>} <br>else <br>{ <br>if (blSubmit==true) <br>{frmSearchFlds.submit();} <br>} </font>
<p><font class=me face=verdana color=#000000 size=2>------------------------------------------------------ </font>
<p><font class=me face=verdana color=#000000 size=2>&lt;input type="text" name="StartDate"&gt; <br>&lt;input type="text" name="EndDate"&gt; <br>&lt;input type="submit" onclick="Submit()" </font>
<p><font class=me face=verdana color=#000000 size=2>------------------------------------------------------ </font></p>
</font></font>
<img src ="http://www.blogjava.net/Daniel2005/aggbug/115936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2007-05-08 14:24 <a href="http://www.blogjava.net/Daniel2005/articles/115936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax+javascript滚动条</title><link>http://www.blogjava.net/Daniel2005/articles/107255.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Thu, 29 Mar 2007 08:42:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/107255.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/107255.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/107255.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/107255.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/107255.html</trackback:ping><description><![CDATA[
		<p>// <br />var DIV_BG_COLOR = "#FFFFFF";<br />// <br />var DIV_HIGHLIGHT_COLOR = "#a5e0f5";<br />// <br />var DIV_FONT = "Arial";<br />// <br />var DIV_PADDING = "1px";<br />// <br />var DIV_BORDER = "0px solid #a5e0f5";</p>
		<p>var queryFieldWidth; //add by daniel save control width; 28/03/2007<br />// <br />var queryField;<br />// <br />var divName;<br />// <br />var ifName;<br />// <br />var lastVal = "";<br />// <br />var val = "";<br />// <br />var globalDiv;<br />// <br />var divFormatted = false;<br />/*add by daniel for save iframe width, height*/<br />//var iFrameDivWidth=0;<br />var iFrameDivHeight=0;<br />var iFrameDivTop=0;<br />var iFrameDivLeft=0;<br />var iFrameDivZindex=0;<br />/**<br />InitQueryCode&lt;body onload&gt;:<br />queryFieldNameid,<br />hiddenDivNamedivid<br />*/<br />function InitQueryCode (queryFieldName, hiddenDivName,queryTextName)<br />{<br /> // <br /> if (queryTextName!="" &amp;&amp; queryTextName!=undefined){<br />  queryField = document.getElementById(queryTextName);<br /> }else{<br />  queryField = document.getElementById(queryFieldName);<br /> } <br /> queryFieldWidth=document.getElementById(queryField.id).offsetWidth;<br /> //queryField = document.getElementById(queryTextName);<br /> //queryField.onblur = hideDiv;<br /> queryField.onmouseover =  hideDiv;<br /> queryField.onkeydown = keypressHandler;</p>
		<p> // 设置queryField的autocomplete属性为"off"<br /> queryField.autocomplete = "off";</p>
		<p> //<br /> if (hiddenDivName)<br /> {<br />  divName = hiddenDivName;<br /> }<br /> else<br /> {<br />  divName = "querydiv";<br /> }<br /> <br /> // IFramename<br /> ifName = "queryiframe";<br /> <br /> // <br /> setTimeout("mainLoop()", 100);<br />}</p>
		<p>/**</p>
		<p>*/<br />function getDiv (divID)<br />{<br /> //if (!globalDiv)<br /> //{<br />  // <br />  <br />  if (!document.getElementById(divID))<br />  {<br />   var newNode = document.createElement("div");<br />   newNode.setAttribute("id", divID);<br />   document.body.appendChild(newNode);<br />  }</p>
		<p>  //   <br />  globalDiv = document.getElementById(divID);</p>
		<p>  //   <br />  var x = queryField.offsetLeft;<br />  var y = queryField.offsetTop + queryField.offsetHeight;<br />  var parent = queryField;<br />  while (parent.offsetParent)<br />  {<br />   parent = parent.offsetParent;<br />   x += parent.offsetLeft;<br />   y += parent.offsetTop;<br />  }</p>
		<p>  //   <br />  //if (!divFormatted)<br />  //{<br />   globalDiv.style.backgroundColor = DIV_BG_COLOR;<br />   globalDiv.style.fontFamily = DIV_FONT;<br />   globalDiv.style.padding = DIV_PADDING;<br />   globalDiv.style.border = DIV_BORDER;<br />   //globalDiv.style.width = "100px";<br />   globalDiv.style.width = queryFieldWidth;<br />   globalDiv.style.height="300px";<br />   <br />   globalDiv.style.fontSize = "90%";<br />   //globalDiv.style.overflow = "scroll";<br />   globalDiv.style.overflowY = "scroll";<br />   //globalDiv.style.overflowX = "hidden";<br />   globalDiv.style.border="black 1px solid";<br />   //globalDiv.style.BORDER-TOP="black 1px solid";<br />   globalDiv.style.overflow = "auto";<br />   //globalDiv.style.BORDER-LEFT="black 1px solid";<br />   //globalDiv.style.BORDER-BOTTOM="black 1px solid";</p>
		<p>   globalDiv.style.position = "absolute";<br />   globalDiv.style.left = x + "px";<br />   globalDiv.style.top = y + "px";<br />   globalDiv.style.visibility = "hidden";<br />   globalDiv.style.zIndex = 10000;</p>
		<p>   //add by daniel for iFrame 12/25<br />   //iFrameDivWidth = globalDiv.offsetWidth;<br />   iFrameDivHeight = globalDiv.offsetHeight;<br />   iFrameDivTop = globalDiv.style.top;<br />   iFrameDivLeft = globalDiv.style.left;<br />   iFrameDivZindex = globalDiv.style.zIndex - 1;<br />   <br />   divFormatted = true;<br />  //}<br /> //}</p>
		<p> return globalDiv;<br />}</p>
		<p>/**</p>
		<p>*/<br />function showQueryDiv(resultArray)<br />{<br /> // <br /> var div = getDiv(divName);<br /> <br /> // <br /> while (div.childNodes.length &gt; 0)<br />  div.removeChild(div.childNodes[0]);<br />  <br /> document.all['hidselectcounty'].value="";<br /> document.all['hidselectname'].value="";<br /> document.all['hidselectlandmark_name'].value="";<br /> document.all['hidselectst_name'].value="";<br /> document.all['hidselectst_no'].value="";<br /> document.all['hidselectx_st'].value="";<br /> document.all['hidselectzip_code'].value="";</p>
		<p> // <br /> for (var i = 0; i &lt; resultArray.length; i++)<br /> {<br />  // <br />  var result = document.createElement("div");<br />  // <br />  result.style.cursor = "pointer";<br />  result.style.padding = "2px 0px 2px 0px";<br />  // <br />  _unhighlightResult(result);<br />  // <br />  result.onmousedown = selectResult;<br />  result.onmouseover = highlightResult;<br />  result.onmouseout = unhighlightResult;  //modify by william 2007/03/29</p>
		<p>  // <br />  /*var result1 = document.createElement("span");<br />  //<br />  result1.className = "result1";<br />  result1.style.textAlign = "left";<br />  result1.style.fontWeight = "bold";<br />  result1.innerHTML = resultArray[i];*/<br />  var result1 = document.createElement("span");</p>
		<p>  result1.className = "result1";<br />  result1.style.textAlign = "left";<br />  <br />  var strresultArray=resultArray[i].split('/');<br />  //declare some value to some text<br />  var strresultcounty=strresultArray[0];<br />  var strresultvalue=strresultArray[1];  <br />  var strresultlandmark=strresultArray[2];<br />  var strresultst_name=strresultArray[3];<br />  var strresultst_no=strresultArray[4];<br />  var strresultx_st=strresultArray[5];<br />  var strresultzip_code=strresultArray[6];<br />  //set all values<br />  document.all['hidselectcounty'].value=document.all['hidselectcounty'].value+'/'+strresultcounty;<br />  document.all['hidselectname'].value=document.all['hidselectname'].value+'/'+strresultvalue;<br />  document.all['hidselectlandmark_name'].value=document.all['hidselectlandmark_name'].value+'/'+strresultlandmark;<br />  document.all['hidselectst_name'].value=document.all['hidselectst_name'].value+'/'+strresultst_name;<br />  document.all['hidselectst_no'].value=document.all['hidselectst_no'].value+'/'+strresultst_no;<br />  document.all['hidselectx_st'].value=document.all['hidselectx_st'].value+'/'+strresultx_st;<br />  document.all['hidselectzip_code'].value=document.all['hidselectzip_code'].value+'/'+strresultzip_code;  <br />//  result1.innerHTML = resultArray[i];<br />  result1.innerHTML = strresultvalue;<br />  // <br />  result.appendChild(result1);<br />  <br />  // <br />  div.appendChild(result);<br /> }</p>
		<p> // <br /> showDiv(resultArray.length &gt; 0);<br />}</p>
		<p>/**</p>
		<p>*/<br />function selectResult()<br />{<br /> _selectResult(this);<br />}</p>
		<p>// <br />function _selectResult(item)<br />{<br /> //InitQueryCode('txtpu_street','','txtdest_street');<br /> var spans = item.getElementsByTagName("span");<br /> if (spans)<br /> {<br />  for (var i = 0; i &lt; spans.length; i++)<br />  {<br />   if (spans[i].className == "result1")<br />   {<br />    queryField.value = spans[i].innerHTML;<br />    lastVal = val = escape(queryField.value);<br />    mainLoop();<br />    queryField.focus();<br />    showDiv(false);<br />    //document.getElementById("hidonkeyormouse").value="Y";<br />    if (queryField.id.indexOf("pu") &gt; 0){<br />     select_result_all_value('p',queryField.value,queryField.id);<br />    }else if (queryField.id.indexOf("dest") &gt; 0){<br />     select_result_all_value('d',queryField.value,queryField.id);<br />    }<br />    return;<br />   }<br />  }<br /> }<br />}</p>
		<p>/**<br />*/<br />function highlightResult()<br />{<br /> _highlightResult(this);<br />}</p>
		<p>function _highlightResult(item)<br />{<br /> item.style.backgroundColor = DIV_HIGHLIGHT_COLOR;<br />}</p>
		<p>/**<br />*/<br />function unhighlightResult()<br />{<br /> _unhighlightResult(this);<br />}</p>
		<p>function _unhighlightResult(item)<br />{<br /> item.style.backgroundColor = DIV_BG_COLOR;<br />}</p>
		<p>/**<br />*/<br />function showDiv (show)<br />{<br /> var div = getDiv(divName);<br /> if (show)<br /> {<br />  div.style.visibility = "visible";<br /> }<br /> else<br /> {<br />  div.style.visibility = "hidden";<br /> }<br /> var Version=document.getElementById("hidVersion").value;<br /> <br /> if (Version=="6.0"){ <br />  adjustiFrame(show);<br /> }<br />}</p>
		<p>/**<br />*/<br />function hideDiv ()<br />{<br /> showDiv(false);<br />}</p>
		<p>/**<br />*/<br />function adjustiFrame(show)<br />{<br /> <br /> if (!document.getElementById(ifName))<br /> {<br />  var newNode = document.createElement("iFrame");<br />  newNode.setAttribute("id", ifName);<br />  newNode.setAttribute("src", "javascript:false;");<br />  newNode.setAttribute("scrolling", "no");<br />  newNode.setAttribute("frameborder", "0");  <br />  document.body.appendChild(newNode);<br /> }</p>
		<p> iFrameDiv = document.getElementById(ifName);<br /> //var div = getDiv(divName);</p>
		<p> try<br /> {  <br />  var Version=document.getElementById("hidVersion").value;<br />  if (Version=="7.0"){<br />   iFrameDiv.style.position = "absolute";<br />   iFrameDiv.style.width = queryFieldWidth;   <br />   iFrameDiv.style.height="300px"; //add by daniel 27/03/2007  <br />   iFrameDiv.style.overflow = "scroll"; //add by daniel 27/03/2007 <br />  <br />   iFrameDiv.outerText = "No results";<br />  <br />   iFrameDiv.style.top = iFrameDivTop;<br />   iFrameDiv.style.left = iFrameDivLeft;<br />   iFrameDiv.style.zIndex = iFrameDivZindex;<br />   //if (show==true){<br />   iFrameDiv.style.visibility = "visible";<br />   //}else{<br />   // iFrameDiv.style.visibility = "hidden";<br />   //}<br />  }else if(Version=="6.0"){<br />   //alert(Version);<br />   iFrameDiv.style.position = "absolute";<br />   /*iFrameDiv.style.width = div.offsetWidth;<br />   iFrameDiv.style.height = div.offsetHeight;<br />   iFrameDiv.style.top = div.style.top;<br />   iFrameDiv.style.left = div.style.left;<br />   iFrameDiv.style.zIndex = div.style.zIndex - 1;<br />   //iFrameDiv.style.visibility = div.style.visibility;*/<br />   iFrameDiv.style.width = queryFieldWidth;   // modify some code by william 2007/03/29<br />   //iFrameDiv.style.height = iFrameDivHeight;  <br />   iFrameDiv.style.height="300px"; //add by daniel 27/03/2007  <br />   iFrameDiv.style.overflow = "scroll"; //add by daniel 27/03/2007<br />  <br />   iFrameDiv.style.top = iFrameDivTop;<br />   iFrameDiv.style.left = iFrameDivLeft;<br />   iFrameDiv.style.zIndex = iFrameDivZindex;<br />   if (show==true){<br />    iFrameDiv.style.visibility = "visible";<br />   }else{<br />    iFrameDiv.style.visibility = "hidden";<br />   }<br />  }<br />  <br /> }<br /> catch (e)<br /> {   <br />  iFrameDiv.style.visibility = "visible";<br /> }<br />}</p>
		<p>/**<br />*/<br />function keypressHandler (evt)<br />{<br /> //   <br /> var div = getDiv(divName);<br /> <br /> //   <br /> if (div.style.visibility == "hidden")<br /> {<br />  return true;<br /> }</p>
		<p> //  <br /> if (!evt &amp;&amp; window.event)<br /> {<br />  evt = window.event;<br /> }<br /> var key = evt.keyCode;</p>
		<p> var KEYUP = 38;<br /> var KEYDOWN = 40;<br /> var KEYENTER = 13;<br /> var KEYTAB = 9;<br /> var KEYBACK = 8;<br /> //   <br /> if ((key != KEYUP) &amp;&amp; (key != KEYDOWN) &amp;&amp; (key != KEYENTER) &amp;&amp; (key != KEYTAB) &amp;&amp; (key != KEYBACK))<br /> {<br />  return true;<br /> }</p>
		<p> var selNum = getSelectedSpanNum(div);<br /> var selSpan = setSelectedSpan(div, selNum);<br /> <br /> //  <br /> if ((key == KEYENTER) || (key == KEYTAB))<br /> {<br />  if (selSpan)<br />  {<br />   _selectResult(selSpan);<br />  }<br />  evt.cancelBubble = true;<br />  return false;<br /> }<br /> else //<br /> {<br />  if (key == KEYUP)<br />  {<br />   selSpan = setSelectedSpan(div, selNum - 1);<br />  }<br />  if (key == KEYDOWN)<br />  {<br />   selSpan = setSelectedSpan(div, selNum + 1);<br />  }<br />  if (selSpan)<br />  {<br />   _highlightResult(selSpan);<br />  }<br /> }</p>
		<p> // <br /> showDiv(true);<br /> return true;<br />}</p>
		<p>/**<br />*/<br />function getSelectedSpanNum(div)<br />{<br /> var count = -1;<br /> var spans = div.getElementsByTagName("div");<br /> if (spans)<br /> {<br />  for (var i = 0; i &lt; spans.length; i++)<br />  {<br />   count++;<br />   if (spans[i].style.backgroundColor != div.style.backgroundColor)<br />   {<br />    return count;<br />   }<br />  }<br /> }</p>
		<p> return -1;<br />}</p>
		<p>/**<br />*/<br />function setSelectedSpan(div, spanNum)<br />{<br /> var count = -1;<br /> var thisSpan;<br /> var spans = div.getElementsByTagName("div");<br /> if (spans)<br /> {<br />  for (var i = 0; i &lt; spans.length; i++)<br />  {<br />   if (++count == spanNum)<br />   {<br />    _highlightResult(spans[i]);<br />    thisSpan = spans[i];<br />   }<br />   else<br />   {<br />    _unhighlightResult(spans[i]);<br />   }<br />  }<br /> }</p>
		<p> return thisSpan;<br />}<br /><br /><br />目前在IE7测试下通过，如果是IE6可能会出现false下拉。。</p>
<img src ="http://www.blogjava.net/Daniel2005/aggbug/107255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2007-03-29 16:42 <a href="http://www.blogjava.net/Daniel2005/articles/107255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAx+ javascript.</title><link>http://www.blogjava.net/Daniel2005/articles/105279.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Wed, 21 Mar 2007 07:34:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/105279.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/105279.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/105279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/105279.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/105279.html</trackback:ping><description><![CDATA[
		<p>// <br />var DIV_BG_COLOR = "#FFFFFF";<br />// <br />var DIV_HIGHLIGHT_COLOR = "#a5e0f5";<br />// <br />var DIV_FONT = "Arial";<br />// <br />var DIV_PADDING = "1px";<br />// <br />var DIV_BORDER = "0px solid #a5e0f5";</p>
		<p>
				<br />// <br />var queryField;<br />//add by daniel <br />/*var queryText;<br />var queryPuLandmark;<br />var queryDestLandmark;*/<br />// <br />var divName;<br />// <br />var ifName;<br />// <br />var lastVal = "";<br />// <br />var val = "";<br />// <br />var globalDiv;<br />// <br />var divFormatted = false;</p>
		<p>/*add by daniel for save iframe width, height*/<br />var iFrameDivWidth=0;<br />var iFrameDivHeight=0;<br />var iFrameDivTop=0;<br />var iFrameDivLeft=0;<br />var iFrameDivZindex=0;<br />var ShowDivBoolean=false; //control div show or not<br />/**<br />*/<br />//function InitQueryCode (queryFieldName, hiddenDivName,queryTextName,queryPuLandmarkName,queryDestLandmarkName)<br />function InitQueryCode (queryFieldName, hiddenDivName,queryTextName)<br />{<br /> // <br /> /*if (document.all['hidpu_landmarkonkey'].value=="N" &amp;&amp; document.all['hiddest_landmarkonkey'].value=="N"){<br />  if (document.all['hidpu_streetonkey'].value=="Y"){<br />   queryField = document.getElementById(queryFieldName);<br />  }else if (document.all['hiddest_streetonkey'].value=="Y"){<br />   queryField = document.getElementById(queryTextName);<br />  }else{<br />   queryField = document.getElementById(queryFieldName);<br />  }<br /> }else if(document.all['hidpu_landmarkonkey'].value=="Y" &amp;&amp; document.all['hiddest_landmarkonkey'].value=="N"){<br />  queryField = document.getElementById(queryPuLandmarkName);<br /> }else if(document.all['hidpu_landmarkonkey'].value=="N" &amp;&amp; document.all['hiddest_landmarkonkey'].value=="Y"){<br />  queryField = document.getElementById(queryDestLandmarkName);<br /> }*/<br /> if (queryTextName!="" &amp;&amp; queryTextName!=undefined){<br />  queryField = document.getElementById(queryTextName);<br /> }else{<br />  queryField = document.getElementById(queryFieldName);<br /> } <br /> //queryField = document.getElementById(queryTextName);<br /> queryField.onblur = hideDiv;<br /> queryField.onkeydown = keypressHandler;<br /> // <br /> queryField.autocomplete = "off";</p>
		<p> //<br /> if (hiddenDivName)<br /> {<br />  divName = hiddenDivName;<br /> }<br /> else<br /> {<br />  divName = "querydiv";<br /> }<br /> <br /> // IFramename<br /> ifName = "queryiframe";<br /> <br /> // <br /> setTimeout("mainLoop()", 100);<br />}</p>
		<p>
				<br />function getDiv (divID)<br />{</p>
		<p>// if (!globalDiv)<br />// {</p>
		<p>  <br />  if (!document.getElementById(divID))<br />  {<br />   var newNode = document.createElement("div");<br />   newNode.setAttribute("id", divID);<br />   document.body.appendChild(newNode);<br />  }<br /> <br />  globalDiv = document.getElementById(divID);<br />  //InitQueryCode('txtpu_street','','txtdest_street',);<br />  <br />  var x = queryField.offsetLeft;<br />  var y = queryField.offsetTop + queryField.offsetHeight;<br />  var parent = queryField;<br />  while (parent.offsetParent)<br />  {<br />   parent = parent.offsetParent;<br />   x += parent.offsetLeft;<br />   y += parent.offsetTop;<br />  }<br />  //divFormatted=false;<br />  //if (!divFormatted)<br />  //{<br />  try{<br />   if (div.style.visibility == "visible"){<br />   /*var resultText=globalDiv.outerText.split('/');<br />   var resultValue=resultText[1];<br />   <br />   globalDiv.outerText=resultValue;*/<br />     <br />   globalDiv.style.backgroundColor = DIV_BG_COLOR;<br />   globalDiv.style.fontFamily = DIV_FONT;<br />   globalDiv.style.padding = DIV_PADDING;<br />   //globalDiv.style.border = DIV_BORDER;<br />   globalDiv.style.width = "100px";<br />   globalDiv.style.height="150px";<br />   globalDiv.style.fontSize = "90%";<br />   globalDiv.style.overflow = "auto";</p>
		<p>   globalDiv.style.position = "absolute";<br />   globalDiv.style.left = x + "px";<br />   globalDiv.style.top = y + "px";<br />   globalDiv.style.visibility = "hidden";<br />   globalDiv.style.zIndex = 10000;<br />   //add by daniel for iFrame 12/25<br />   iFrameDivWidth = globalDiv.offsetWidth;<br />   iFrameDivHeight = globalDiv.offsetHeight;<br />   iFrameDivTop = globalDiv.style.top;<br />   iFrameDivLeft = globalDiv.style.left;<br />   iFrameDivZindex = globalDiv.style.zIndex - 1;<br />  <br />   divFormatted = true;<br />   div.style.visibility == "visible"<br />   }   <br />  }<br />  catch(e){<br />   /*var resultText=globalDiv.outerText.split('/');<br />   var resultValue=resultText[1];<br />   <br />   globalDiv.outerText=resultValue;*/<br />   globalDiv.style.backgroundColor = DIV_BG_COLOR;<br />   globalDiv.style.fontFamily = DIV_FONT;<br />   globalDiv.style.padding = DIV_PADDING;<br />   //globalDiv.style.border = DIV_BORDER;<br />   globalDiv.style.width = "100px";<br />   <strong><font style="BACKGROUND-COLOR: #ff0000">globalDiv.style.height="150px";<br /></font></strong>   globalDiv.style.fontSize = "90%";<br />   <font style="BACKGROUND-COLOR: #ff0000"><strong>globalDiv.style.overflow = "auto";               //会出现下拉选择.</strong></font></p>
		<p>   globalDiv.style.position = "absolute";<br />   globalDiv.style.left = x + "px";<br />   globalDiv.style.top = y + "px";<br />   globalDiv.style.visibility = "hidden";<br />   globalDiv.style.zIndex = 10000;<br />   //add by daniel for iFrame 12/25<br />   iFrameDivWidth = globalDiv.offsetWidth;<br />   iFrameDivHeight = globalDiv.offsetHeight;<br />   iFrameDivTop = globalDiv.style.top;<br />   iFrameDivLeft = globalDiv.style.left;<br />   iFrameDivZindex = globalDiv.style.zIndex - 1;<br />   <br />   divFormatted = true;  <br />  }<br />  //}<br />// }</p>
		<p> return globalDiv;<br />}</p>
		<p>
				<br />function showQueryDiv(resultArray)<br />{</p>
		<p> var div = getDiv(divName);<br /> <br /> while (div.childNodes.length &gt; 0) <br /> div.removeChild(div.childNodes[0]);<br /> document.all['hidselectcounty'].value="";<br /> document.all['hidselectname'].value="";<br /> document.all['hidselectlandmark_name'].value="";<br /> document.all['hidselectst_name'].value="";<br /> document.all['hidselectst_no'].value="";<br /> document.all['hidselectx_st'].value="";<br /> document.all['hidselectzip_code'].value="";</p>
		<p>    //InitQueryCode('txtpu_street','','txtdest_street','txtpu_landmark','txtdest_landmark'); <br />    try{<br /> for (var i = 0; i &lt; resultArray.length; i++)<br /> {</p>
		<p>  var result = document.createElement("div");</p>
		<p>  result.style.cursor = "pointer";<br />  result.style.padding = "2px 0px 2px 0px";</p>
		<p>  _unhighlightResult(result);<br /> <br />  result.onmousedown = selectResult;<br />  result.onmouseover = highlightResult;<br />  result.onmouseout = unhighlightResult;</p>
		<p>  var result1 = document.createElement("span");</p>
		<p>  result1.className = "result1";<br />  result1.style.textAlign = "left";<br />  //result1.style.fontWeight = "bold";<br />  var strresultArray=resultArray[i].split('/');<br />  //declare some value to some text<br />  var strresultcounty=strresultArray[0];<br />  var strresultvalue=strresultArray[1];  <br />  var strresultlandmark=strresultArray[2];<br />  var strresultst_name=strresultArray[3];<br />  var strresultst_no=strresultArray[4];<br />  var strresultx_st=strresultArray[5];<br />  var strresultzip_code=strresultArray[6];<br />  //set all values<br />  document.all['hidselectcounty'].value=document.all['hidselectcounty'].value+'/'+strresultcounty;<br />  document.all['hidselectname'].value=document.all['hidselectname'].value+'/'+strresultvalue;<br />  document.all['hidselectlandmark_name'].value=document.all['hidselectlandmark_name'].value+'/'+strresultlandmark;<br />  document.all['hidselectst_name'].value=document.all['hidselectst_name'].value+'/'+strresultst_name;<br />  document.all['hidselectst_no'].value=document.all['hidselectst_no'].value+'/'+strresultst_no;<br />  document.all['hidselectx_st'].value=document.all['hidselectx_st'].value+'/'+strresultx_st;<br />  document.all['hidselectzip_code'].value=document.all['hidselectzip_code'].value+'/'+strresultzip_code;  <br />//  result1.innerHTML = resultArray[i];<br />  result1.innerHTML = strresultvalue;<br />  <br />  result.appendChild(result1);  <br />  <br />  div.appendChild(result);<br /> }</p>
		<p> showDiv(resultArray.length &gt; 0);<br /> }<br /> catch(ex){}<br />}</p>
		<p>function selectResult()<br />{<br /> _selectResult(this);<br />}</p>
		<p>function _selectResult(item)<br />{</p>
		<p> //InitQueryCode('txtpu_street','','txtdest_street');<br /> var spans = item.getElementsByTagName("span");<br /> if (spans)<br /> {<br />  for (var i = 0; i &lt; spans.length; i++)<br />  {<br />   if (spans[i].className == "result1")<br />   {<br />    queryField.value = spans[i].innerHTML;<br />    lastVal = val = escape(queryField.value);<br />    mainLoop();<br />    queryField.focus();<br />    showDiv(false);<br />    //document.getElementById("hidonkeyormouse").value="Y";<br />    if (queryField.id.indexOf("pu") &gt; 0){<br />     select_result_all_value('p',queryField.value,queryField.id);<br />    }else if (queryField.id.indexOf("dest") &gt; 0){<br />     select_result_all_value('d',queryField.value,queryField.id);<br />    }<br />    return;<br />   }<br />  }<br /> }<br />}</p>
		<p>function highlightResult()<br />{<br /> _highlightResult(this);<br />}</p>
		<p>function _highlightResult(item)<br />{<br /> item.style.backgroundColor = DIV_HIGHLIGHT_COLOR;<br />}</p>
		<p>function unhighlightResult()<br />{<br /> _unhighlightResult(this);<br />}</p>
		<p>function _unhighlightResult(item)<br />{<br /> item.style.backgroundColor = DIV_BG_COLOR;<br />}</p>
		<p>
				<br />function showDiv (show)<br />{<br /> var div = getDiv(divName);<br /> if (show)<br /> {<br />  div.style.visibility = "visible";<br />  ShowDivBoolean=true;<br /> }<br /> else<br /> {<br />  div.style.visibility = "hidden";<br />  ShowDivBoolean=false;<br /> }<br /> //adjustiFrame();<br />}</p>
		<p>
				<br />function hideDiv ()<br />{<br /> showDiv(false);<br />}</p>
		<p>
				<br />function adjustiFrame()<br />{<br /> <br /> if (!document.getElementById(ifName))<br /> {<br />  var newNode = document.createElement("iFrame");<br />  newNode.setAttribute("id", ifName);<br />  newNode.setAttribute("src", "javascript:false;");<br />  newNode.setAttribute("scrolling", "no");<br />  newNode.setAttribute("frameborder", "0");<br />  document.body.appendChild(newNode);<br /> }</p>
		<p> iFrameDiv = document.getElementById(ifName);<br /> //var div = getDiv(divName);</p>
		<p> try<br /> {  <br />  iFrameDiv.style.position = "absolute";<br />  /*iFrameDiv.style.width = div.offsetWidth;<br />  iFrameDiv.style.height = div.offsetHeight;<br />  iFrameDiv.style.top = div.style.top;<br />  iFrameDiv.style.left = div.style.left;<br />  iFrameDiv.style.zIndex = div.style.zIndex - 1;<br />  //iFrameDiv.style.visibility = div.style.visibility;*/<br />  iFrameDiv.style.width = iFrameDivWidth;<br />  iFrameDiv.style.height = iFrameDivHeight;<br />  iFrameDiv.style.top = iFrameDivTop;<br />  iFrameDiv.style.left = iFrameDivLeft;<br />  iFrameDiv.style.zIndex = iFrameDivZindex;<br />  if (ShowDivBoolean==true){<br />   iFrameDiv.style.visibility = "visible";<br />  }else{<br />   iFrameDiv.style.visibility = "hidden";<br />  }<br />  <br /> }<br /> catch (e)<br /> {<br /> }<br />}</p>
		<p>function keypressHandler (evt)<br />{<br /> //InitQueryCode('txtpu_street','',controlname);<br /> <br /> var div = getDiv(divName);<br />  <br /> /*if (div.style.visibility == "hidden")<br /> {<br />  return true;  <br /> }*/</p>
		<p> if (!evt &amp;&amp; window.event)<br /> {<br />  evt = window.event;<br /> }<br /> var key = evt.keyCode;</p>
		<p> var KEYUP = 38;<br /> var KEYDOWN = 40;<br /> var KEYENTER = 13;<br /> var KEYTAB = 9;<br />  <br /> if ((key != KEYUP) &amp;&amp; (key != KEYDOWN) &amp;&amp; (key != KEYENTER) &amp;&amp; (key != KEYTAB))<br /> {<br />  return true;<br /> }</p>
		<p> var selNum = getSelectedSpanNum(div);<br /> var selSpan = setSelectedSpan(div, selNum);<br /> <br /> if ((key == KEYENTER) || (key == KEYTAB))<br /> {<br />  if (selSpan)<br />  {<br />   _selectResult(selSpan);<br />  }<br />  evt.cancelBubble = true;<br />  return false;<br /> }<br /> else //<br /> {<br />  if (key == KEYUP)<br />  {<br />   selSpan = setSelectedSpan(div, selNum - 1);<br />  }<br />  if (key == KEYDOWN)<br />  {<br />   selSpan = setSelectedSpan(div, selNum + 1);<br />  }<br />  if (selSpan)<br />  {<br />   _highlightResult(selSpan);<br />  }<br /> }</p>
		<p> // <br /> showDiv(true);<br /> return true;<br />}</p>
		<p>/**</p>
		<p>*/<br />function getSelectedSpanNum(div)<br />{<br /> //InitQueryCode('txtpu_street','','txtdest_street','txtpu_landmark','txtdest_landmark'); <br /> var count = -1;<br /> var spans = div.getElementsByTagName("div");<br /> if (spans)<br /> {<br />  for (var i = 0; i &lt; spans.length; i++)<br />  {<br />   count++;<br />   if (spans[i].style.backgroundColor != div.style.backgroundColor)<br />   {<br />    return count;<br />   }<br />  }<br /> }</p>
		<p> return -1;<br />}</p>
		<p>/**<br />*/<br />function setSelectedSpan(div, spanNum)<br />{<br /> //InitQueryCode('txtpu_street','','txtdest_street','txtpu_landmark','txtdest_landmark'); <br /> var count = -1;<br /> var thisSpan;<br /> var spans = div.getElementsByTagName("div");<br /> if (spans)<br /> {<br />  for (var i = 0; i &lt; spans.length; i++)<br />  {<br />   if (++count == spanNum)<br />   {<br />    _highlightResult(spans[i]);<br />    thisSpan = spans[i];<br />   }<br />   else<br />   {<br />    _unhighlightResult(spans[i]);<br />   }<br />  }<br /> }</p>
		<p> return thisSpan;<br />}</p>
		<p> </p>
<img src ="http://www.blogjava.net/Daniel2005/aggbug/105279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2007-03-21 15:34 <a href="http://www.blogjava.net/Daniel2005/articles/105279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中的正则表达式解析</title><link>http://www.blogjava.net/Daniel2005/articles/91723.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Thu, 04 Jan 2007 04:34:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/91723.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/91723.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/91723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/91723.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/91723.html</trackback:ping><description><![CDATA[
		<p>　　<a>正则表达式是一个描述字符模式的对象。</a></p>
		<p>　　JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法.<br /><br />　　在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp对象,也可以用JavaScript 1.2中的新添加的一个特殊语法来创建RegExp对象.就像字符串直接量被定义为包含在引号内的字符一样,正则表达式直接量也被定义为包含在一对斜杠(/)之间的字符.所以,JavaScript可能会包含如下的代码:<br /><br />var pattern = /s$/;<br /><br />　　这行代码创建一个新的RegExp对象,并将它赋给变量parttern.这个特殊的RegExp对象和所有以字母"s"结尾的字符串都匹配.用RegExp()也可以定义一个等价的正则表达式,代码如下:<br /><br />var pattern = new RegExp("s$");<br /><br />　　无论是用正则表达式直接量还是用构造函数RegExp(),创建一个RegExp对象都是比较容易的.较为困难的任务是用正则表达式语法来描述字符的模式.JavaScript采用的是Perl语言正则表达式语法的一个相当完整的子集.<br /><br />　　正则表达式的模式规范是由一系列字符构成的.大多数字符(包括所有字母数字字符)描述的都是按照字面意思进行匹配的字符.这样说来,正则表达式/java/就和所有包含子串 "java" 的字符串相匹配.虽然正则表达式中的其它字符不是按照字面意思进行匹配的,但它们都具有特殊的意义.正则表达式 /s$/ 包含两个字符.</p>
		<p>　　第一个特殊字符 "s" 是按照字面意思与自身相匹配.第二个字符 "$" 是一个特殊字符,它所匹配的是字符串的结尾.所以正则表达式 /s$/ 匹配的就是以字母 "s" 结尾<br />的字符串.<br /><br />　　<strong>1.直接量字符<br /></strong><br />　　我们已经发现了,在正则表达式中所有的字母字符和数字都是按照字面意思与自身相匹配的.JavaScript的正则表达式还通过以反斜杠(\)开头的转义序列支持某些非<br /><br />　　字母字符.例如,序列 "\n" 在字符串中匹配的是一个直接量换行符.在正则表达式中,许多标点符号都有特殊的含义.下面是这些字符和它们的含义:<br /><br />　　正则表达式的直接量字符<br /><br />字符 匹配<br />________________________________<br />字母数字字符 自身<br />\ f 换页符<br />\ n 换行符<br />\ r 回车<br />\ t 制表符<br />\ v 垂直制表符<br />\ / 一个 / 直接量<br />\ \ 一个 \ 直接量<br />\ . 一个 . 直接量<br />\ * 一个 * 直接量<br />\ + 一个 + 直接量<br />\ ? 一个 ? 直接量<br />\ | 一个 | 直接量<br />\ ( 一个 ( 直接量<br />\ ) 一个 ) 直接量<br />\ [ 一个 [ 直接量<br />\ ] 一个 ] 直接量<br />\ { 一个 { 直接量<br />\ } 一个 } 直接量<br />\ XXX 由十进制数 XXX 指 定的ASCII码字符<br />\ Xnn 由十六进制数 nn 指定的ASCII码字符<br />\ cX 控制字符^X. 例如, \cI等价于 \t, \cJ等价于 \n<br /><br />___________________________________________________<br /><br />如果想在正则表达式中使用特殊的标点符号,必须在它们之前加上一个 "\" .<br /><br />　　<strong>2.字符类</strong><br /><br />　　将单独的直接符放进中括号内就可以组合成字符类.一个字符类和它所包含的任何一个字符都匹配,所以正则表达式 / [abc] / 和字母 "a" , "b" , "c" 中的任何一个都匹配.另外还可以定义否定字符类,这些类匹配的是除那些包含在中括号之内的字符外的所有字符.定义否定字符尖时,要将一个 ^ 符号作为从左中括号算起的第一个字符.正则表达式的集合是 / [a-zA-z0-9] / .<br /><br />　　由于某些字符类非常常用,所以JavaScript的正则表达式语法包含一些特殊字符和转义序列来表示这些常用的类.例如, \s 匹配的是空格符,制表符和其它空白符, \s匹配的则是空白符之外的任何字符.<br /><br />　　正则表灰式的字符类<br /><br />字符 匹配<br />____________________________________________________<br />[...] 位于括号之内的任意字符<br />[^...] 不在括号之中的任意字符<br />. 除了换行符之外的任意字符,等价于[^\n]<br />\w 任何单字字符, 等价于[a-zA-Z0-9]<br />\W 任何非单字字符,等价于[^a-zA-Z0-9]<br />\s 任何空白符,等价于[\ t \ n \ r \ f \ v]<br />\S 任何非空白符,等价于[^\ t \ n \ r \ f \ v]<br />\d 任何数字,等价于[0-9]<br />\D 除了数字之外的任何字符,等价于[^0-9]<br />[\b] 一个退格直接量(特例)<br />________________________________________________________________<br /><br />　　<strong>3.复制<br /></strong><br />　　用以上的正则表式的语法,可以把两位数描述成 / \ d \ d /,把四位数描述成 / \d \ d \ d \ d /.但我们还没有一种方法可以用来描述具有任意多数位的数字或者是一个<br /><br />　　字符串.这个串由三个字符以及跟随在字母之后的一位数字构成.这些复杂的模式使用的正则表达式语法指定了该表达式中每个元素要重复出现的次数.<br /><br />　　指定复制的字符总是出现在它们所作用的模式后面.由于某种复制类型相当常用.所以有一些特殊的字符专门用于表示它们.例如: +号匹配的就是复制前一模式一次或多次的模式.下面的表列出了复制语法.先看一个例子:<br /><br />/\d{2, 4}/ //匹配2到4间的数字.<br /><br />/\w{3} \d?/ //匹配三个单字字符和一个任意的数字.<br /><br />/\s+java\s+/ //匹配字符串"java" ,并且该串前后可以有一个或多个空格.<br /><br />/[^"] * / //匹配零个或多个非引号字符.<br /><br /><br />　　正则表达式的复制字符<br /><br />字符 含义<br />__________________________________________________________________<br />{n, m} 匹配前一项至少n次,但是不能超过m次<br />{n, } 匹配前一项n次,或者多次<br />{n} 匹配前一项恰好n次<br />? 匹配前一项0次或1次,也就是说前一项是可选的. 等价于 {0, 1}<br />+ 匹配前一项1次或多次,等价于{1,}<br />* 匹配前一项0次或多次.等价于{0,}<br />___________________________________________________________________<br /><br /><br />　　<strong>4.选择,分组和引用</strong><br /><br />　　正则表达式的语法还包括指定选择项,对子表达式分组和引用前一子表达式的特殊字符.字符| 用于分隔供选择的字符.例如: /ab|cd|ef/ 匹配的是字符串 "ab",或者是字符串 "cd",又或者 "ef". /\d{3}|[a-z]{4}/ 匹配的是要么是一个三位数,要么是四个小写字母.在正则表达式中括号具有几种作用.它的主要作用是把单独的项目分组成子表达式,以便可以像处理一个独立的单元那种用 *、+或? 来处理那些项目.例如: /java(script) ?/ 匹配的是字符串 "java",其后既可以有 "script",也可以没有. /(ab|cd) + |ef) / 匹配的既可以是字符串 "ef",也可以是字符串"ab" 或者 "cd" 的一次或多次重复.</p>
		<p>　　在正则表达式中,括号的第二个用途是在完整的模式中定义子模式。当一个正则表达式成功地和目标字符串相匹配时,可以从目标串中抽出和括号中的子模式相匹配的部分.例如,假定我们正在检索的模式是一个或多个字母后面跟随一位或多位数字,那么我们可以使用模式 / [a-z] + \ d+/.但是由于假定我们真正关心的是每个匹配尾部的数字,那么如果我们将模式的数字部分放在括号中 (/ [a-z] + (\d+)/) ,我们就可以从所检索到的任何匹配中抽取数字了,之后我们会对此进行解析的.</p>
		<p>　　代括号的子表达式的另一个用途是,允许我们在同一正则表达式的后面引用前面的子表达式.这是通过在字符串 \ 后加一位或多位数字来实现的.数字指的是代括号的子表达式在正则表达式中的位置.例如: \1 引用的是第一个代括号的子表达式. \3 引用的是第三个代括号的子表达式.注意,由于子表达式可以嵌套在其它子表达式中,所以它的位置是被计数的左括号的位置.</p>
		<p>　　例如:在下面的正则表达式被指定为 \2:<br />/([Jj]ava([Ss]cript)) \sis \s (fun\w*) /<br /><br /><br />　　对正则表达式中前一子表达式的引用所指定的并不是那个子表达式的模式,而是与那个模式相匹配的文本.这样,引用就不只是帮助你输入正则表达式的重复部分的快捷方式了,它还实施了一条规约,那就是一个字符串各个分离的部分包含的是完全相同的字符.例如:下面的正则表达式匹配的就是位于单引号或双引号之内的所有字符.但是,它要求开始和结束的引号匹配(例如两个都是双引号或者都是单引号):</p>
		<p>/[' "] [^ ' "]*[' "]/<br /><br /><br />　　如果要求开始和结束的引号匹配,我们可以使用如下的引用:</p>
		<p>/( [' "] ) [^ ' "] * \1/</p>
		<p>　　\1匹配的是第一个代括号的子表达式所匹配的模式.在这个例子中,它实施了一种规约,那就是开始的引号必须和结束的引号相匹配.注意,如果反斜杠后跟随的数字比代括号的子表达式数多,那么它就会被解析为一个十进制的转义序列,而不是一个引用.你可以坚持使用完整的三个字符来表示转义序列,这们就可以避免混淆了.例如,使用 \044,而不是\44.下面是正则表达式的选择、分组和引用字符:<br /><br />字符 含义<br />______________________________________<br />| 选择.匹配的要么是该符号左边的子表达式,要么它右边的子表达式<br />(...) 分组.将几个项目分为一个单元.这个单元可由 *、+、？和|等符号使用,而且还可以记住和这个组匹配的字符以供此后引用使用<br />\n 和第n个分组所匹配的字符相匹配.分组是括号中的子表达式(可能是嵌套的).分组号是从左到右计数的左括号数<br />______________________________________<br /><br />　　<strong>5.指定匹配的位置</strong><br /><br />　　我们已经看到了,一个正则表达式中的许多元素才能够匹配字符串的一个字符.例如: \s 匹配的只是一个空白符.还有一些正则表达式的元素匹配的是字符之间宽度为0的空间,而不是实际的字符例如: \b 匹配的是一个词语的边界,也就是处于一个/w字字符和一个\w非字字符之间的边界.像\b 这样的字符并不指定任何一个匹配了的字符串中的字符,它们指定的是匹配所发生的合法位置.有时我们称这些元素为正则表达式的锚.因为它们将模式定位在检索字符串中的一个特定位置.最常用的锚元素是 ^, 它使模式依赖于字符串的开头,而锚元素$则使模式定位在字符串的末尾.</p>
		<p>　　例如:要匹配词 "javascript" ,我们可以使用正则表达式 /^ javascript $/. 如果我们想检索 "java" 这个词自身 (不像在 "javascript" 中那样作为前缀),那么我们可以使用模式 /\s java \s /, 它要求在词语java之前和之后都有空格.但是这样作有两个问题.第一: 如果 "java" 出现在一个字符的开头或者是结尾.该模式就不会与之匹配,除非在开头和结尾处有一个空格. 第二: 当这个模式找到一个与之匹配的字符时,它返回的匹配的字符串前端和后端都有空格,这并不是我们想要的.因此,我们使用词语的边界 \b 来代替真正的空格符 \s 进行匹配. 结果表达式是 /\b java \b/.</p>
		<p>下面是正则表达式的锚字符:<br /><br /><br />字符 含义<br />____________________________________________________________________<br />^ 匹配的是字符的开头,在多行检索中,匹配的是一行的开头<br />$ 匹配的是字符的结尾,在多行检索中,匹配的是一行的结尾<br />\b 匹配的是一个词语的边界.简而言之就是位于字符\w 和 \w之间的位置(注意:[\b]匹配的是退格符)<br />\B 匹配的是非词语的边界的字符<br />_____________________________________________________________________<br /><br />　　<strong>6.属性<br /></strong><br />　　有关正则表达式的语法还有最后一个元素,那就是正则表达式的属性,它说明的是高级模式匹配的规则.和其它正则表达式语法不同,属性是在 / 符号之外说明的.即它们不出现在两个斜杠之间,而是位于第二个斜杠之后.javascript 1.2支持两个属性.属性 i 说明模式匹配应该是大小写不敏感的.属性 g 说明模式匹配应该是全局的.也就是说,应该找出被检索的字符串中所有的匹配.这两种属性联合起来就可以执行一个全局的,大小写不敏感的匹配.</p>
		<p>　　例如: 要执行一个大小不敏感的检索以找到词语 "java" (或者是 "java" 、"JAVA"等) 的第一个具体值,我们可以使用大小不敏感的正则表达式 /\b java\b/i .如果要在一个字符串中找到 "java" 所有的具体值,我们还可以添加属性 g, 即 /\b java \b/gi .<br /><br />以下是正则表达式的属性:<br /><br /><br />字符 含义<br />_________________________________________<br />i 执行大小写不敏感的匹配<br />g 执行一个全局的匹配,简而言之,就是找到所有的匹配,而不是在找到第一个之后就停止了<br />_________________________________________<br /><br />　　除属性 g 和 i 之外,正则表达式就没有其它像属性一样的特性了.如果将构造函数 RegExp 的静态属性 multiline 设置为 true ,那么模式匹配将以多行的模式进行.在这种模式下,锚字符 ^ 和 $ 匹配的不只是检索字符串的开头和结尾,还匹配检索字符串内部的一行的开头和结尾.例如: 模式 /Java$/ 匹配的是 "Java",但是并不匹配"Java\nis fun" .如果我们设置了 multiline 属性,那么后者也将被匹配:<br /><br />RegExp.multiline = true;</p>
		<p>　　正则表达式(regular expression)对象包含一个正则表达式模式(pattern)。它具有用正则表达式模式去匹配或代替一个串(string)中特定字符(或字符集合)的属性(properties)和方法(methods)。要为一个单独的正则表达式添加属性,可以使用正则表达式构造函数(constructor function)，无论何时被调用的预设置的正则表达式拥有静态的属性(the predefined RegExp object has static properties that are set whenever any regular expression is used, 我不知道我翻得对不对，将原文列出，请自行翻译)。 </p>
		<ul>
				<li>创建：<br />一个文本格式或正则表达式构造函数<br />文本格式： /pattern/flags<br />正则表达式构造函数： new RegExp("pattern"[,"flags"]); 
</li>
				<li>参数说明：<br />pattern -- 一个正则表达式文本<br />flags -- 如果存在，将是以下值：<br />g: 全局匹配<br />i: 忽略大小写<br />gi: 以上组合 </li>
		</ul>
		<p>[<font color="#ff0000">注意</font>] <em>文本格式的参数不用引号，而在用构造函数时的参数需要引号。如：/ab+c/i new RegExp("ab+c","i")是实现一样的功能。在构造函数中，一些特殊字符需要进行转意(在特殊字符前加"\")。如：re = new RegExp("\\w+")</em></p>
		<p>　　正则表达式中的特殊字符</p>
		<p>
		</p>
		<table cellspacing="0" cellpadding="1" width="90%" align="center" bgcolor="#000000">
				<tbody>
						<tr>
								<td>
										<table cellspacing="1" cellpadding="3" width="100%" bgcolor="#ffffff">
												<tbody>
														<tr align="middle" bgcolor="#ccccff">
																<td align="middle" width="50">字符</td>
																<td>含意</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>\</td>
																<td>
																		<p>做为转意，即通常在"\"后面的字符不按原来意义解释，如/b/匹配字符"b"，当b前面加了反斜杆后/\b/，转意为匹配一个单词的边界。<br />-或-<br />对正则表达式功能字符的还原，如"*"匹配它前面元字符0次或多次，/a*/将匹配a,aa,aaa，加了"\"后，/a\*/将只匹配"a*"。</p>
																</td>
														</tr>
														<tr>
																<td>^</td>
																<td>匹配一个输入或一行的开头，/^a/匹配"an A"，而不匹配"An a"</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>$</td>
																<td>匹配一个输入或一行的结尾，/a$/匹配"An a"，而不匹配"an A"</td>
														</tr>
														<tr>
																<td>*</td>
																<td>匹配前面元字符0次或多次，/ba*/将匹配b,ba,baa,baaa</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>+</td>
																<td>匹配前面元字符1次或多次，/ba*/将匹配ba,baa,baaa</td>
														</tr>
														<tr>
																<td>?</td>
																<td>匹配前面元字符0次或1次，/ba*/将匹配b,ba</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>(x)</td>
																<td>匹配x保存x在名为$1...$9的变量中</td>
														</tr>
														<tr>
																<td>x|y</td>
																<td>匹配x或y</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>{n}</td>
																<td>精确匹配n次</td>
														</tr>
														<tr>
																<td>{n,}</td>
																<td>匹配n次以上</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>{n,m}</td>
																<td>匹配n-m次</td>
														</tr>
														<tr>
																<td>[xyz]</td>
																<td>字符集(character set)，匹配这个集合中的任一一个字符(或元字符)</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>[^xyz]</td>
																<td>不匹配这个集合中的任何一个字符</td>
														</tr>
														<tr>
																<td>[\b]</td>
																<td>匹配一个退格符</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>\b</td>
																<td>匹配一个单词的边界</td>
														</tr>
														<tr>
																<td>\B</td>
																<td>匹配一个单词的非边界</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>\cX</td>
																<td>这儿，X是一个控制符，/\cM/匹配Ctrl-M</td>
														</tr>
														<tr>
																<td>\d</td>
																<td>匹配一个字数字符，/\d/ = /[0-9]/</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>\D</td>
																<td>匹配一个非字数字符，/\D/ = /[^0-9]/</td>
														</tr>
														<tr>
																<td>\n</td>
																<td>匹配一个换行符</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>\r</td>
																<td>匹配一个回车符</td>
														</tr>
														<tr>
																<td>\s</td>
																<td>匹配一个空白字符，包括\n,\r,\f,\t,\v等</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>\S</td>
																<td>匹配一个非空白字符，等于/[^\n\f\r\t\v]/</td>
														</tr>
														<tr>
																<td>\t</td>
																<td>匹配一个制表符</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>\v</td>
																<td>匹配一个重直制表符</td>
														</tr>
														<tr>
																<td>\w</td>
																<td>匹配一个可以组成单词的字符(alphanumeric，这是我的意译，含数字)，包括下划线，如[\w]匹配"$5.98"中的5，等于[a-zA-Z0-9]</td>
														</tr>
														<tr bgcolor="#dfdfdf">
																<td>\W</td>
																<td>匹配一个不可以组成单词的字符，如[\W]匹配"$5.98"中的$，等于[^a-zA-Z0-9]。</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>　　说了这么多了，我们来看一些正则表达式的实际应用的例子：</p>
		<blockquote style="MARGIN-RIGHT: 0px">
				<p>E-mail地址验证:<br /> function test_email(strEmail) {<br />  var myReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;<br />  if(myReg.test(strEmail)) return true;<br />  return false;<br /> }<br />HTML代码的屏蔽<br /> function mask_HTMLCode(strInput) {<br />   var myReg = /&lt;(\w+)&gt;/;<br />   return strInput.replace(myReg, "&amp;lt;$1&amp;gt;");<br /> }</p>
				<strong>正则表达式对象的属性及方法</strong>
				<br />　　预定义的正则表达式拥有有以下静态属性：input, multiline, lastMatch, lastParen, leftContext, rightContext和$1到$9。其中input和multiline可以预设置。其他属性的值在执行过exec或test方法后被根据不同条件赋以不同的值。许多属性同时拥有长和短(perl风格)的两个名字，并且，这两个名字指向同一个值。(JavaScript模拟perl的正则表达式)<br />正则表达式对象的属性 
<table cellspacing="0" cellpadding="1" width="90%" align="center" bgcolor="#000000"><tbody><tr><td><table cellspacing="1" cellpadding="1" width="100%" bgcolor="#ffffff"><tbody><tr valign="center" bgcolor="#ccccff"><td align="middle" width="80">属性</td><td>含义</td></tr><tr bgcolor="#dfdfdf"><td>$1...$9</td><td>如果它(们)存在，是匹配到的子串</td></tr><tr><td>$_</td><td>参见input</td></tr><tr bgcolor="#dfdfdf"><td>$*</td><td>参见multiline</td></tr><tr><td>$&amp;</td><td>参见lastMatch</td></tr><tr bgcolor="#dfdfdf"><td>$+</td><td>参见lastParen</td></tr><tr><td>$`</td><td>参见leftContext</td></tr><tr bgcolor="#dfdfdf"><td>$’　　　　　　　　　</td><td>参见rightContext</td></tr><tr><td>constructor　　　</td><td>创建一个对象的一个特殊的函数原型</td></tr><tr bgcolor="#dfdfdf"><td>global　　　　　　</td><td>是否在整个串中匹配(bool型)</td></tr><tr><td>ignoreCase　　　　</td><td>匹配时是否忽略大小写(bool型)</td></tr><tr bgcolor="#dfdfdf"><td>input　　　　　　　</td><td>被匹配的串</td></tr><tr><td>lastIndex　　　　</td><td>最后一次匹配的索引</td></tr><tr bgcolor="#dfdfdf"><td>lastParen　　　　</td><td>最后一个括号括起来的子串</td></tr><tr><td>leftContext　　　</td><td>最近一次匹配以左的子串</td></tr><tr bgcolor="#dfdfdf"><td>multiline　　　　</td><td>是否进行多行匹配(bool型)</td></tr><tr><td>prototype　　　　</td><td>允许附加属性给对象</td></tr><tr bgcolor="#dfdfdf"><td>rightContext　　　</td><td>最近一次匹配以右的子串</td></tr><tr><td>source　　　　　　</td><td>正则表达式模式</td></tr><tr bgcolor="#dfdfdf"><td>lastIndex　　　　</td><td>最后一次匹配的索引</td></tr></tbody></table></td></tr></tbody></table><b><br />正则表达式对象的方法<br /></b><table cellspacing="0" cellpadding="1" width="90%" align="center" bgcolor="#000000"><tbody><tr><td><table cellspacing="1" cellpadding="1" width="100%" bgcolor="#ffffff"><tbody><tr align="middle" bgcolor="#ccccff"><td align="middle" width="70">方法</td><td>含义</td></tr><tr bgcolor="#dfdfdf"><td>compile　　　　　</td><td>正则表达式比较</td></tr><tr><td>exec　　　　　　　</td><td>执行查找</td></tr><tr bgcolor="#dfdfdf"><td>test　　　　　　　</td><td>进行匹配</td></tr><tr><td>toSource　　　　　</td><td>返回特定对象的定义(literal representing)，其值可用来创建一个新的对象。重载Object.toSource方法得到的。</td></tr><tr bgcolor="#dfdfdf"><td>toString　　　　　</td><td>返回特定对象的串。重载Object.toString方法得到的。</td></tr><tr><td>valueOf　　　　　</td><td>返回特定对象的原始值。重载Object.valueOf方法得到</td></tr></tbody></table></td></tr></tbody></table>例子<br />&lt;script language = "JavaScript"&gt;<br />var myReg = /(\w+)\s(\w+)/;<br />var str  = "John Smith";<br />var newstr = str.replace(myReg, "$2, $1");<br />document.write(newstr);<br />&lt;/script&gt;<br />将输出"Smith, John"</blockquote>
<img src ="http://www.blogjava.net/Daniel2005/aggbug/91723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2007-01-04 12:34 <a href="http://www.blogjava.net/Daniel2005/articles/91723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX+asp.net 1.0不刷新页技术！</title><link>http://www.blogjava.net/Daniel2005/articles/89823.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Mon, 25 Dec 2006 01:46:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/89823.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/89823.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/89823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/89823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/89823.html</trackback:ping><description><![CDATA[
		<p>已经好长时间没有写日志了！前些日子在网上一直找asp.net 1.0不刷新页技术！我总结了一下。给出了一个例子！<br /><font color="#ff0000"><strong>First step: Create a new page name is AutoComplete.</strong></font><br /><br />&lt;%@ Page Language="vb" AutoEventWireup="false" Codebehind="AutoComplete.aspx.vb" Inherits="VB_AJAXTEST.VB_AJAXTEST.AutoComplete"%&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;<br />&lt;HTML&gt;<br /> &lt;HEAD&gt;<br />  &lt;title&gt;AutoComplete&lt;/title&gt;<br />  &lt;meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"&gt;<br />  &lt;meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1"&gt;<br />  &lt;meta name="vs_defaultClientScript" content="JavaScript"&gt;<br />  &lt;meta name="vs_targetSchema" content="<a href="http://schemas.microsoft.com/intellisense/ie5">http://schemas.microsoft.com/intellisense/ie5</a>"&gt;<br />  &lt;script language="javascript" src="lookup.js"&gt;&lt;/script&gt;<br />  &lt;script language="jscript"&gt;<br />  <br />  mainLoop = function()<br />  {<br />   val = escape(queryField.value);    <br />   if (lastVal != val)<br />   {    <br />    var response = VB_AJAXTEST.VB_AJAXTEST.AutoComplete.GetSearchItems(val);<br />    showQueryDiv(response.value);<br />    lastVal = val;<br />   }    <br />   setTimeout('mainLoop()', 100);<br />   return true;<br />  }<br />  &lt;/script&gt;<br /> &lt;/HEAD&gt;<br /> &lt;body onload="javascript:InitQueryCode('search')"&gt;<br />  &lt;form id="Form1" method="post" runat="server"&gt;<br />   &lt;asp:Label id="Label1" runat="server" Font-Names="黑体,Arial Black" Font-Bold="True" Font-Size="X-Large"&gt;基于AJAX的自动完成功能&lt;/asp:Label&gt;<br />   &lt;hr&gt;<br />   &lt;asp:Label id="Label2" runat="server"&gt;请输入员工姓名：&lt;/asp:Label&gt;<br />   &lt;input name="search" type="text" id="search" autocomplete="off" runat="server"&gt;<br />   &lt;asp:Button id="btnSearch" runat="server" Text="查看"&gt;&lt;/asp:Button&gt;<br />   &lt;br&gt;<br />   &lt;asp:DataList id="dlEmployee" runat="server" BorderColor="#DEDFDE" BorderStyle="None" ForeColor="Black"<br />    BackColor="White" CellPadding="4" GridLines="Vertical" BorderWidth="1px"&gt;<br />    &lt;SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#CE5D5A"&gt;&lt;/SelectedItemStyle&gt;<br />    &lt;AlternatingItemStyle BackColor="White"&gt;&lt;/AlternatingItemStyle&gt;<br />    &lt;ItemStyle BackColor="#F7F7DE"&gt;&lt;/ItemStyle&gt;<br />    &lt;ItemTemplate&gt;<br />     &lt;table cellSpacing="1" cellPadding="1" border="0"&gt;<br />      &lt;tr&gt;<br />       &lt;td&gt;员工编号：&lt;/td&gt;<br />       &lt;td&gt;&lt;%# DataBinder.Eval(Container, "DataItem.emp_id") %&gt;&lt;/td&gt;<br />      &lt;/tr&gt;<br />      &lt;tr&gt;<br />       &lt;td&gt;姓名：&lt;/td&gt;<br />       &lt;td&gt;&lt;%# DataBinder.Eval(Container, "DataItem.fname") %&gt;&amp;nbsp;&lt;%# DataBinder.Eval(Container, "DataItem.lname") %&gt;&lt;/td&gt;<br />      &lt;/tr&gt;<br />      &lt;tr&gt;<br />       &lt;td&gt;入司时间：&lt;/td&gt;<br />       &lt;td&gt;&lt;%# DataBinder.Eval(Container, "DataItem.hire_date", "{0:yyyy-MM-dd}") %&gt;&lt;/td&gt;<br />      &lt;/tr&gt;<br />      &lt;tr&gt;<br />       &lt;td&gt;职位：&lt;/td&gt;<br />       &lt;td&gt;&lt;%# DataBinder.Eval(Container, "DataItem.job_desc") %&gt;&lt;/td&gt;<br />      &lt;/tr&gt;<br />     &lt;/table&gt;<br />    &lt;/ItemTemplate&gt;<br />    &lt;FooterStyle BackColor="#CCCC99"&gt;&lt;/FooterStyle&gt;<br />    &lt;HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#6B696B"&gt;&lt;/HeaderStyle&gt;<br />   &lt;/asp:DataList&gt;<br />   &lt;asp:Label id="lblMessage" runat="server" ForeColor="Red"&gt;&lt;/asp:Label&gt;<br />  &lt;/form&gt;<br /> &lt;/body&gt;<br />&lt;/HTML&gt;<br /><br />AutoComplete.aspx.vb<br />Imports System<br />Imports System.Collections<br />Imports System.ComponentModel<br />Imports System.Data<br />Imports System.Drawing<br />Imports System.Web<br />Imports System.Web.SessionState<br />Imports System.Web.UI<br />Imports System.Web.UI.WebControls<br />Imports System.Web.UI.HtmlControls<br />Imports System.Data.SqlClient<br />Imports AjaxPro</p>
		<p>Namespace VB_AJAXTEST</p>
		<p>    Public Class AutoComplete<br />        Inherits System.Web.UI.Page</p>
		<p>        Protected tbSearch As System.Web.UI.WebControls.TextBox<br />        Protected Label2 As System.Web.UI.WebControls.Label<br />        Protected btnSearch As System.Web.UI.WebControls.Button<br />        Protected dlEmployee As System.Web.UI.WebControls.DataList<br />        Protected search As System.Web.UI.HtmlControls.HtmlInputText<br />        Protected lblMessage As System.Web.UI.WebControls.Label<br />        Protected Label1 As System.Web.UI.WebControls.Label</p>
		<p>        Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)<br />            Utility.RegisterTypeForAjax(GetType(AutoComplete))<br />        End Sub</p>
		<p>        &lt;AjaxMethod()&gt; _<br />        Public Function GetSearchItems(ByVal query As String) As ArrayList<br />            Dim items As ArrayList = New ArrayList<br />            Dim myConnectionString As String = "SERVER=192.168.0.244;DATABASE=pubs;uid=sa;pwd=;Connect Timeout=30"<br />            Dim mySelectQuery As String = String.Format("select fname from employee where fname like '{0}%'", query)<br />            Dim myConnection As SqlConnection = New SqlConnection(myConnectionString)<br />            Dim myCommand As SqlCommand = New SqlCommand(mySelectQuery, myConnection)<br />            myConnection.Open()<br />            Dim myReader As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)<br />            While myReader.Read<br />                items.Add(myReader.GetString(0))<br />            End While<br />            myReader.Close()<br />            Return items<br />        End Function</p>
		<p>        Protected Overloads Overrides Sub OnInit(ByVal e As EventArgs)<br />            InitializeComponent()<br />            MyBase.OnInit(e)<br />        End Sub</p>
		<p>        Private Sub InitializeComponent()<br />            AddHandler Me.btnSearch.Click, AddressOf Me.btnSearch_Click<br />            AddHandler Me.Load, AddressOf Me.Page_Load<br />        End Sub</p>
		<p>        Private Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs)<br />            BindList()<br />        End Sub</p>
		<p>        Private Sub BindList()<br />            Dim myConnectionString As String = "SERVER=192.168.0.244;DATABASE=pubs;uid=sa;pwd=;Connect Timeout=30"<br />            Dim mySelectQuery As String = String.Format("select a.*,b.job_desc from employee a, jobs b where fname like '{0}%' and a.job_id=b.job_id", search.Value)<br />            Dim myConnection As SqlConnection = New SqlConnection(myConnectionString)<br />            Dim myCommand As SqlCommand = New SqlCommand(mySelectQuery, myConnection)<br />            Dim da As SqlDataAdapter = New SqlDataAdapter(myCommand)<br />            Dim ds As DataSet = New DataSet<br />            Try<br />                myConnection.Open()<br />                da.Fill(ds)<br />                dlEmployee.DataSource = ds.Tables(0).DefaultView<br />                dlEmployee.DataBind()<br />            Catch ex As SqlException<br />                Response.Write(ex.Message)<br />            Finally<br />                myConnection.Close()<br />            End Try<br />            If ds.Tables(0).Rows.Count = 0 Then<br />                lblMessage.Text = "没有您要查找的员工信息！"<br />            Else<br />                lblMessage.Text = ""<br />            End If<br />        End Sub</p>
		<p>    End Class</p>
		<p>End Namespace<br /><br /><font color="#ff66ff"><font color="#ff0000"><strong>Second Step: Create a AjaxTextBox.vb.</strong></font><br /></font>Imports System<br />Imports System.Web.UI<br />Imports System.Web.UI.WebControls<br />Imports System.Web.UI.WebControls.TextBox</p>
		<p>Public Class AjaxTextBox<br />    Inherits System.Web.UI.WebControls.TextBox</p>
		<p>#Region "Private Property"</p>
		<p>    Private scriptFile_value As String = ""<br />    Private callBackFunction_value As String = ""<br />    Private backgroundColor_value As String = "#EEE"<br />    Private highlightColor_value As String = "#CCC"<br />    Private font_value As String = "Verdana"<br />    Private divPadding_value As String = "2px"<br />    Private divBorder_value As String = "1px solid #CCC"</p>
		<p>#End Region</p>
		<p>#Region "Public Property"</p>
		<p>    Public Property ScriptFile() As String<br />        Get<br />            Return scriptFile_value<br />        End Get<br />        Set(ByVal Value As String)<br />            scriptFile_value = Value<br />        End Set<br />    End Property</p>
		<p>    Public Property CallBackFunction() As String<br />        Get<br />            Return callBackFunction_value<br />        End Get<br />        Set(ByVal Value As String)<br />            callBackFunction_value = Value<br />        End Set<br />    End Property</p>
		<p>    Public Property BackgroundColor() As String<br />        Get<br />            Return backgroundColor_value<br />        End Get<br />        Set(ByVal Value As String)<br />            backgroundColor_value = Value<br />        End Set<br />    End Property</p>
		<p>    Public Property HighlightColor() As String<br />        Get<br />            Return highlightColor_value<br />        End Get<br />        Set(ByVal Value As String)<br />            highlightColor_value = Value<br />        End Set<br />    End Property</p>
		<p>    Public Property DivFont() As String<br />        Get<br />            Return font_value<br />        End Get<br />        Set(ByVal Value As String)<br />            font_value = Value<br />        End Set<br />    End Property</p>
		<p>    Public Property DivPadding() As String<br />        Get<br />            Return divPadding_value<br />        End Get<br />        Set(ByVal Value As String)<br />            divPadding_value = Value<br />        End Set<br />    End Property</p>
		<p>    Public Property DivBorder() As String<br />        Get<br />            Return divBorder_value<br />        End Get<br />        Set(ByVal Value As String)<br />            divPadding_value = Value<br />        End Set<br />    End Property</p>
		<p>#End Region</p>
		<p>#Region "Public AjaxTextBox"</p>
		<p>    Public Sub New()<br />        Me.Attributes.Add("AutoComplete", "off")<br />    End Sub</p>
		<p>    Protected Overloads Overrides Sub Render(ByVal writer As HtmlTextWriter)<br />        MyBase.Render(writer)<br />        Page.RegisterStartupScript("LoadScript", "&lt;script language='JavaScript' src='" + ScriptFile + "'&gt;&lt;/script&gt;")<br />        Dim styles As String = String.Format("&lt;script language='JavaScript'&gt;var DIV_BG_COLOR = '{0}';var DIV_HIGHLIGHT_COLOR = '{1}';var DIV_FONT = '{2}';var DIV_PADDING = '{3}';var DIV_BORDER = '{4}';&lt;/script&gt;", BackgroundColor, HighlightColor, DivFont, DivPadding, DivBorder)<br />        Page.RegisterStartupScript("LookupStyles", styles)<br />        Page.RegisterStartupScript("RegisterScript", "&lt;script language='JavaScript'&gt;InitQueryCode('" + Me.ClientID + "')&lt;/script&gt;")<br />        Page.RegisterStartupScript("RegisterCallBack", "&lt;script language='JavaScript'&gt;mainLoop = function() {val = escape(queryField.value);if(lastVal != val){var response = " + CallBackFunction + "(val);showQueryDiv(response.value); lastVal = val;}setTimeout('mainLoop()', 100);return true;};&lt;/script&gt;")<br />    End Sub</p>
		<p>#End Region</p>
		<p>End Class<br /><br /><font color="#ff0000"><strong>Third step: Create a lookup.js</strong></font><br />// 下拉区背景色<br />var DIV_BG_COLOR = "#EEE";<br />// 高亮显示条目颜色<br />var DIV_HIGHLIGHT_COLOR = "#C30";<br />// 字体<br />var DIV_FONT = "Arial";<br />// 下拉区内补丁大小<br />var DIV_PADDING = "2px";<br />// 下拉区边框样式<br />var DIV_BORDER = "1px solid #CCC";</p>
		<p>
				<br />// 文本输入框<br />var queryField;<br />// 下拉区id<br />var divName;<br />// IFrame名称<br />var ifName;<br />// 记录上次选择的值<br />var lastVal = "";<br />// 当前选择的值<br />var val = "";<br />// 显示结果的下拉区<br />var globalDiv;<br />// 下拉区是否设置格式的标记<br />var divFormatted = false;</p>
		<p>/**<br />InitQueryCode函数必须在&lt;body onload&gt;事件的响应函数中调用,其中:<br />queryFieldName为文本框控件的id,<br />hiddenDivName为显示下拉区div的id<br />*/<br />function InitQueryCode (queryFieldName, hiddenDivName)<br />{<br /> // 指定文本输入框的onblur和onkeydown响应函数<br /> queryField = document.getElementById(queryFieldName);<br /> queryField.onblur = hideDiv;<br /> queryField.onkeydown = keypressHandler;</p>
		<p> // 设置queryField的autocomplete属性为"off"<br /> queryField.autocomplete = "off";</p>
		<p> // 如果没有指定hiddenDivName,取默认值"querydiv"<br /> if (hiddenDivName)<br /> {<br />  divName = hiddenDivName;<br /> }<br /> else<br /> {<br />  divName = "querydiv";<br /> }<br /> <br /> // IFrame的name<br /> ifName = "queryiframe";<br /> <br /> // 100ms后调用mainLoop函数<br /> setTimeout("mainLoop()", 100);<br />}</p>
		<p>/**<br />获取下拉区的div,如果没有则创建之<br />*/<br />function getDiv (divID)<br />{<br /> if (!globalDiv)<br /> {<br />  // 如果div在页面中不存在,创建一个新的div<br />  <br />  if (!document.getElementById(divID))<br />  {<br />   var newNode = document.createElement("div");<br />   newNode.setAttribute("id", divID);<br />   document.body.appendChild(newNode);<br />  }</p>
		<p>  // globalDiv设置为div的引用  <br />  globalDiv = document.getElementById(divID);</p>
		<p>  // 计算div左上角的位置  <br />  var x = queryField.offsetLeft;<br />  var y = queryField.offsetTop + queryField.offsetHeight;<br />  var parent = queryField;<br />  while (parent.offsetParent)<br />  {<br />   parent = parent.offsetParent;<br />   x += parent.offsetLeft;<br />   y += parent.offsetTop;<br />  }</p>
		<p>  // 如果没有对div设置格式,则为其设置相应的显示样式  <br />  if (!divFormatted)<br />  {<br />   globalDiv.style.backgroundColor = DIV_BG_COLOR;<br />   globalDiv.style.fontFamily = DIV_FONT;<br />   globalDiv.style.padding = DIV_PADDING;<br />   globalDiv.style.border = DIV_BORDER;<br />   globalDiv.style.width = "100px";<br />   globalDiv.style.fontSize = "90%";</p>
		<p>   globalDiv.style.position = "absolute";<br />   globalDiv.style.left = x + "px";<br />   globalDiv.style.top = y + "px";<br />   globalDiv.style.visibility = "hidden";<br />   globalDiv.style.zIndex = 10000;</p>
		<p>   divFormatted = true;<br />  }<br /> }</p>
		<p> return globalDiv;<br />}</p>
		<p>/**<br />根据返回的结果集显示下拉区<br />*/<br />function showQueryDiv(resultArray)<br />{<br /> // 获取div的引用<br /> var div = getDiv(divName);<br /> <br /> // 如果div中有内容,则删除之<br /> while (div.childNodes.length &gt; 0)<br />  div.removeChild(div.childNodes[0]);</p>
		<p> // 依次添加结果<br /> for (var i = 0; i &lt; resultArray.length; i++)<br /> {<br />  // 每一个结果也是一个div<br />  var result = document.createElement("div");<br />  // 设置结果div的显示样式<br />  result.style.cursor = "pointer";<br />  result.style.padding = "2px 0px 2px 0px";<br />  // 设置为未选中<br />  _unhighlightResult(result);<br />  // 设置鼠标移进、移出等事件响应函数<br />  result.onmousedown = selectResult;<br />  result.onmouseover = highlightResult;<br />  result.onmouseout = unhighlightResult;</p>
		<p>  // 结果的文本是一个span<br />  var result1 = document.createElement("span");<br />  // 设置文本span的显示样式<br />  result1.className = "result1";<br />  result1.style.textAlign = "left";<br />  result1.style.fontWeight = "bold";<br />  result1.innerHTML = resultArray[i];<br />  <br />  // 将span添加为结果div的子节点<br />  result.appendChild(result1);<br />  <br />  // 将结果div添加为下拉区的子节点<br />  div.appendChild(result);<br /> }</p>
		<p> // 如果结果集不为空,则显示,否则不显示<br /> showDiv(resultArray.length &gt; 0);<br />}</p>
		<p>/**<br />用户点击某个结果时,将文本框的内容替换为结果的文本,<br />并隐藏下拉区<br />*/<br />function selectResult()<br />{<br /> _selectResult(this);<br />}</p>
		<p>// 选择一个条目<br />function _selectResult(item)<br />{<br /> var spans = item.getElementsByTagName("span");<br /> if (spans)<br /> {<br />  for (var i = 0; i &lt; spans.length; i++)<br />  {<br />   if (spans[i].className == "result1")<br />   {<br />    queryField.value = spans[i].innerHTML;<br />    lastVal = val = escape(queryField.value);<br />    mainLoop();<br />    queryField.focus();<br />    showDiv(false);<br />    return;<br />   }<br />  }<br /> }<br />}</p>
		<p>/**<br />当鼠标移到某个条目之上时,高亮显示该条目<br />*/<br />function highlightResult()<br />{<br /> _highlightResult(this);<br />}</p>
		<p>function _highlightResult(item)<br />{<br /> item.style.backgroundColor = DIV_HIGHLIGHT_COLOR;<br />}</p>
		<p>/**<br />当鼠标移出某个条目时,正常显示该条目<br />*/<br />function unhighlightResult()<br />{<br /> _unhighlightResult(this);<br />}</p>
		<p>function _unhighlightResult(item)<br />{<br /> item.style.backgroundColor = DIV_BG_COLOR;<br />}</p>
		<p>/**<br />显示/不显示下拉区<br />*/<br />function showDiv (show)<br />{<br /> var div = getDiv(divName);<br /> if (show)<br /> {<br />  div.style.visibility = "visible";<br /> }<br /> else<br /> {<br />  div.style.visibility = "hidden";<br /> }<br /> //adjustiFrame();<br />}</p>
		<p>/**<br />隐藏下拉区<br />*/<br />function hideDiv ()<br />{<br /> showDiv(false);<br />}</p>
		<p>/**<br />调整IFrame的位置,这是为了解决div可能会显示在输入框后面的问题<br />*/<br />function adjustiFrame()<br />{<br /> // 如果没有IFrame,则创建之<br /> if (!document.getElementById(ifName))<br /> {<br />  var newNode = document.createElement("iFrame");<br />  newNode.setAttribute("id", ifName);<br />  newNode.setAttribute("src", "javascript:false;");<br />  newNode.setAttribute("scrolling", "no");<br />  newNode.setAttribute("frameborder", "0");<br />  document.body.appendChild(newNode);<br /> }</p>
		<p> iFrameDiv = document.getElementById(ifName);<br /> var div = getDiv(divName);</p>
		<p> // 调整IFrame的位置与div重合,并在div的下一层  <br /> try<br /> {<br />  iFrameDiv.style.position = "absolute";<br />  iFrameDiv.style.width = div.offsetWidth;<br />  iFrameDiv.style.height = div.offsetHeight;<br />  iFrameDiv.style.top = div.style.top;<br />  iFrameDiv.style.left = div.style.left;<br />  iFrameDiv.style.zIndex = div.style.zIndex - 1;<br />  iFrameDiv.style.visibility = div.style.visibility;<br /> }<br /> catch (e)<br /> {<br /> }<br />}</p>
		<p>/**<br />文本输入框的onkeydown响应函数<br />*/<br />function keypressHandler (evt)<br />{<br /> // 获取对下拉区的引用  <br /> var div = getDiv(divName);<br /> <br /> // 如果下拉区不显示,则什么也不做  <br /> if (div.style.visibility == "hidden")<br /> {<br />  return true;<br /> }</p>
		<p> // 确保evt是一个有效的事件 <br /> if (!evt &amp;&amp; window.event)<br /> {<br />  evt = window.event;<br /> }<br /> var key = evt.keyCode;</p>
		<p> var KEYUP = 38;<br /> var KEYDOWN = 40;<br /> var KEYENTER = 13;<br /> var KEYTAB = 9;<br /> <br /> // 只处理上下键、回车键和Tab键的响应  <br /> if ((key != KEYUP) &amp;&amp; (key != KEYDOWN) &amp;&amp; (key != KEYENTER) &amp;&amp; (key != KEYTAB))<br /> {<br />  return true;<br /> }</p>
		<p> var selNum = getSelectedSpanNum(div);<br /> var selSpan = setSelectedSpan(div, selNum);<br /> <br /> // 如果键入回车和Tab,则选择当前选择条目 <br /> if ((key == KEYENTER) || (key == KEYTAB))<br /> {<br />  if (selSpan)<br />  {<br />   _selectResult(selSpan);<br />  }<br />  evt.cancelBubble = true;<br />  return false;<br /> }<br /> else //如果键入上下键,则上下移动选中条目<br /> {<br />  if (key == KEYUP)<br />  {<br />   selSpan = setSelectedSpan(div, selNum - 1);<br />  }<br />  if (key == KEYDOWN)<br />  {<br />   selSpan = setSelectedSpan(div, selNum + 1);<br />  }<br />  if (selSpan)<br />  {<br />   _highlightResult(selSpan);<br />  }<br /> }</p>
		<p> // 显示下拉区<br /> showDiv(true);<br /> return true;<br />}</p>
		<p>/**<br />获取当前选中的条目的序号<br />*/<br />function getSelectedSpanNum(div)<br />{<br /> var count = -1;<br /> var spans = div.getElementsByTagName("div");<br /> if (spans)<br /> {<br />  for (var i = 0; i &lt; spans.length; i++)<br />  {<br />   count++;<br />   if (spans[i].style.backgroundColor != div.style.backgroundColor)<br />   {<br />    return count;<br />   }<br />  }<br /> }</p>
		<p> return -1;<br />}</p>
		<p>/**<br />选择指定序号的结果条目<br />*/<br />function setSelectedSpan(div, spanNum)<br />{<br /> var count = -1;<br /> var thisSpan;<br /> var spans = div.getElementsByTagName("div");<br /> if (spans)<br /> {<br />  for (var i = 0; i &lt; spans.length; i++)<br />  {<br />   if (++count == spanNum)<br />   {<br />    _highlightResult(spans[i]);<br />    thisSpan = spans[i];<br />   }<br />   else<br />   {<br />    _unhighlightResult(spans[i]);<br />   }<br />  }<br /> }</p>
		<p> return thisSpan;<br />}<br /><br /><font color="#ff0000"><strong>Fourthly: Add httpHandlers request in web.config.<br /></strong></font>  &lt;httpHandlers&gt;<br />   &lt;add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro" /&gt;<br />  &lt;/httpHandlers&gt;<br /><br />Dont' forget download a AjaxPro.dll then add the dll to the project.<br /></p>
<img src ="http://www.blogjava.net/Daniel2005/aggbug/89823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2006-12-25 09:46 <a href="http://www.blogjava.net/Daniel2005/articles/89823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Check whether the year is a leap Year or not</title><link>http://www.blogjava.net/Daniel2005/articles/46572.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Wed, 17 May 2006 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/46572.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/46572.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/46572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/46572.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/46572.html</trackback:ping><description><![CDATA[
		<p>//------------------------------------------------------------------------<br /> // * Check whether the year is a leap Year or not<br /> //------------------------------------------------------------------------</p>
		<p> var m_YYYY = /(1[89]\d{2}|2\d{3})/;<br /> RegExp.$1="";<br /> m_YYYY.exec(strDate);<br /> var m_Year = RegExp.$1;<br /> if(m_Year=="") m_Year = (new Date()).getYear();<br /> var bln_LeapYear = false;<br /> if((m_Year%4==0 &amp;&amp; m_Year%100!=0)||(m_Year%400==0)) bln_LeapYear = true;<br /> //------------------------------------------------------------------------<br /> <br /> var YYYY = "(1[89]\\d{2}|2\\d{3})";<br /> var MMDD_1 = "(0\?[13578]|1[02])[\-\/](0\?[1-9]|[12]\\d|3[01])";<br /> var MMDD_2 = "(0\?[469]|11)[\-\/](0\?[1-9]|[12]\\d|30)";<br /> var MMDD_3;<br /> if(bln_LeapYear)<br />  MMDD_3 = "0\?2[\-\/](0\?[1-9]|[12]\\d)";<br /> else<br />  MMDD_3 = "0\?2[\-\/](0\?[1-9]|1\\d|2[0-8])";<br /> var MMDD_All = "((" + MMDD_1 + ")|(" + MMDD_2 + ")|(" + MMDD_3 + "))";<br /> var DateFormat_1 = "(" + YYYY + "[\-\/]" + MMDD_All + ")";<br /> var DateFormat_2 = "(" + MMDD_All + "[\-\/]" + YYYY + ")";<br /> var DateFormat_3 = "(" + MMDD_All + ")";<br /> var DateFormat_All ="^(" + DateFormat_1 + "|" + DateFormat_2 + "|" + DateFormat_3 + ")$";<br /> var m_ChkDate = new RegExp(DateFormat_All);<br /> return(m_ChkDate.test(strDate));</p>
<img src ="http://www.blogjava.net/Daniel2005/aggbug/46572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2006-05-17 10:50 <a href="http://www.blogjava.net/Daniel2005/articles/46572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MasterPage+content+javascript!!</title><link>http://www.blogjava.net/Daniel2005/articles/38387.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Fri, 31 Mar 2006 00:59:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/38387.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/38387.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/38387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/38387.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/38387.html</trackback:ping><description><![CDATA[EG：<br />function Assign_Addr(point,st_name,st_no,x_st,state,city,phone,ext,zip,landmark,direction,type){<br />  var i,bolAirport;<br />  var IE4 = (document.getElementById) ? 1 : 0;<br />    //alert("daga");<br />  bolAirport = false;<br />  var statevalue=document.getElementById("ctl00_ContentPlaceHolder1_hidstate").value;<br />  //alert(statevalue);<br />//  var statevalue=document.getElementById("hidstate").value.split("/");<br />//  for(i=0;i &lt; statevalue.length-1; i++){<br />//   if(statevalue(i) == state){<br />//    bolAirport = true;<br />//    break;<br />//   }<br />//  }<br />  <br />  if(type == "D" ) {<br />   if(bolAirport == true &amp;&amp; document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport").checked == false){<br />    document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport").checked = true;<br />    update_state_airport("D");<br />   }else if(bolAirport == false &amp;&amp; document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport") == true){<br />    document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport") = false;<br />    update_state_airport("D");<br />   }<br />   document.getElementById("ctl00_ContentPlaceHolder1_txtdestStName").value = st_name.toUpperCase()<br />   document.getElementById("ctl00_ContentPlaceHolder1_txtDestStNo").value = st_no<br />   document.getElementById("ctl00_ContentPlaceHolder1_txtDestCross").value = x_st<br />   document.getElementById("ctl00_ContentPlaceHolder1_txtDestCity").value = city<br />   if (state!=""){<br />   //if (IE4)<br />   // document.Form1.DaytimeVoucherDrop1_ddlDState.value=state<br />   //else{<br />    document.getElementById("ctl00_ContentPlaceHolder1_ddlDestState").selectedIndex=1;<br />    for (i=0;i&lt;document.getElementById("ctl00_ContentPlaceHolder1_ddlDestState").length;i++){<br />     if (document.getElementById("ctl00_ContentPlaceHolder1_ddlDestState").options(i).value==state){<br />            document.getElementById("ctl00_ContentPlaceHolder1_ddlDestState").selectedIndex=i;<br />            break;<br />      }<br />    }<br />   // }<br />   }<br />   document.getElementById("ctl00_ContentPlaceHolder1_txtDestZip").value=zip;<br />   //document.getElementById("txtDLandmarkName").value=landmark;<br />   //document.getElementById("txtDirections").value=direction;<br />   //document.getElementById("txtDPoint").value=point;<br />   //update_city_field(document.Form1.DaytimeVoucherDrop1_ddlDState.options(document.Form1.DaytimeVoucherDrop1_ddlDState.selectedIndex).value,"D");<br />  } else if(type == "P") {<br />   if(bolAirport == true &amp;&amp; document.getElementById("ctl00_ContentPlaceHolder1_ckPuAirport").checked == false){<br />    document.getElementById("ctl00_ContentPlaceHolder1_ckPuAirport").checked = true;<br />    update_state_airport("P");<br />   }else if(bolAirport == false &amp;&amp; document.getElementById("ctl00_ContentPlaceHolder1_ckPuAirport").checked == true){<br />    document.getElementById("ctl00_ContentPlaceHolder1_ckPuAirport").checked = false;<br />   }<br />   document.getElementById("ctl00_ContentPlaceHolder1_txtPuStName").value=st_name.toUpperCase()<br />   document.getElementById("ctl00_ContentPlaceHolder1_txtPuStno").value=st_no<br />   //document.getElementById("txtPStrCross").value  = x_st<br />   document.getElementById("ctl00_ContentPlaceHolder1_txtPuCity").value=city<br />   if (state!=""){<br />   //if (IE4)<br />   // document.Form1.DaytimeVoucherPU1_ddlPState.value=state<br />    <br />   //else{<br />    document.getElementById("ctl00_ContentPlaceHolder1_ddlPuState").selectedIndex=1;<br />    for (i=0;i&lt;document.getElementById("ctl00_ContentPlaceHolder1_ddlPuState").length;i++){<br />     if (document.getElementById("ctl00_ContentPlaceHolder1_ddlPuState").options(i).value==state){<br />            document.getElementById("ctl00_ContentPlaceHolder1_ddlPuState").selectedIndex=i;<br />            break;<br />      }<br />    }<br />   // }<br />   }<br />   document.getElementById("ctl00_ContentPlaceHolder1_txtPuZipCode").value=zip;<br />   //document.getElementById("txtDirections").value=direction; <br />   document.getElementById("ctl00_ContentPlaceHolder1_txtPuPoint").value=point;<br />   //document.getElementById("txtPPhonearea").value=phone.substr(0,3);<br />      //document.getElementById("txtPPhone1").value=phone.substr(3,3);<br />      //document.getElementById("txtPPhone2").value=phone.substr(6,4);<br />   //update_city_field(document.Form1.DaytimeVoucherPU1_ddlPState.options(document.Form1.DaytimeVoucherPU1_ddlPState.selectedIndex).value,"P");<br />  }<br />  //set_validateflag(type);<br /> }<br /> if (navigator.appName == "Netscape" &amp;&amp; document.layers) {<br />  window.onResize = reloadIt;<br />   }<br />   <br />function reloadIt() {<br />  history.go(0);<br /> }<br />function windowstatus(text){<br />  window.status = text;<br />  <br /> }<br /> <br />function clearstatus()<br /> {<br />  window.status = "";<br />  <br /> }<br /> <br />function set_validateflag(location_type){<br />  if (location_type == "p") {<br />   document.Form1.p_validate_flag.value = "false";<br />  } else if(location_type == "d") {<br />   document.Form1.d_validate_flag.value = "false";<br />  }<br /> <br /> }<br />   <br />function update_state_airport(addr_type){<br />  var i;<br />  var indSelect = "";<br />  <br />  if(addr_type == "P") {<br />   if(document.getElementById("ctl00_ContentPlaceHolder1_ckPuAirport").checked == true){<br />    load_PU_td()<br />       show_airports_ascx();<br />             document.getElementById("ctl00_ContentPlaceHolder1_ckPuAirport").value="1";<br />       <br />            <br /> }else if(document.forms(0).ctl00_ContentPlaceHolder1_ckPuAirport.checked == false){<br />       show_PU_td()<br />          load_airports_ascx();<br />          document.getElementById("ctl00_ContentPlaceHolder1_ckPuAirport").value="0";<br />          <br />  }<br />   <br />  }else if(addr_type == "D"){<br />   if(document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport").checked == true){<br />   <br />    show_airports2_ascx()<br />       load_Drop_td()<br />    document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport").value="1";<br />  }else if(document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport").checked == false){<br />     show_Drop_td()<br />     load_airports2_ascx()<br />     document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport").value="0";<br />   <br />  }<br />   <br />  <br />  <br />  }<br /> }<br /> <br /> function load_PU_td(type)<br />    {<br />    <br />        if(type == "p"){<br />            if(document.getElementById("ctl00_ContentPlaceHolder1_ckPuAirport").checked == true){<br />    //document.getElementById("ctl00_ContentPlaceHolder1_PuAirportrow").style.display='none';<br />    document.getElementById("ctl00_ContentPlaceHolder1_PuAirportrow").style.display='';<br />             document.getElementById("ctl00_ContentPlaceHolder1_ckPuAirport").value="1";   <br />            <br />         }else if(document.getElementById("ctl00_ContentPlaceHolder1_ckPuAirport").checked == false){<br />             //document.getElementById("ctl00_ContentPlaceHolder1_patr2").style.display='';<br />       document.getElementById("ctl00_ContentPlaceHolder1_PuAirportrow").style.display='none';<br />          document.getElementById("ctl00_ContentPlaceHolder1_ckPuAirport").value="0";<br />          <br />      }<br />        }<br />        if(type == "d"){<br />   if(document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport").checked == true){<br />    document.getElementById("ctl00_ContentPlaceHolder1_DestAirportrow").style.display='';<br />    document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport").value="1";<br />    <br />      }else if(document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport").checked == false){<br />     document.getElementById("ctl00_ContentPlaceHolder1_DestAirportrow").style.display='none';<br />     document.getElementById("ctl00_ContentPlaceHolder1_ckDestAirport").value="0";<br />   <br />      }<br />      }<br />       <br />      <br />    }<br />    <br />    <br />    function load_airports_ascx()<br /> <br /> {     <br />      document.getElementById("ctl00_ContentPlaceHolder1_PuAirportrow").style.display="none";<br />       <br /> } <br />  function load_airports2_ascx()<br /> {<br />     document.getElementById("ctl00_ContentPlaceHolder1_DestAirportrow").style.display="none";<br />    <br />   <br /> }<br /> <br /> <br /> function show_airports_ascx(type,code)<br /> {<br />  document.getElementById("ctl00_ContentPlaceHolder1_PuAirportrow").style.display=""; <br />  <br />   }<br /> <br /> <br /> function show_airports2_ascx(type,code)<br />, {<br />  document.getElementById("ctl00_ContentPlaceHolder1_DestAirportrow").style.display=""; <br />  <br />   }<br /><img src ="http://www.blogjava.net/Daniel2005/aggbug/38387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2006-03-31 08:59 <a href="http://www.blogjava.net/Daniel2005/articles/38387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Confirm的VB用法！</title><link>http://www.blogjava.net/Daniel2005/articles/38297.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Thu, 30 Mar 2006 09:42:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/38297.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/38297.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/38297.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/38297.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/38297.html</trackback:ping><description><![CDATA[function window.confirm(str)<br />{<br /> execScript("n = msgbox('"+ str +"', 4,'Information')", "vbscript");<br /> return(n==6);<br /> } <br />function JSFunction()<br />{<br />if(window.confirm('Dispute submitted successfully! Do you want to reclass part of this ride to a personal charge'))<br />{<br />return false;<br />}<br />}<img src ="http://www.blogjava.net/Daniel2005/aggbug/38297.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2006-03-30 17:42 <a href="http://www.blogjava.net/Daniel2005/articles/38297.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>移动Mouse，图片底色更改！</title><link>http://www.blogjava.net/Daniel2005/articles/28194.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Mon, 16 Jan 2006 07:17:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/28194.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/28194.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/28194.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/28194.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/28194.html</trackback:ping><description><![CDATA[<P>Eg:<BR>&lt;<A href='mailto:%@LANGUAGE="VBSCRIPT'>%@LANGUAGE="VBSCRIPT</A>" CODEPAGE="936"%&gt;<BR>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<A href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</A>"&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<BR>&lt;title&gt;Test&lt;/title&gt;<BR>&lt;SCRIPT language="JavaScript"&gt;<BR>function MM_findObj(n, d) { //v4.01<BR>&nbsp; var p,i,x;&nbsp; if(!d) d=document; if((p=n.indexOf("?"))&gt;0&amp;&amp;parent.frames.length) {<BR>&nbsp;&nbsp;&nbsp; d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}<BR>&nbsp; if(!(x=d[n])&amp;&amp;d.all) x=d.all[n]; for (i=0;!x&amp;&amp;i&lt;d.forms.length;i++) x=d.forms[i][n];<BR>&nbsp; for(i=0;!x&amp;&amp;d.layers&amp;&amp;i&lt;d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);<BR>&nbsp; if(!x &amp;&amp; d.getElementById) x=d.getElementById(n); return x;<BR>}</P>
<P>function MM_swapImgRestore() { //v3.0<BR>&nbsp; var i,x,a=document.MM_sr; for(i=0;a&amp;&amp;i&lt;a.length&amp;&amp;(x=a[i])&amp;&amp;x.oSrc;i++) x.src=x.oSrc;<BR>}</P>
<P>function MM_swapImage() { //v3.0<BR>&nbsp; var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i&lt;(a.length-2);i+=3)<BR>&nbsp;&nbsp; if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}<BR>}<BR>&lt;/script&gt;<BR>&lt;/head&gt;<BR>&lt;table&gt;&lt;TR&gt;<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; &lt;TD width=148 colSpan=2&gt;&lt;img <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; src="image/B2_COMP2.gif" width=162 height=20 border=0 lowsrc="image/B2_COMP2.gif"&gt;&lt;a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image24','','image/B2_special2.gif',1)"&gt;&lt;img src="image/B2_special.gif" name="Image24" width="162" height="20" border="0"&gt;&lt;/a&gt;&lt;a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image25','','image/B2_billing2.gif',1)"&gt;&lt;img src="image/B2_billing.gif" name="Image25" width="162" height="20" border="0"&gt;&lt;/a&gt;&lt;a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image26','','image/B2_auto2.gif',1)"&gt;&lt;img src="image/B2_auto.gif" name="Image26" width="162" height="20" border="0"&gt;&lt;/a&gt;&lt;a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image27','','image/B2_stretch2.gif',1)"&gt;&lt;img src="image/B2_stretch.gif" name="Image27" width="162" height="20" border="0"&gt;&lt;/a&gt;&lt;a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image28','','image/B2_images2.gif',1)"&gt;&lt;img src="image/B2_images.gif" name="Image28" width="162" height="20" border="0"&gt;&lt;/a&gt;&lt;a href="#" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image29','','image/B2_account2.gif',1)"&gt;&lt;img src="image/B2_account.gif" name="Image29" width="162" height="20" border="0"&gt;&lt;/a&gt;&lt;IMG height=20 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; src="image/LINKS3.gif" width=162 border=0&gt;&lt;a href="<A href="http://www.intellicast.com/">http://www.intellicast.com/</A>" target="_blank" onMouseOver="MM_swapImage('Image30','','image/LINK_WEATHER2.gif',1)" onMouseOut="MM_swapImgRestore()"&gt;&lt;img src="image/LINK_WEATHER.gif" name="Image30" width="162" height="20" border="0" lowsrc="image/LINK_WEATHER2.gif"&gt;&lt;/a&gt;&lt;a href="<A href="http://www.mapquest.com/">http://www.mapquest.com/</A>" target="_blank" onMouseOver="MM_swapImage('Image31','','image/LINK_MAP2.gif',1)" onMouseOut="MM_swapImgRestore()"&gt;&lt;img src="image/LINK_MAP.gif" name="Image31" width="162" height="20" border="0" lowsrc="image/LINK_MAP2.gif"&gt;&lt;/a&gt;&lt;a href="<A href="http://www.allny.com/">http://www.allny.com/</A>" target="_blank" onMouseOver="MM_swapImage('Image32','','image/LINK_TRAVEL2.gif',1)" onMouseOut="MM_swapImgRestore()"&gt;&lt;img src="image/LINK_TRAVEL.gif" name="Image32" width="162" height="20" border="0" lowsrc="image/LINK_TRAVEL2.gif"&gt;&lt;/a&gt;&lt;a href="<A href="http://www.travelfile.com/">http://www.travelfile.com/</A>" target="_blank" onMouseOver="MM_swapImage('Image33','','image/LINK_FILE2.gif',1)" onMouseOut="MM_swapImgRestore()"&gt;&lt;img src="image/LINK_FILE.gif" name="Image33" width="162" height="20" border="0" lowsrc="image/LINK_FILE2.gif"&gt;&lt;/a&gt;&lt;a href="<A href="http://www.trip.com/trs/trip/home/index_01.xsl">http://www.trip.com/trs/trip/home/index_01.xsl</A>" target="_blank" onMouseOver="MM_swapImage('Image34','','image/LINK_TRIP2.gif',1)" onMouseOut="MM_swapImgRestore()"&gt;&lt;img src="image/LINK_TRIP.gif" name="Image34" width="162" height="20" border="0" lowsrc="image/LINK_TRIP2.gif"&gt;&lt;/a&gt;&lt;a href="<A href="http://www.allny.com/">http://www.allny.com/</A>" target="_blank" onMouseOver="MM_swapImage('Image37','','image/LINK_ALLNY2.gif',1)" onMouseOut="MM_swapImgRestore()"&gt;&lt;img src="image/LINK_ALLNY.gif" name="Image37" width="162" height="20" border="0" lowsrc="image/LINK_ALLNY2.gif"&gt;&lt;/a&gt;&lt;a href="<A href="http://www.concordlimo.com/cars/LogonC.htm">http://www.concordlimo.com/cars/LogonC.htm</A>" target="_blank" onMouseOver="MM_swapImage('Image36','','image/Drivers_Info_2.gif',1)" onMouseOut="MM_swapImgRestore()"&gt;&lt;img src="image/Drivers_Info.gif" name="Image36" width="161" height="20" border="0" lowsrc="image/reservation2.gif"&gt;&lt;/a&gt;&lt;/TD&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/TR&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;<BR>&lt;body&gt;</P>
<P>&lt;/body&gt;<BR>&lt;/html&gt;<BR>'-------------------------------------------------------------------------------------------------------------------------<BR>function MM_findObj(n, d) { //v4.01<BR>&nbsp; var p,i,x;&nbsp; if(!d) d=document; if((p=n.indexOf("?"))&gt;0&amp;&amp;parent.frames.length) {<BR>&nbsp;&nbsp;&nbsp; d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}<BR>&nbsp; if(!(x=d[n])&amp;&amp;d.all) x=d.all[n]; for (i=0;!x&amp;&amp;i&lt;d.forms.length;i++) x=d.forms[i][n];<BR>&nbsp; for(i=0;!x&amp;&amp;d.layers&amp;&amp;i&lt;d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);<BR>&nbsp; if(!x &amp;&amp; d.getElementById) x=d.getElementById(n); return x;<BR>}</P>
<P>function MM_swapImgRestore() { //v3.0<BR>&nbsp; var i,x,a=document.MM_sr; for(i=0;a&amp;&amp;i&lt;a.length&amp;&amp;(x=a[i])&amp;&amp;x.oSrc;i++) x.src=x.oSrc;<BR>}</P>
<P>function MM_swapImage() { //v3.0<BR>&nbsp; var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i&lt;(a.length-2);i+=3)<BR>&nbsp;&nbsp; if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}<BR>}<BR>'--------------------------------------------------------------------------------------------------------------------------'这三个函数的用法！！！！<BR></P><img src ="http://www.blogjava.net/Daniel2005/aggbug/28194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2006-01-16 15:17 <a href="http://www.blogjava.net/Daniel2005/articles/28194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript做弹出菜单！</title><link>http://www.blogjava.net/Daniel2005/articles/25767.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Wed, 28 Dec 2005 10:50:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/25767.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/25767.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/25767.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/25767.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/25767.html</trackback:ping><description><![CDATA[<P>&lt;html&gt;&lt;head&gt;&lt;Title&gt;下拉菜单的导航条。 IK8网页特效演示&lt;/title&gt;&lt;/head&gt;&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;无标题文档&lt;/title&gt;<BR>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<BR>&lt;SCRIPT language=JavaScript&gt;<BR>&lt;!--</P>
<P>function MM_goToURL() { //v3.0<BR>&nbsp; var i, args=MM_goToURL.arguments; document.MM_returnValue = false;<BR>&nbsp; for (i=0; i&lt;(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");<BR>}<BR>function JM_cc(ob){<BR>var obj=MM_findObj(ob); if (obj) { <BR>obj.select();js=obj.createTextRange();js.execCommand("Copy");}<BR>}</P>
<P>function MM_findObj(n, d) { //v4.0<BR>&nbsp; var p,i,x;&nbsp; if(!d) d=document; if((p=n.indexOf("?"))&gt;0&amp;&amp;parent.frames.length) {<BR>&nbsp;&nbsp;&nbsp; d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}<BR>&nbsp; if(!(x=d[n])&amp;&amp;d.all) x=d.all[n]; for (i=0;!x&amp;&amp;i&lt;d.forms.length;i++) x=d.forms[i][n];<BR>&nbsp; for(i=0;!x&amp;&amp;d.layers&amp;&amp;i&lt;d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);<BR>&nbsp; if(!x &amp;&amp; document.getElementById) x=document.getElementById(n); return x;<BR>}<BR>//--&gt;<BR>&lt;/SCRIPT&gt;<BR>&lt;SCRIPT language=JavaScript&gt;<BR>&lt;!--</P>
<P>menuPrefix = 'menu';&nbsp; // Prefix that all menu layers must start with<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // All layers with this prefix will be treated<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // as a part of the menu system.</P>
<P>var menuTree, mouseMenu, hideTimer, doHide;</P>
<P>function init() {<BR>&nbsp; ie4 = (document.all)?true:false;<BR>&nbsp; ns4 = (document.layers)?true:false;<BR>&nbsp; document.onmousemove = mouseMove;<BR>&nbsp; if (ns4) { document.captureEvents(Event.MOUSEMOVE); }<BR>}</P>
<P>function expandMenu(menuContainer,subContainer,menuLeft,menuTop) {<BR>&nbsp;&nbsp;&nbsp; // Hide all submenus thats's not below the current level<BR>&nbsp;&nbsp;&nbsp; doHide = false;<BR>&nbsp; if (menuContainer != menuTree) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ie4) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var menuLayers = document.all.tags("DIV");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=0; i&lt;menuLayers.length; i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((menuLayers[i].id.indexOf(menuContainer) != -1) &amp;&amp; (menuLayers[i].id != menuContainer)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hideObject(menuLayers[i].id);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else if (ns4) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=0; i&lt;document.layers.length; i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var menuLayer = document.layers[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((menuLayer.id.indexOf(menuContainer) != -1) &amp;&amp; (menuLayer.id != menuContainer)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menuLayer.visibility = "hide";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }<BR>&nbsp; // If this is item has a submenu, display it, or it it's a toplevel menu, open it<BR>&nbsp; if (subContainer) {<BR>&nbsp;&nbsp;&nbsp; if ((menuLeft) &amp;&amp; (menuTop)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; positionObject(subContainer,menuLeft,menuTop);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hideAll();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ie4) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; positionObject(subContainer, document.all[menuContainer].offsetWidth + document.all[menuContainer].style.pixelLeft - 10, mouseY);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; positionObject(subContainer, document.layers[menuContainer].document.width + document.layers[menuContainer].left + 50, mouseY);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; showObject(subContainer);<BR>&nbsp;&nbsp;&nbsp; menuTree = subContainer;<BR>&nbsp; }<BR>}</P>
<P>function showObject(obj) {<BR>&nbsp; if (ie4) { document.all[obj].style.visibility = "visible"; }<BR>&nbsp; else if (ns4) { document.layers[obj].visibility = "show";&nbsp; }<BR>}</P>
<P>function hideObject(obj) {<BR>&nbsp; if (ie4) { document.all[obj].style.visibility = "hidden"; }<BR>&nbsp; else if (ns4) { document.layers[obj].visibility = "hide"; }<BR>}</P>
<P>function positionObject(obj,x,y) {<BR>&nbsp; if (ie4) {<BR>&nbsp;&nbsp;&nbsp; var foo = document.all[obj].style;<BR>&nbsp;&nbsp;&nbsp; foo.left = x;<BR>&nbsp;&nbsp;&nbsp; foo.top = y;<BR>&nbsp; }<BR>&nbsp; else if (ns4) {<BR>&nbsp;&nbsp;&nbsp; var foo = document.layers[obj];<BR>&nbsp;&nbsp;&nbsp; foo.left = x;<BR>&nbsp;&nbsp;&nbsp; foo.top = y;<BR>&nbsp;&nbsp; }<BR>}</P>
<P>function hideAll() {<BR>&nbsp;if (ie4) {<BR>&nbsp;&nbsp;&nbsp; var menuLayers = document.all.tags("DIV");<BR>&nbsp;&nbsp;&nbsp; for (i=0; i&lt;menuLayers.length; i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (menuLayers[i].id.indexOf(menuPrefix) != -1) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hideObject(menuLayers[i].id);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }<BR>&nbsp; else if (ns4) {<BR>&nbsp;&nbsp;&nbsp; for (i=0; i&lt;document.layers.length; i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var menuLayer = document.layers[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (menuLayer.id.indexOf(menuPrefix) != -1) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hideObject(menuLayer.id);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }<BR>}</P>
<P>function hideMe(hide) {<BR>&nbsp;&nbsp;&nbsp; if (hide) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (doHide) { hideAll(); }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doHide = true;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hideTimer = window.setTimeout("hideMe(true);", 2000);<BR>&nbsp;&nbsp;&nbsp; }<BR>}</P>
<P>function mouseMove(e) {<BR>&nbsp; if (ie4) { mouseY = window.event.y; }<BR>&nbsp; if (ns4) { mouseY = e.pageY; }<BR>}</P>
<P>function itemHover(obj,src,text,style) {<BR>&nbsp; if (ns4) {<BR>&nbsp;&nbsp;&nbsp; var text = '&lt;nobr&gt;&lt;a href="' + src + '" class="' + style + '"&gt;' + text + '&lt;\/a&gt;&lt;\/nobr&gt;'<BR>&nbsp;&nbsp;&nbsp; obj.document.open();<BR>&nbsp;&nbsp;&nbsp; obj.document.write(text);<BR>&nbsp;&nbsp;&nbsp; obj.document.close();<BR>&nbsp; }<BR>}</P>
<P>onload = init;<BR>//--&gt;<BR>&lt;/SCRIPT&gt;<BR>&lt;style type=text/css&gt;<BR>&lt;!--<BR>&nbsp; .menu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { position: absolute; left: 0; top: 2;<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; visibility: hidden; background: #FFFFFF;<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; width: 100px; margin: 0px 0px; padding: 0px 0px;<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; border: 1px silver solid;<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; overflow: visible; ; clip:&nbsp;&nbsp;&nbsp;&nbsp; rect(&nbsp;&nbsp; )}<BR>.menu a:visited { font-family: "Tahoma"; font-size: 11px;<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; text-decoration: none; font-weight: normal;<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; color: black; background: #E2E2E2;<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; width: 108px; padding-left: 8px; ; line-height: 22px; border-color: #FFFFFF #666666 #333333 #999999; border-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; clip:&nbsp; rect(&nbsp;&nbsp; )}<BR>&nbsp; .menu a:hover&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { font-family: "Tahoma"; font-size: 11px;<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; text-decoration: none; font-weight: normal;<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; color: #FFFFFF; background: #009900;<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; width: 108px; padding-left: 8px; ; line-height: 22px; clip:&nbsp; rect(&nbsp;&nbsp; )}<BR>&nbsp; .menu .border&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { border: 1px solid #F4F4F4;<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; border-bottom: 1px solid #808080;<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; border-right: 1px solid #808080; }<BR>&nbsp; .menu .text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { overflow: hidden;<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; width: 125px; height: 15px; }<BR>&nbsp; .menu .arrow&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { overflow: hidden;<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; width: 15px; height: 12px;<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; padding-left: 5px; padding-top: 3px; }<BR>&nbsp; .menu .arrow img&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { width: 6px; height: 7px;<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; border: 0px; }&nbsp; .menu a { font-family: "Tahoma"; font-size: 11px;<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; text-decoration: none; font-weight: normal;<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; color: black; background: #E2E2E2;<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; width: 108px; padding-left: 8px;&nbsp; ; clip:&nbsp; rect(&nbsp;&nbsp; ); border-color: #FFFFFF #666666 #333333 #999999; border-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; line-height: 22px} .menu a:link {&nbsp; color: #000000; text-decoration: none}</P>
<P>.a {&nbsp; font-size: 12px; text-decoration: none}<BR>a:link {&nbsp; color: #FFFFFF; text-decoration: none}<BR>a:hover {&nbsp; text-decoration: underline}<BR>a:visited {&nbsp; color: #FFFFFF; text-decoration: none}<BR>--&gt;<BR>&lt;/style&gt;<BR>&lt;/head&gt;</P>
<P>&lt;body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0"&gt;<BR>&lt;table border="0" cellpadding="0" cellspacing="1" bgcolor="#333333" width="778" class="a"&gt;<BR>&nbsp; &lt;tr bgcolor="#009830" align="center" valign="bottom"&gt; <BR>&nbsp;&nbsp;&nbsp; &lt;td width="10" height="18"&gt; &lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;td width="74"&gt;&lt;a href="#;"&nbsp; onMouseOver="expandMenu(null,'menu1',getPos(this,'Left'),getPos(this,'Top')+this.offsetHeight);" class="a" &gt;第一项&lt;/a&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;td width="58"&gt;&lt;a href="#;"&nbsp; onMouseOver="expandMenu(null,'menu2',getPos(this,'Left'),getPos(this,'Top')+this.offsetHeight);" class="a" &gt;第二项&lt;/a&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;td width="58"&gt;&lt;a href="#;"&nbsp; onMouseOver="expandMenu(null,'menu3',getPos(this,'Left'),getPos(this,'Top')+this.offsetHeight);" class="a" &gt;第三项&lt;/a&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!--可以复制上面的做出menu4 menu5 menu6....--&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;td width="40"&gt;&lt;a href="#;" class="a" &gt;首页&lt;/a&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;td width="18" height="18"&gt; &lt;/td&gt;<BR>&nbsp; &lt;/tr&gt;<BR>&lt;/table&gt;<BR>&lt;script language="JavaScript"&gt;<BR>function getPos(el,sProp) { <BR>&nbsp;&nbsp;&nbsp; var iPos = 0<BR>&nbsp;&nbsp;&nbsp; while (el!=null) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iPos+=el["offset" + sProp]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; el = el.offsetParent<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; return iPos</P>
<P>}<BR>&lt;/script&gt;<BR>&lt;!-- 第一开始 --&gt;<BR>&lt;div id="menu1" class="menu" onMouseOut="hideMe();" style=""&gt;<BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu1');"&gt;第一项&lt;/a&gt;&lt;br&gt;<BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu1');"&gt;第一项&lt;/a&gt;&lt;br&gt;<BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu1');"&gt;第一项&lt;/a&gt;&lt;br&gt;<BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu1');"&gt;第一项&lt;/a&gt;&lt;br&gt;<BR>&lt;/div&gt;<BR>&lt;!-- 第二开始 --&gt;<BR>&lt;div id="menu2" class="menu" onMouseOut="hideMe();"&gt; <BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu2');"&gt;第二项&lt;/a&gt;&lt;br&gt;<BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu2');"&gt;第二项&lt;/a&gt;&lt;br&gt;<BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu2');"&gt;第二项&lt;/a&gt;&lt;br&gt;<BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu2');"&gt;第二项&lt;/a&gt;&lt;br&gt;<BR>&lt;/div&gt;<BR>&lt;!-- 第三开始 --&gt;<BR>&lt;div id="menu3" class="menu" onMouseOut="hideMe();"&gt; <BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu3');"&gt;第三项&lt;/a&gt;&lt;br&gt;<BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu3');"&gt;第三项&lt;/a&gt;&lt;br&gt;<BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu3');"&gt;第三项&lt;/a&gt;&lt;br&gt;<BR>&nbsp; &lt;a href="#;" onMouseOver="expandMenu('menu3');"&gt;第三项&lt;/a&gt;&lt;br&gt;<BR>&lt;/div&gt;<BR>&lt;!--可以复制上面的做出menu4 menu5 menu6....--&gt;<BR>&lt;p class="a"&gt; &lt;/p&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;<BR>&lt;/html&gt;</P><img src ="http://www.blogjava.net/Daniel2005/aggbug/25767.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2005-12-28 18:50 <a href="http://www.blogjava.net/Daniel2005/articles/25767.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FileSystemObject 示例代码</title><link>http://www.blogjava.net/Daniel2005/articles/21166.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Wed, 23 Nov 2005 10:35:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/21166.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/21166.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/21166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/21166.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/21166.html</trackback:ping><description><![CDATA[&nbsp; 
<P>下面就是示例代码：</P><PRE><CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' FileSystemObject </CODE>示例代码
<CODE>'Copyright 1998  Microsoft Corporation</CODE>。&nbsp;&nbsp;&nbsp;保留所有权利。<CODE> </CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Option Explicit</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' </CODE>对于代码质量：
<CODE>' 1) </CODE>下面的代码有许多字符串操作，用<CODE>"&amp;"</CODE>运算符来把短字符串连接在一起。由于
<CODE>'    </CODE>字符串连接是费时的，所以这是一种低效率的写代码方法。无论如何，它是
<CODE>'    </CODE>一种非常好维护的写代码方法，并且在这儿使用了这种方法，因为该程序执行
<CODE>'    </CODE>大量的磁盘操作，而磁盘操作比连接字符串所需的内存操作要慢得多。
<CODE>'    </CODE>记住这是示范代码，而不是产品代码。
<CODE>'</CODE>
<CODE>' 2) </CODE>使用了<CODE> "Option Explicit"</CODE>，因为访问声明过的变量，比访问未声明的变量要
<CODE>'    </CODE>稍微快一些。它还能阻止在代码中发生错误，例如，把<CODE> DriveTypeCDROM </CODE>误拼
<CODE>'    </CODE>成了<CODE> DriveTypeCDORM </CODE>。
<CODE>'</CODE>
<CODE>' 3) </CODE>为了使代码更可读，该代码中没有错误处理。虽然采取了防范措施，来保证代码
<CODE>'    </CODE>在普通情况下没有错误，但文件系统是不可预知的。在产品代码中，使用
<CODE>'    On Error Resume Next </CODE>和<CODE> Err </CODE>对象来捕获可能发生的错误。
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' </CODE>一些容易取得的全局变量
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>Dim TabStop</CODE>
<CODE>Dim NewLine</CODE>

<CODE>Const TestDrive = "C"</CODE>
<CODE>Const TestFilePath = "C:\Test"</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' </CODE>由<CODE> Drive.DriveType </CODE>返回的常数
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>Const DriveTypeRemovable = 1</CODE>
<CODE>Const DriveTypeFixed = 2</CODE>
<CODE>Const DriveTypeNetwork = 3</CODE>
<CODE>Const DriveTypeCDROM = 4</CODE>
<CODE>Const DriveTypeRAMDisk = 5</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' </CODE>由<CODE> File.Attributes </CODE>返回的常数
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>Const FileAttrNormal  = 0</CODE>
<CODE>Const FileAttrReadOnly = 1</CODE>
<CODE>Const FileAttrHidden = 2</CODE>
<CODE>Const FileAttrSystem = 4</CODE>
<CODE>Const FileAttrVolume = 8</CODE>
<CODE>Const FileAttrDirectory = 16</CODE>
<CODE>Const FileAttrArchive = 32 </CODE>
<CODE>Const FileAttrAlias = 64</CODE>
<CODE>Const FileAttrCompressed = 128</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' </CODE>用来打开文件的常数
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>Const OpenFileForReading = 1 </CODE>
<CODE>Const OpenFileForWriting = 2 </CODE>
<CODE>Const OpenFileForAppending = 8 </CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' <SPAN class=cfe><B>ShowDriveType</B></SPAN></CODE>
<CODE>' </CODE>目的：<CODE> </CODE>
<CODE>' </CODE>生成一个字符串，来描述给定<CODE> Drive </CODE>对象的驱动器类型。
<CODE>' </CODE>示范下面的内容
<CODE>' - Drive.DriveType</CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>Function ShowDriveType(Drive)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Dim S</CODE>
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;<CODE>Select Case Drive.DriveType</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Case DriveTypeRemovable</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = "Removable"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Case DriveTypeFixed</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = "Fixed"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Case DriveTypeNetwork</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = "Network"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Case DriveTypeCDROM</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = "CD-ROM"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Case DriveTypeRAMDisk</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = "RAM Disk"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Case Else</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = "Unknown"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>End Select</CODE>

&nbsp;&nbsp;&nbsp;<CODE>ShowDriveType = S</CODE>

<CODE>End Function</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' <SPAN class=cfe><B>ShowFileAttr</B></SPAN></CODE>
<CODE>' </CODE>目的：<CODE> </CODE>
<CODE>' </CODE>生成一个字符串，来描述文件或文件夹的属性。
<CODE>' </CODE>示范下面的内容
<CODE>' - File.Attributes</CODE>
<CODE>' - Folder.Attributes</CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Function ShowFileAttr(File) ' File </CODE>可以是文件或文件夹

&nbsp;&nbsp;&nbsp;<CODE>Dim S</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim Attr</CODE>
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;<CODE>Attr = File.Attributes</CODE>

&nbsp;&nbsp;&nbsp;<CODE>If Attr = 0 Then</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>ShowFileAttr = "Normal"</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>Exit Function</CODE>
&nbsp;&nbsp;&nbsp;<CODE>End If</CODE>

&nbsp;&nbsp;&nbsp;<CODE>If Attr And FileAttrDirectory  Then S = S &amp; "Directory "</CODE>
&nbsp;&nbsp;&nbsp;<CODE>If Attr And FileAttrReadOnly   Then S = S &amp; "Read-Only "</CODE>
&nbsp;&nbsp;&nbsp;<CODE>If Attr And FileAttrHidden     Then S = S &amp; "Hidden "</CODE>
&nbsp;&nbsp;&nbsp;<CODE>If Attr And FileAttrSystem     Then S = S &amp; "System "</CODE>
&nbsp;&nbsp;&nbsp;<CODE>If Attr And FileAttrVolume     Then S = S &amp; "Volume "</CODE>
&nbsp;&nbsp;&nbsp;<CODE>If Attr And FileAttrArchive    Then S = S &amp; "Archive "</CODE>
&nbsp;&nbsp;&nbsp;<CODE>If Attr And FileAttrAlias      Then S = S &amp; "Alias "</CODE>
&nbsp;&nbsp;&nbsp;<CODE>If Attr And FileAttrCompressed Then S = S &amp; "Compressed "</CODE>

&nbsp;&nbsp;&nbsp;<CODE>ShowFileAttr = S</CODE>

<CODE>End Function</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' <SPAN class=cfe><B>GenerateDriveInformation</B></SPAN></CODE>
<CODE>' </CODE>目的：<CODE> </CODE>
<CODE>' </CODE>生成一个字符串，来描述可用驱动器的当前状态。
<CODE>' </CODE>示范下面的内容
<CODE>'  - FileSystemObject.Drives </CODE>
<CODE>'  - Iterating the Drives collection</CODE>
<CODE>'  - Drives.Count</CODE>
<CODE>'  - Drive.AvailableSpace</CODE>
<CODE>'  - Drive.DriveLetter</CODE>
<CODE>'  - Drive.DriveType</CODE>
<CODE>'  - Drive.FileSystem</CODE>
<CODE>'  - Drive.FreeSpace</CODE>
<CODE>'  - Drive.IsReady</CODE>
<CODE>'  - Drive.Path</CODE>
<CODE>'  - Drive.SerialNumber</CODE>
<CODE>'  - Drive.ShareName</CODE>
<CODE>'  - Drive.TotalSize</CODE>
<CODE>'  - Drive.VolumeName</CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Function GenerateDriveInformation(FSO)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Dim Drives</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim Drive</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim S</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Set Drives = FSO.Drives</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = "Number of drives:" &amp; TabStop &amp; Drives.Count &amp; NewLine &amp; NewLine</CODE>

&nbsp;&nbsp;&nbsp;<CODE>' </CODE>构造报告的第一行。
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; String(2, TabStop) &amp; "Drive" </CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; String(3, TabStop) &amp; "File" </CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Total"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Free"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Available" </CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Serial" &amp; NewLine</CODE>

&nbsp;&nbsp;&nbsp;<CODE>' </CODE>构造报告的第二行。
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; "Letter"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Path"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Type"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Ready?"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Name"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "System"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Space"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Space"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Space"</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; "Number" &amp; NewLine</CODE>&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;<CODE>' </CODE>分隔行。
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; String(105, "-") &amp; NewLine</CODE>

&nbsp;&nbsp;&nbsp;<CODE>For Each Drive In Drives</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; Drive.DriveLetter</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; Drive.Path</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; ShowDriveType(Drive)</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; Drive.IsReady</CODE>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>If Drive.IsReady Then</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>If DriveTypeNetwork = Drive.DriveType Then</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; Drive.ShareName </CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>Else</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; Drive.VolumeName </CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>End If    </CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; Drive.FileSystem</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; Drive.TotalSize</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; Drive.FreeSpace</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; Drive.AvailableSpace</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TabStop &amp; Hex(Drive.SerialNumber)</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>End If</CODE>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Next  </CODE>

&nbsp;&nbsp;&nbsp;<CODE>GenerateDriveInformation = S</CODE>

<CODE>End Function</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' <SPAN class=cfe><B>GenerateFileInformation</B></SPAN></CODE>
<CODE>' </CODE>目的：<CODE> </CODE>
<CODE>' </CODE>生成一个字符串，来描述文件的当前状态。
<CODE>' </CODE>示范下面的内容
<CODE>'  - File.Path</CODE>
<CODE>'  - File.Name</CODE>
<CODE>'  - File.Type</CODE>
<CODE>'  - File.DateCreated</CODE>
<CODE>'  - File.DateLastAccessed</CODE>
<CODE>'  - File.DateLastModified</CODE>
<CODE>'  - File.Size</CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Function GenerateFileInformation(File)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Dim S</CODE>

&nbsp;&nbsp;&nbsp;<CODE>S = NewLine &amp; "Path:" &amp; TabStop &amp; File.Path</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Name:" &amp; TabStop &amp; File.Name</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Type:" &amp; TabStop &amp; File.Type</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Attribs:" &amp; TabStop &amp; ShowFileAttr(File)</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Created:" &amp; TabStop &amp; File.DateCreated</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Accessed:" &amp; TabStop &amp; File.DateLastAccessed</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Modified:" &amp; TabStop &amp; File.DateLastModified</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Size" &amp; TabStop &amp; File.Size &amp; NewLine</CODE>

&nbsp;&nbsp;&nbsp;<CODE>GenerateFileInformation = S</CODE>

<CODE>End Function</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' <SPAN class=cfe><B>GenerateFolderInformation</B></SPAN></CODE>
<CODE>' </CODE>目的：<CODE> </CODE>
<CODE>' </CODE>生成一个字符串，来描述文件夹的当前状态。
<CODE>' </CODE>示范下面的内容
<CODE>'  - Folder.Path</CODE>
<CODE>'  - Folder.Name</CODE>
<CODE>'  - Folder.DateCreated</CODE>
<CODE>'  - Folder.DateLastAccessed</CODE>
<CODE>'  - Folder.DateLastModified</CODE>
<CODE>'  - Folder.Size</CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Function GenerateFolderInformation(Folder)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Dim S</CODE>

&nbsp;&nbsp;&nbsp;<CODE>S = "Path:" &amp; TabStop &amp; Folder.Path</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Name:" &amp; TabStop &amp; Folder.Name</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Attribs:" &amp; TabStop &amp; ShowFileAttr(Folder)</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Created:" &amp; TabStop &amp; Folder.DateCreated</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Accessed:" &amp; TabStop &amp; Folder.DateLastAccessed</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Modified:" &amp; TabStop &amp; Folder.DateLastModified</CODE>
&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "Size:" &amp; TabStop &amp; Folder.Size &amp; NewLine</CODE>

&nbsp;&nbsp;&nbsp;<CODE>GenerateFolderInformation = S</CODE>

<CODE>End Function</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' <SPAN class=cfe><B>GenerateAllFolderInformation</B></SPAN></CODE>
<CODE>' </CODE>目的：<CODE> </CODE>
<CODE>' </CODE>生成一个字符串，来描述一个文件夹和所有文件及子文件夹的当前状态。
<CODE>' </CODE>示范下面的内容
<CODE>'  - Folder.Path</CODE>
<CODE>'  - Folder.SubFolders</CODE>
<CODE>'  - Folders.Count</CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Function GenerateAllFolderInformation(Folder)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Dim S</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim SubFolders</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim SubFolder</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim Files</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim File</CODE>

&nbsp;&nbsp;&nbsp;<CODE>S = "Folder:" &amp; TabStop &amp; Folder.Path &amp; NewLine &amp; NewLine</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Set Files = Folder.Files</CODE>

&nbsp;&nbsp;&nbsp;<CODE>If 1 = Files.Count Then</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; "There is 1 file" &amp; NewLine</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Else</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; "There are " &amp; Files.Count &amp; " files" &amp; NewLine</CODE>
&nbsp;&nbsp;&nbsp;<CODE>End If</CODE>

&nbsp;&nbsp;&nbsp;<CODE>If Files.Count &lt;&gt; 0 Then</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>For Each File In Files</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; GenerateFileInformation(File)</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>Next</CODE>
&nbsp;&nbsp;&nbsp;<CODE>End If</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Set SubFolders = Folder.SubFolders</CODE>

&nbsp;&nbsp;&nbsp;<CODE>If 1 = SubFolders.Count Then</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "There is 1 sub folder" &amp; NewLine &amp; NewLine</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Else</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine &amp; "There are " &amp; SubFolders.Count &amp; " sub folders" &amp; NewLine &amp; NewLine</CODE>
&nbsp;&nbsp;&nbsp;<CODE>End If</CODE>

&nbsp;&nbsp;&nbsp;<CODE>If SubFolders.Count &lt;&gt; 0 Then</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>For Each SubFolder In SubFolders</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; GenerateFolderInformation(SubFolder)</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>Next</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; NewLine</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>For Each SubFolder In SubFolders</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; GenerateAllFolderInformation(SubFolder)</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>Next</CODE>
&nbsp;&nbsp;&nbsp;<CODE>End If</CODE>

&nbsp;&nbsp;&nbsp;<CODE>GenerateAllFolderInformation = S</CODE>

<CODE>End Function</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' <SPAN class=cfe><B>GenerateTestInformation</B></SPAN></CODE>
<CODE>' </CODE>目的：<CODE> </CODE>
<CODE>' </CODE>生成一个字符串，来描述<CODE> C:\Test </CODE>文件夹和所有文件及子文件夹的当前状态。
<CODE>' </CODE>示范下面的内容
<CODE>'  - FileSystemObject.DriveExists</CODE>
<CODE>'  - FileSystemObject.FolderExists</CODE>
<CODE>'  - FileSystemObject.GetFolder</CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Function GenerateTestInformation(FSO)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Dim TestFolder</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim S</CODE>

&nbsp;&nbsp;&nbsp;<CODE>If Not FSO.DriveExists(TestDrive) Then Exit Function</CODE>
&nbsp;&nbsp;&nbsp;<CODE>If Not FSO.FolderExists(TestFilePath) Then Exit Function</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Set TestFolder = FSO.GetFolder(TestFilePath)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>GenerateTestInformation = GenerateAllFolderInformation(TestFolder) </CODE>

<CODE>End Function</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' <SPAN class=cfe><B>DeleteTestDirectory</B></SPAN></CODE>
<CODE>' </CODE>目的：<CODE> </CODE>
<CODE>' </CODE>清理<CODE> test </CODE>目录。
<CODE>' </CODE>示范下面的内容
<CODE>'  - FileSystemObject.GetFolder</CODE>
<CODE>'  - FileSystemObject.DeleteFile</CODE>
<CODE>'  - FileSystemObject.DeleteFolder</CODE>
<CODE>'  - Folder.Delete</CODE>
<CODE>'  - File.Delete</CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Sub DeleteTestDirectory(FSO)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Dim TestFolder</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim SubFolder</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim File</CODE></PRE><PRE>&nbsp;&nbsp;&nbsp;<A name=driveinfo></A>
&nbsp;&nbsp;&nbsp;<CODE>' </CODE>有两种方法可用来删除文件：

&nbsp;&nbsp;&nbsp;<CODE>FSO.DeleteFile(TestFilePath &amp; "\Beatles\OctopusGarden.txt")</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Set File = FSO.GetFile(TestFilePath &amp; "\Beatles\BathroomWindow.txt")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>File.Delete</CODE>&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;<CODE>' </CODE>有两种方法可用来删除文件夹：
&nbsp;&nbsp;&nbsp;<CODE>FSO.DeleteFolder(TestFilePath &amp; "\Beatles")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>FSO.DeleteFile(TestFilePath &amp; "\ReadMe.txt")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Set TestFolder = FSO.GetFolder(TestFilePath)</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TestFolder.Delete</CODE>

<CODE>End Sub</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' <SPAN class=cfe><B>CreateLyrics</B></SPAN></CODE>
<CODE>' </CODE>目的：<CODE> </CODE>
<CODE>' </CODE>在文件夹中创建两个文本文件。
<CODE>' </CODE>示范下面的内容
<CODE>'  - FileSystemObject.CreateTextFile</CODE>
<CODE>'  - TextStream.WriteLine</CODE>
<CODE>'  - TextStream.Write</CODE>
<CODE>'  - TextStream.WriteBlankLines</CODE>
<CODE>'  - TextStream.Close</CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Sub CreateLyrics(Folder)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Dim TextStream</CODE></PRE><PRE>&nbsp;&nbsp;&nbsp;<A name=deletefile></A>
&nbsp;&nbsp;&nbsp;<CODE>Set TextStream = Folder.CreateTextFile("OctopusGarden.txt")</CODE></PRE><PRE>&nbsp;&nbsp;&nbsp;<A name=createtextfilewritetofile></A>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.Write("Octopus' Garden ") ' </CODE>请注意，该语句不添加换行到文件中。
&nbsp;&nbsp;&nbsp;<CODE>TextStream.WriteLine("(by Ringo Starr)")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.WriteBlankLines(1)</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.WriteLine("I'd like to be under the sea in an octopus' garden in the shade,")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.WriteLine("He'd let us in, knows where we've been -- in his octopus' garden in the shade.")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.WriteBlankLines(2)</CODE>
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;<CODE>TextStream.Close</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Set TextStream = Folder.CreateTextFile("BathroomWindow.txt")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.WriteLine("She Came In Through The Bathroom Window (by Lennon/McCartney)")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.WriteLine("")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.WriteLine("She came in through the bathroom window protected by a silver spoon")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.WriteLine("But now she sucks her thumb and wanders by the banks of her own lagoon")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.WriteBlankLines(2)</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.Close</CODE>

<CODE>End Sub</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' <SPAN class=cfe><B>GetLyrics</B></SPAN></CODE>
<CODE>' </CODE>目的：<CODE> </CODE>
<CODE>' </CODE>显示<CODE> lyrics </CODE>文件的内容。
<CODE>' </CODE>示范下面的内容
<CODE>'  - FileSystemObject.OpenTextFile</CODE>
<CODE>'  - FileSystemObject.GetFile</CODE>
<CODE>'  - TextStream.ReadAll</CODE>
<CODE>'  - TextStream.Close</CODE>
<CODE>'  - File.OpenAsTextStream</CODE>
<CODE>'  - TextStream.AtEndOfStream</CODE>
<CODE>'  - TextStream.ReadLine</CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Function GetLyrics(FSO)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Dim TextStream</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim S</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim File</CODE>

&nbsp;&nbsp;&nbsp;<CODE>' </CODE>有多种方法可用来打开一个文本文件，和多种方法来从文件读取数据。
&nbsp;&nbsp;&nbsp;<CODE>' </CODE>这儿用了两种方法来打开文件和读取文件：

&nbsp;&nbsp;&nbsp;<CODE>Set TextStream = FSO.OpenTextFile(TestFilePath &amp; "\Beatles\OctopusGarden.txt", OpenFileForReading)</CODE></PRE><PRE>&nbsp;&nbsp;&nbsp;<A name=closereadfromfile></A>
&nbsp;&nbsp;&nbsp;<CODE>S = TextStream.ReadAll &amp; NewLine &amp; NewLine</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.Close</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Set File = FSO.GetFile(TestFilePath &amp; "\Beatles\BathroomWindow.txt")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Set TextStream = File.OpenAsTextStream(OpenFileForReading)</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Do </CODE>&nbsp;&nbsp;&nbsp;<CODE>While Not TextStream.AtEndOfStream</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>S = S &amp; TextStream.ReadLine &amp; NewLine</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Loop</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.Close</CODE>

&nbsp;&nbsp;&nbsp;<CODE>GetLyrics = S</CODE>
&nbsp;&nbsp;&nbsp;
<CODE>End Function</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' <SPAN class=cfe><B>BuildTestDirectory</B></SPAN></CODE>
<CODE>' </CODE>目的：<CODE> </CODE>
<CODE>' </CODE>创建一个目录分层结构来示范<CODE> FileSystemObject</CODE>。
<CODE>' </CODE>以这样的次序来创建分层结构：
<CODE>' C:\Test</CODE>
<CODE>' C:\Test\ReadMe.txt</CODE>
<CODE>' C:\Test\Beatles</CODE>
<CODE>' C:\Test\Beatles\OctopusGarden.txt</CODE>
<CODE>' C:\Test\Beatles\BathroomWindow.txt</CODE>
<CODE>' </CODE>示范下面的内容
<CODE>'  - FileSystemObject.DriveExists</CODE>
<CODE>'  - FileSystemObject.FolderExists</CODE>
<CODE>'  - FileSystemObject.CreateFolder</CODE>
<CODE>'  - FileSystemObject.CreateTextFile</CODE>
<CODE>'  - Folders.Add</CODE>
<CODE>'  - Folder.CreateTextFile</CODE>
<CODE>'  - TextStream.WriteLine</CODE>
<CODE>'  - TextStream.Close</CODE>
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Function BuildTestDirectory(FSO)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Dim TestFolder</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim SubFolders</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim SubFolder</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Dim TextStream</CODE>
&nbsp;&nbsp;&nbsp;<CODE>' </CODE>排除<CODE>(a)</CODE>驱动器不存在，或<CODE>(b)</CODE>要创建的目录已经存在的情况。

&nbsp;&nbsp;&nbsp;<CODE>If Not FSO.DriveExists(TestDrive) Then</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>BuildTestDirectory = False</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>Exit Function</CODE>
&nbsp;&nbsp;&nbsp;<CODE>End If</CODE>

&nbsp;&nbsp;&nbsp;<CODE>If FSO.FolderExists(TestFilePath) Then</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>BuildTestDirectory = False</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>Exit Function</CODE>
&nbsp;&nbsp;&nbsp;<CODE>End If</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Set TestFolder = FSO.CreateFolder(TestFilePath)</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Set TextStream = FSO.CreateTextFile(TestFilePath &amp; "\ReadMe.txt")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.WriteLine("My song lyrics collection")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>TextStream.Close</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Set SubFolders = TestFolder.SubFolders</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Set SubFolder = SubFolders.Add("Beatles")</CODE>
&nbsp;&nbsp;&nbsp;<CODE>CreateLyrics SubFolder</CODE>&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;<CODE>BuildTestDirectory = True</CODE>

<CODE>End Function</CODE>

<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>
<CODE>' </CODE><SPAN class=cfe><B>主程序</B></SPAN>
<CODE>' </CODE>首先，它创建一个<CODE> test </CODE>目录，以及一些子文件夹和文件。<CODE> </CODE>
<CODE>' </CODE>然后，它转储有关可用磁盘驱动器和<CODE> test </CODE>目录的某些信息，
<CODE>' </CODE>最后，清除<CODE> test </CODE>目录及其所有内容。
<CODE>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''</CODE>

<CODE>Sub Main</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Dim FSO</CODE>

&nbsp;&nbsp;&nbsp;<CODE>' </CODE>设立全局变量。
&nbsp;&nbsp;&nbsp;<CODE>TabStop = Chr(9)</CODE>
&nbsp;&nbsp;&nbsp;<CODE>NewLine = Chr(10)</CODE></PRE><PRE>&nbsp;&nbsp;&nbsp;<A name=folderinfo></A>
&nbsp;&nbsp;&nbsp;<CODE>Set FSO = CreateObject("Scripting.FileSystemObject")</CODE>

&nbsp;&nbsp;&nbsp;<CODE>If Not BuildTestDirectory(FSO) Then </CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>Print "Test directory already exists or cannot be created.  Cannot continue."</CODE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE>Exit Sub</CODE>
&nbsp;&nbsp;&nbsp;<CODE>End If</CODE>

&nbsp;&nbsp;&nbsp;<CODE>Print GenerateDriveInformation(FSO) &amp; NewLine &amp; NewLine</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Print GenerateTestInformation(FSO) &amp; NewLine &amp; NewLine</CODE>
&nbsp;&nbsp;&nbsp;<CODE>Print GetLyrics(FSO) &amp; NewLine &amp; NewLine</CODE>
&nbsp;&nbsp;&nbsp;<CODE>DeleteTestDirectory(FSO)</CODE>

<CODE>End Sub</CODE></PRE><!--Copyright_START--><img src ="http://www.blogjava.net/Daniel2005/aggbug/21166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2005-11-23 18:35 <a href="http://www.blogjava.net/Daniel2005/articles/21166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript基础（跑马灯）</title><link>http://www.blogjava.net/Daniel2005/articles/20947.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Tue, 22 Nov 2005 06:02:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/20947.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/20947.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/20947.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/20947.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/20947.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;html&gt;</P>
<P>&lt;head&gt;<BR>&lt;script language="Javascript"&gt;<BR>var scrtxt="怎么样！很酷吧！您也可以试试。"+"Here goes your message the visitors to your page will "+"look at for hours in pure fascination...";<BR>var lentxt=scrtxt.length;<BR>var width=100;<BR>var pos=1-width;<BR>function scroll(){<BR>&nbsp;pos++;<BR>&nbsp;var scroller="";<BR>&nbsp;if (pos==lentxt){<BR>&nbsp;pos=1-width;<BR>&nbsp;}<BR>&nbsp;if(pos&lt;0){<BR>&nbsp;for(var i=1;i&lt;=Math.abs(pos);i++){<BR>&nbsp;scroller=scroller+" ";<BR>&nbsp;}<BR>&nbsp;scroller=scroller+scrtxt.substring(0,width-i+1);<BR>&nbsp;}<BR>&nbsp;else{<BR>&nbsp;scroller=scroller+scrtxt.substring(pos,width+pos);<BR>&nbsp;}<BR>&nbsp;window.status=scroller;<BR>&nbsp;setTimeout("scroll()",100);<BR>}<BR>&lt;/script&gt;<BR>&lt;/head&gt;</P>
<P>&lt;body onLoad="scroll();return true;"&gt;<BR>这里可显示您的网页！<BR>&lt;/body&gt;</P>
<P>&lt;/html&gt;<BR></P><img src ="http://www.blogjava.net/Daniel2005/aggbug/20947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2005-11-22 14:02 <a href="http://www.blogjava.net/Daniel2005/articles/20947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript版的日期输入控件</title><link>http://www.blogjava.net/Daniel2005/articles/20233.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Thu, 17 Nov 2005 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/20233.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/20233.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/20233.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/20233.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/20233.html</trackback:ping><description><![CDATA[<P>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;<BR>&lt;HTML&gt;<BR>&lt;HEAD&gt;<BR>&lt;TITLE&gt; New Document &lt;/TITLE&gt;<BR>&lt;META NAME="Generator" CONTENT="Microsoft FrontPage 5.0"&gt;<BR>&lt;META NAME="Author" CONTENT="zhaoweiwei"&gt;<BR>&lt;META NAME="Keywords" CONTENT="birthday_input"&gt;<BR>&lt;META NAME="Description" CONTENT="日起输入控件"&gt;<BR>&lt;script&gt;<BR>function showdb()&nbsp; //显示控件/隐藏空间<BR>{<BR>&nbsp; var CurrentDate=new Date();<BR>&nbsp; var CYear=CurrentDate.getFullYear();<BR>&nbsp; var CMonth=CurrentDate.getMonth();<BR>&nbsp; var CDay=CurrentDate.getDay();<BR>&nbsp; <BR>&nbsp; var a=document.getElementById("input_birth");<BR>&nbsp; <BR>&nbsp; var obj_year=document.getElementById("year");&nbsp; //当展开控件时自动取到当前时间（客户端）<BR>&nbsp; obj_year.innerText=CYear;<BR>&nbsp; var obj_month=document.getElementById("month");<BR>&nbsp; obj_month.innerText=CMonth+1;<BR>&nbsp; <BR>&nbsp; var s=new Date(CYear,CMonth,1);<BR>&nbsp; var startDay=s.getDay();&nbsp;&nbsp; //日期起始数字<BR>&nbsp; var numDays=numberOfDays(CMonth,CYear);&nbsp; //本月天数<BR>&nbsp; var day=document.getElementsByName("day");<BR>&nbsp; for(var j=1;j&lt;=numDays;j++)&nbsp; //插入日期<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; day[startDay+j-1].innerText=j;<BR>&nbsp; }</P>
<P>&nbsp; <BR>&nbsp; if(a.style.visibility=='visible')<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; a.style.visibility='hidden';<BR>&nbsp; }<BR>&nbsp; else<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; a.style.visibility='visible';<BR>&nbsp; }<BR>&nbsp; <BR>&nbsp; <BR>}<BR>function addyear()<BR>{</P>
<P>&nbsp;&nbsp; var obj_year=document.getElementById("year");<BR>&nbsp;&nbsp; var obj_month=document.getElementById("month");</P>
<P>&nbsp;&nbsp; var num_year=obj_year.innerText;<BR>&nbsp;&nbsp; obj_year.innerText=parseInt(num_year)+1;&nbsp; //年数增加<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; displayCalendar(obj_month.innerText-1,obj_year.innerText);<BR>&nbsp;&nbsp; </P>
<P>&nbsp;&nbsp; <BR>}<BR>function plusyear()<BR>{<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; var obj_year=document.getElementById("year");<BR>&nbsp;&nbsp; var obj_month=document.getElementById("month");<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; var num_year=obj_year.innerText;<BR>&nbsp;&nbsp; obj_year.innerText=parseInt(num_year)-1;&nbsp; //年数减少<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; displayCalendar(obj_month.innerText-1,obj_year.innerText);<BR>&nbsp;&nbsp; </P>
<P>&nbsp;&nbsp; <BR>}<BR>function addmonth()<BR>{<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; var obj_month=document.getElementById("month");<BR>&nbsp;&nbsp; var obj_year=document.getElementById("year");<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; if(parseInt(obj_month.innerText)&gt;=12)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //月数增加到12时，年数相应增加1，月数从1开始<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj_month.innerText="0";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj_year=document.getElementById("year");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var num_year=obj_year.innerText;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj_year.innerText=parseInt(num_year)+1;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; var num_month=obj_month.innerText;<BR>&nbsp;&nbsp; obj_month.innerText=parseInt(num_month)+1;&nbsp; //月数增加<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; displayCalendar(obj_month.innerText-1,obj_year.innerText);</P>
<P>&nbsp;&nbsp; </P>
<P>&nbsp;&nbsp; <BR>}<BR>function plusmonth()<BR>{<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; var obj_month=document.getElementById("month");<BR>&nbsp;&nbsp; var obj_year=document.getElementById("year");<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; if(parseInt(obj_month.innerText)&lt;=1)&nbsp;&nbsp;&nbsp; //月数减少到1时，年数相应减少1，月数从12开始<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj_month.innerText="13";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj_year=document.getElementById("year");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var num_year=obj_year.innerText;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj_year.innerText=parseInt(num_year)-1;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; var num_month=obj_month.innerText;<BR>&nbsp;&nbsp; obj_month.innerText=parseInt(num_month)-1;&nbsp; //月数减少<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; displayCalendar(obj_month.innerText-1,obj_year.innerText);</P>
<P>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>}</P>
<P>function numberOfDays(month,year)&nbsp; //取得每月天数，判断平年闰年<BR>{<BR>&nbsp; var numDays=new Array(31,28,31,30,31,30,31,31,30,31,30,31);<BR>&nbsp; n=numDays[month];<BR>&nbsp; if(month==1&amp;&amp;year%4==0) ++n;<BR>&nbsp; return n;<BR>}</P>
<P>function displayCalendar(month,year)<BR>{</P>
<P>&nbsp; var d=new Date(year,month,1);<BR>&nbsp; var startDay=d.getDay();&nbsp;&nbsp; //日期起始数字<BR>&nbsp; var numDays=numberOfDays(month,year);&nbsp; //本月天数<BR>&nbsp; <BR>&nbsp; var day=document.getElementsByName("day");<BR>&nbsp; for(var i=0;i&lt;day.length;i++)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; day[i].innerText="";<BR>&nbsp; }<BR>&nbsp; for(var j=1;j&lt;=numDays;j++)&nbsp; //插入日期<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; day[startDay+j-1].innerText=j;<BR>&nbsp; }<BR>&nbsp; <BR>}<BR>function writeDate(n)<BR>{<BR>&nbsp;&nbsp; document.writeln("&lt;H3 ALIGN='CENTER'&gt;"+n+"&lt;/H3&gt;");<BR>}</P>
<P>function add_day(year,month,day)<BR>{<BR>&nbsp;&nbsp; bd.birthdate.value=year+"-"+month+"-"+day;<BR>}<BR>&lt;/script&gt;<BR>&lt;/HEAD&gt;</P>
<P><BR>&lt;BODY&gt;<BR>&lt;form name="bd"&gt;<BR>&lt;input type="text" name="birthdate" size="20" readOnly&gt;&lt;input type="button" value="..." onclick="showdb()"&gt;<BR>&lt;/form&gt;<BR>&lt;div id="input_birth" name="input_birth" style="visibility:hidden; width:239; height:128"&gt;<BR>&lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" style="cursor:hand" bordercolor="#111111" width="100%"&nbsp; height="26"&gt;<BR>&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;td width="100%" colspan="3" height="26"&gt;&amp;nbsp;&amp;nbsp; &lt;input type="button" value="&amp;lt;&amp;lt;" onclick="plusyear()" name="plusyear"&gt; <BR>&nbsp;&nbsp;&nbsp; &lt;input type="button" value="&amp;lt;" onclick="plusmonth()" name="plusmonth"&gt;&amp;nbsp; &lt;font id="year"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/font&gt;年&lt;font id="month"&gt;&lt;/font&gt;月 <BR>&nbsp;&nbsp;&nbsp; &lt;input type="button" value="&amp;gt;" onclick="addmonth()" name="addmonth"&gt; <BR>&nbsp;&nbsp;&nbsp; &lt;input type="button" value="&amp;gt;&amp;gt;" name="addyear" onclick="addyear()"&gt;&lt;/td&gt;<BR>&nbsp; &lt;/tr&gt;<BR>&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;td width="100%" colspan="3" height="119" valign="top"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center"&gt;&lt;b&gt;&lt;font color="#FF0000"&gt;日&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center"&gt;&lt;b&gt;一&lt;/b&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center"&gt;&lt;b&gt;二&lt;/b&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center"&gt;&lt;b&gt;三&lt;/b&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center"&gt;&lt;b&gt;四&lt;/b&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center"&gt;&lt;b&gt;五&lt;/b&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center"&gt;&lt;b&gt;&lt;font color="#FF0000"&gt;六&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="14%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%" align="center" id="day" onclick="add_day(year.innerText,month.innerText,this.innerText)"&gt;　&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/table&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/td&gt;<BR>&nbsp; &lt;/tr&gt;<BR>&nbsp; &lt;tr&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;td width="33%" height="1"&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;td width="33%" height="1"&gt;&lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;td width="34%" height="1"&gt;&lt;/td&gt;<BR>&nbsp; &lt;/tr&gt;<BR>&lt;/table&gt;<BR>&lt;/div&gt;<BR>&lt;/BODY&gt;<BR>&lt;/HTML&gt;<BR></P><img src ="http://www.blogjava.net/Daniel2005/aggbug/20233.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2005-11-17 14:27 <a href="http://www.blogjava.net/Daniel2005/articles/20233.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>innerHTML,outerHTML,innerText,outerText之间的区别</title><link>http://www.blogjava.net/Daniel2005/articles/20230.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Thu, 17 Nov 2005 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/20230.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/20230.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/20230.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/20230.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/20230.html</trackback:ping><description><![CDATA[&lt;div id="div"&gt;&lt;input name="button" value="Button" type="button"&gt;&lt;font color="green"&gt;&lt;h2&gt;This is a DIV!&lt;/h2&gt;&lt;/font&gt;&lt;/div&gt;<BR>&lt;input name="innerHTML" value="innerHTML" type="button" OnClick="alert(div.innerHTML);"&gt;<BR>&lt;input name="outerHTML" value="outerHTML" type="button" OnClick="alert(div.outerHTML);"&gt;<BR>&lt;input name="innerText" value="innerText" type="button" OnClick="alert(div.innerText);"&gt;<BR>&lt;input name="outerText" value="outerText" type="button" OnClick="alert(div.outerText);"&gt;<BR>用上面的代码Test！！！！！！<BR><img src ="http://www.blogjava.net/Daniel2005/aggbug/20230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2005-11-17 14:22 <a href="http://www.blogjava.net/Daniel2005/articles/20230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用JavaScript编写的页面加载函数！</title><link>http://www.blogjava.net/Daniel2005/articles/20222.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Thu, 17 Nov 2005 04:41:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/20222.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/20222.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/20222.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/20222.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/20222.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将下面一段代码放到&lt;Body&gt;和&lt;/Body&gt;之间便可实现一个简单的页面加载了！<BR>&lt;div id='mydiv'style=' FONT-FAMILY: Arial; '&gt;<BR>"_"<BR>&nbsp;&lt;/div&gt;<BR>&lt;script&gt;<BR>mydiv.innerText = ''; <BR>&lt;/script&gt;<BR>&lt;script language="javascript"&gt;<BR>var dots = 0;var dotmax = 10;<BR>function ShowWait()<BR>{var output;<BR>output='Loading';<BR>dots++;<BR>if(dots&gt;=dotmax)dots=1;<BR>for(var x=0;x&lt;dots;x++)<BR>{output+='-&nbsp; ';<BR>}<BR>mydiv.innerText=output;<BR>}<BR>function StartShowWait()<BR>{mydiv.style.visibility = 'visible';<BR>window.setInterval('ShowWait()',1000);<BR>}<BR>function HideWait()<BR>{mydiv.style.display='none';<BR>window.clearInterval();<BR>}</P>
<P>StartShowWait();<BR>Response.Flush()<BR>Thread.Sleep(10500)<BR>&lt;/script&gt;<BR><BR>&nbsp;&nbsp;&nbsp;也可将上面的代码编写成一个Sub放入到ASP.NET中也可以实现！！！</P><img src ="http://www.blogjava.net/Daniel2005/aggbug/20222.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2005-11-17 12:41 <a href="http://www.blogjava.net/Daniel2005/articles/20222.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VBScript中的eval()函数</title><link>http://www.blogjava.net/Daniel2005/articles/20070.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Wed, 16 Nov 2005 07:41:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/20070.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/20070.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/20070.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/20070.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/20070.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Javascript中的eval函数让我们可以很方便地操作一系列变量（a1,a2,a3,……）。自从VBScript 5.0之后，我们也可以ASP中使用这个功能了！<BR>　　很感谢编程爱好者论坛上的朋友提出的难题，让我多学到了这个很有用的函数（http://www.programfan.com/club/showbbs.asp?id=105034）。<BR>　　和Javascript一样，eval()也是计算其中字符串所代表变量的值并返回，如eval("a"&amp;"1")返回a1的值。不过这个eval()的功能和Javascript比起来还是有差距的。我试了一下，发现主要有以下一点：VBScript中的eval函数只能读取返回值而不能为其中所代表变量赋值，即我们不可以用eval("a"&amp;"1")为a1赋值。<BR>　　那位朋友提出的问题，是将接收到的一个长字符串（"2005081200507120050612005051"）按7个字符为一组依次赋给一系列变量a1,a2,a3,…。 <BR>　　如果是赋值予数组，那我们可以建立动态数组：<BR>&lt;%<BR>use="2005081200507120050612005051"<BR>dim myarray()<BR>reDim myarray(0)<BR>for i=1 to Len(use) step 7<BR>reDim myarray(ubound(myarray)+1) '将数组容量加1<BR>myarray(ubound(myarray))=mid(use,i,7)<BR>next<BR>%&gt;<BR>　　现在要赋值给系列变量，我们得引入另外一个函数execute()。这个函数的作用是将其中字符串视为VBScript语句执行，如execute("a"&amp;"1="&amp;100")是执行以下语句：a1=100。<BR>　　据此，我们可以按那位朋友的要求写出以下代码：<BR>&lt;%<BR>use="2005081200507120050612005051"<BR>dim n '作为变量a后的索引1,2,3,…<BR>n=1<BR>for i=1 to Len(use) step 7<BR>execute "dim a"&amp;CStr(n)&amp;":a"&amp;CStr(n)&amp;"="&amp;mid(use,i,7)<BR>'执行语句dim a:a1=mid(use,i,7)<BR>n=n+1<BR>next<BR>%&gt;<img src ="http://www.blogjava.net/Daniel2005/aggbug/20070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2005-11-16 15:41 <a href="http://www.blogjava.net/Daniel2005/articles/20070.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Window.open() 全攻略</title><link>http://www.blogjava.net/Daniel2005/articles/20060.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Wed, 16 Nov 2005 06:59:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/20060.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/20060.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/20060.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/20060.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/20060.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 经常上网的朋友可能会到过这样一些网站，一进入首页立刻会弹出一个窗口，或者按一个连接或按钮弹出，通常在这个窗口里会显示一些注意事项、版权信息、警告、欢迎光顾之类的话或者作者想要特别提示的信息。其实制作这样的页面效果非常的容易，只要往该页面的HTML里加入几段Javascript代码即可实现。下面俺就带您剖析它的奥秘。 
<P>【1、最基本的弹出窗口代码】 </P>
<P>其实代码非常简单： </P>
<P>&lt;SCRIPT LANGUAGE="javascript"&gt; <BR>&lt;!-- <BR>window.open ('page.html') <BR>--&gt; <BR>&lt;/SCRIPT&gt; </P>
<P>因为这是一段javascripts代码，所以它们应该放在&lt;SCRIPT LANGUAGE="javascript"&gt;标签和&lt;/script&gt;之间。&lt;!-- 和 --&gt;是对一些版本低的浏览器起作用，在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。 window.open ('page.html') 用于控制弹出新的窗口page.html，如果page.html不与主窗口在同一路径下，前面应写明路径，绝对路径(http://)和相对路径(.. /)均可。 用单引号和双引号都可以，只是不要混用。 这一段代码可以加入HTML的任意位置，&lt;head&gt;和&lt;/head&gt;之间可以，&lt;body&gt;间&lt;/body&gt;也可以，越前越早执行，尤其是页面代码长，又想使页面早点弹出就尽量往前放。 </P>
<P>【2、经过设置后的弹出窗口】 </P>
<P>下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。 我们来定制这个弹出的窗口的外观，尺寸大小，弹出的位置以适应页面的具体情况。 </P>
<P>&lt;SCRIPT LANGUAGE="javascript"&gt; <BR>&lt;!-- <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') <BR>//写成一行 <BR>--&gt; <BR>&lt;/SCRIPT&gt; </P>
<P>参数解释： </P>
<P>&lt;SCRIPT LANGUAGE="javascript"&gt; js脚本开始； <BR>window.open 弹出新窗口的命令； <BR>'page.html' 弹出窗口的文件名； <BR>'newwindow' 弹出窗口的名字（不是文件名），非必须，可用空''代替； <BR>height=100 窗口高度； <BR>width=400 窗口宽度； <BR>top=0 窗口距离屏幕上方的象素值； <BR>left=0 窗口距离屏幕左侧的象素值； <BR>toolbar=no 是否显示工具栏，yes为显示； <BR>menubar，scrollbars 表示菜单栏和滚动栏。 <BR>resizable=no 是否允许改变窗口大小，yes为允许； <BR>location=no 是否显示地址栏，yes为允许； <BR>status=no 是否显示状态栏内的信息（通常是文件已经打开），yes为允许； <BR>&lt;/SCRIPT&gt; js脚本结束 </P>
<P>【3、用函数控制弹出窗口】 </P>
<P>下面是一个完整的代码。 <BR>&lt;html&gt; <BR>&lt;head&gt; <BR>&lt;script LANGUAGE="JavaScript"&gt; <BR>&lt;!-- <BR>function openwin() { <BR>window.open ("page.html", "newwindow", "height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") </P>
<P>//写成一行 <BR>} <BR>//--&gt; <BR>&lt;/script&gt; <BR>&lt;/head&gt; <BR>&lt;body onload="openwin()"&gt; <BR>...任意的页面内容... <BR>&lt;/body&gt; <BR>&lt;/html&gt; </P>
<P>这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。怎么调用呢？ </P>
<P>方法一：&lt;body onload="openwin()"&gt; 浏览器读页面时弹出窗口； <BR>方法二：&lt;body onunload="openwin()"&gt; 浏览器离开页面时弹出窗口； <BR>方法三：用一个连接调用： <BR>&lt;a href="#" onClick="openwin()"&gt;打开一个窗口 &lt;/a&gt;注意：使用的“#”是虚连接。 <BR>方法四：用一个按钮调用： <BR>&lt;input type="button" onclick="openwin()" value="打开窗口"&gt; </P>
<P>【4、同时弹出2个窗口】 </P>
<P>对源代码稍微改动一下： <BR>&lt;script LANGUAGE="JavaScript"&gt; <BR>&lt;!-- <BR>function openwin() { <BR>window.open ("page.html", "newwindow", "height=100, width=100, top=0, left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") <BR>//写成一行 <BR>window.open ("page2.html", "newwindow2", "height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") <BR>//写成一行 <BR>} <BR>//--&gt; <BR>&lt;/script&gt; </P>
<P>为避免弹出的2个窗口覆盖，用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。 <BR>注意：2个窗口的name(newwindows和newwindow2)不要相同，或者干脆全部为空。 </P>
<P>OK？ </P>
<P>【5、主窗口打开文件1.htm，同时弹出小窗口page.html】 </P>
<P>如下代码加入主窗口&lt;head&gt;区： </P>
<P>&lt;script language="javascript"&gt;</P>
<P><BR>//写成一行 <BR>OpenWindow.document.write("&lt;TITLE&gt;例子&lt;/TITLE&gt;") <BR>OpenWindow.document.write("&lt;BODY BGCOLOR=#ffffff&gt;") <BR>OpenWindow.document.write("&lt;h1&gt;Hello!&lt;/h1&gt;") <BR>OpenWindow.document.write("New window opened!") <BR>OpenWindow.document.write("&lt;/BODY&gt;") <BR>OpenWindow.document.write("&lt;/HTML&gt;") <BR>OpenWindow.document.close() <BR>} <BR>&lt;/SCRIPT&gt; <BR>&lt;/head&gt; <BR>&lt;body&gt; <BR>打开一个窗口 <BR>&lt;input type="button" onclick="openwin()" value="打开窗口"&gt; <BR>&lt;/body&gt; <BR>&lt;/html&gt; </P>
<P>看看 OpenWindow.document.write()里面的代码不就是标准的HTML吗？只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用OpenWindow.document.close()结束啊。 </P>
<P>【6、终极应用--弹出的窗口之Cookie控制】 </P>
<P>回想一下，上面的弹出窗口虽然酷，但是有一点小毛病(沉浸在喜悦之中，一定没有发现吧？)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页)， 那么每次刷新这个页面，窗口都会弹出一次，是不是非常烦人？:-( </P>
<P>有解决的办法吗？Yes! ;-) Follow me. </P>
<P>我们使用cookie来控制一下就可以了。 </P>
<P>首先，将如下代码加入主页面HTML的&lt;HEAD&gt;区： </P>
<P>&lt;script&gt; <BR>function openwin(){ <BR>window.open("page.html","","width=200,height=200") <BR>} <BR>function get_cookie(Name) { <BR>var search = Name + "=" <BR>var returnvalue = ""; <BR>if (document.cookie.length &gt; 0) { <BR>offset = document.cookie.indexOf(search) <BR>if (offset != -1) { <BR>offset += search.length <BR>end = document.cookie.indexOf(";", offset); <BR>if (end == -1) <BR>end = document.cookie.length; <BR>returnvalue=unescape(document.cookie.substring(offset, end)) <BR>} <BR>} <BR>return returnvalue; <BR>} </P>
<P>function loadpopup(){ <BR>if (get_cookie('popped')==''){ <BR>openwin() <BR>document.cookie="popped=yes" <BR>} <BR>} </P>
<P>&lt;/script&gt; </P>
<P>然后，用&lt;body onload="loadpopup()"&gt;（注意不是openwin而是loadpop啊！） 替换主页面中原有的&lt;BODY&gt;这一句即可。你可以试着刷新一下这个页面或重新进入该页面，窗口再也不会弹出了。真正的Pop-Only-Once！ </P>
<P>写到这里弹出窗口的制作和应用技巧基本上算是完成了 </P><img src ="http://www.blogjava.net/Daniel2005/aggbug/20060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2005-11-16 14:59 <a href="http://www.blogjava.net/Daniel2005/articles/20060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个完美的日历控件</title><link>http://www.blogjava.net/Daniel2005/articles/20041.html</link><dc:creator>泌鲁沙夫</dc:creator><author>泌鲁沙夫</author><pubDate>Wed, 16 Nov 2005 04:54:00 GMT</pubDate><guid>http://www.blogjava.net/Daniel2005/articles/20041.html</guid><wfw:comment>http://www.blogjava.net/Daniel2005/comments/20041.html</wfw:comment><comments>http://www.blogjava.net/Daniel2005/articles/20041.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Daniel2005/comments/commentRss/20041.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Daniel2005/services/trackbacks/20041.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 此控件的特点是：只需要引入一个js文件，调用 setDay方法即可，非常方便。&nbsp;Part 1 JS文件源码var&nbsp;bMoveable=true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置日历是否可以拖动var&nbsp;_VersionInfo="Version:2.0&amp;#13;2.0作者:w...&nbsp;&nbsp;<a href='http://www.blogjava.net/Daniel2005/articles/20041.html'>阅读全文</a><img src ="http://www.blogjava.net/Daniel2005/aggbug/20041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Daniel2005/" target="_blank">泌鲁沙夫</a> 2005-11-16 12:54 <a href="http://www.blogjava.net/Daniel2005/articles/20041.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>