﻿<?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-大道至简-文章分类-JavaScript</title><link>http://www.blogjava.net/hellotony/category/10503.html</link><description>道生一，一生二，二生三，三生万物。万物负阴而抱阳，冲气以为和。</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:36:19 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:36:19 GMT</pubDate><ttl>60</ttl><item><title>IE &amp; Firefox 兼容性问题（网络搜集）</title><link>http://www.blogjava.net/hellotony/articles/55791.html</link><dc:creator>Tony</dc:creator><author>Tony</author><pubDate>Thu, 29 Jun 2006 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/hellotony/articles/55791.html</guid><wfw:comment>http://www.blogjava.net/hellotony/comments/55791.html</wfw:comment><comments>http://www.blogjava.net/hellotony/articles/55791.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellotony/comments/commentRss/55791.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellotony/services/trackbacks/55791.html</trackback:ping><description><![CDATA[
		<font color="black" size="2">1. 对象问题</font>
		<font size="2">
				<br />
		</font>
		<font color="Green" size="2">1.1 Form对象</font>
		<font size="2">
				<br />现有问题：<br />现有代码这获得form对象通过document.forms("formName")，这样使用在IE 能接受，MF 不能。<br />解决方法：<br />改用 作为下标运算。改为document.forms["formName"]<br />备注<br />上述的改用 作为下标运算中的formName是id而name<br /><br /></font>
		<font color="green" size="2">1.2 HTML对象</font>
		<font size="2">
				<br />现有问题：<br />在 IE 中，HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。<br />document.all("itemName")或者document.all("itemId")<br />解决方法：<br />使用对象ID作为对象变量名<br />document.getElementById("itemId")<br />备注<br />document.all是IE自定义的方法，所以请大家尽量不使用。<br />还有一种方式，在IE和MF都可以使用<br />var f = document.forms["formName "];<br />var o = f. itemId;<br /><br /></font>
		<font color="Green" size="2">1.3 DIV对象</font>
		<font size="2">
				<br />现有问题：<br />在 IE 中，DIV对象可以使用ID作为对象变量名直接使用。在 MF 中不能。<br />DivId.style.display = "none"<br />解决方法：<br />document.getElementById("DivId").style.display = "none"<br />备注<br />获得对象的方法不管是不是DIV对象，都使用getElementById方法。参见1.2<br /><br /><br /></font>
		<font color="Green" size="2">1.4 关于frame</font>
		<font size="2">
				<br />现有问题<br />在 IE中 可以用window.testFrame取得该frame，mf中不行<br />解决方法<br />在frame的使用方面MF和IE的最主要的区别是：<br />如果在frame标签中书写了以下属性：<br /><br />那么IE可以通过id或者name访问这个frame对应的window对象<br />而mf只可以通过name来访问这个frame对应的window对象<br />例如如果上述frame标签写在最上层的window里面的htm里面，那么可以这样访问<br />IE： window.top.frameId或者window.top.frameName来访问这个window对象<br />MF：只能这样window.top.frameName来访问这个window对象<br />另外，在mf和ie中都可以使用window.top.document.getElementById("frameId")来访问frame标签<br />并且可以通过window.top.document.getElementById("testFrame").src = 'xx.htm'来切换frame的内容<br />也都可以通过window.top.frameName.location = 'xx.htm'来切换frame的内容<br /><br /></font>
		<font color="Green" size="2">1.5 窗口</font>
		<font size="2">
				<br />现有问题<br />IE中可以通过showModalDialog和showModelessDialog打开模态和非模态窗口，但是MF不支持。<br />解决办法<br />直接使用window.open(pageURL,name,parameters)方式打开新窗口。<br />如果需要传递参数，可以使用frame或者iframe。<br /><br /></font>
		<font color="black" size="2">2. 总结</font>
		<font size="2">
				<br />
		</font>
		<font color="Green" size="2">2.1 在JS中定义各种对象变量名时，尽量使用id，避免使用name。</font>
		<font size="2">
				<br />在 IE 中，HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能，所以在平常使用时请尽量使用id，避免只使用name，而不使用id。<br /><br /></font>
		<font color="Green" size="2">2.2 变量名与某 HTML 对象 id 相同的问题</font>
		<font size="2">
				<br />现有问题<br />在 MF 中，因为对象 id 不作为 HTML 对象的名称，所以可以使用与 HTML 对象 id 相同的变量名，IE 中不能。<br />解决方法<br />在声明变量时，一律加上 var ，以避免歧义，这样在 IE 中亦可正常运行。<br />此外，最好不要取与 HTML 对象 id 相同的变量名，以减少错误。<br /><br /><br /><span class="tpc_content">1. document.all<br />    Firefox可以兼容document.all， 但会生成一条警告。可以用getElementById("*") 或者 getElementByTagName("*)来代替<br />   不过对于document.all.length等属性，则完全不兼容。<br />2. parentElement<br />    这个也不兼容。比方说， obj.parentElement.name 则应改成 obj.parentNode.attributes.getNamedItem("name").nodeValue （不知道如何写得更简洁些）<br />3. event<br />    W3C不支持windows.event<br />     比方说: <br />       在IE里面<br />               &lt;div class="menu" id="menu" onclick="onMenuClick(); "&gt;.....&lt;/div&gt;<br />           function onMenuClick()<br />          {<br />              collapseMenu(event.srcElement);<br />           } <br />       工作正常。不过在Firefox中，则改成：<br /><br />              &lt;div class="menu" id="menu" onclick="onMenuClick(event); "&gt;<br />            function onMenuClick(evt)<br />          {<br />              if(evt == null)<br />                      evt = window.event; // For IE<br />               var srcElement = evt.srcElement? evt.srcElement : evt.target;  // IE使用srcElement, 而Firefox使用target<br />              collapseMenu(srcElement);<br />}<br /><br /><br /></span>IE和FIREFOX在解析CSS方面的区别 </font>
		<div class="blog-content">
				<ol>
						<li>
								<font size="2">
										<strong>对高度的解析</strong>
								</font>
								<p>
										<font size="2">IE：将根据内容的高度变化，包括未定义高度的图片内容，即使定义了高度，当内容超过高度时，将使用实际高度</font>
								</p>
								<p>
										<font size="2">Firefox：没有定义高度时，如果内容中包括了图片内容，MF的高度解析是根据印刷标准，这样就会造成和实际内容高度不符合的情况；当定义了高度，但是内容超过高度时，内容会超出定义的高度，但是区域使用的样式不会变化，造成样式错位。</font>
								</p>
								<p>
										<font size="2">
												<strong>结论：</strong>大家在可以确定内容高度的情况下最好定义高度，如果真的没有办法定义高度，最好不用使用边框样式，否则样式肯定会出现混乱！</font>
								</p>
						</li>
						<li>
								<font size="2">
										<strong>img对象alt和title的解析</strong>
								</font>
								<p>
										<font size="2">alt：当照片不存在或者load错误时的提示；</font>
								</p>
								<p>
										<font size="2">title：照片的tip说明。</font>
								</p>
								<p>
										<font size="2">在IE中如果没有定义title，alt也可以作为img的tip使用，但是在MF中，两者完全按照标准中的定义使用</font>
								</p>
								<p>
										<font size="2">
												<strong>结论：</strong>大家在定义img对象时，最后将alt和title对象都写全，保证在各种浏览器中都能正常使用</font>
								</p>
						</li>
						<li>
								<p>
										<font size="2">
												<strong>其他的细节差别</strong>
										</font>
								</p>
								<p>
										<font size="2">当你在写css的时候，特别是用float: left（或right）排列一窜图片时，会发现在firefox里面正常而IE里面有问题。无论你用margin:0,还是border: 0来约束，都无济于事。</font>
								</p>
								<p>
										<font size="2">其实这里还有另外一个问题，就是IE对于空格的处理，firefox是忽略的而IE对于块与块之间的空格是处理的。也就是说一个div结束后要紧接着一个div写，中间不要有回车或者空格。不然也许会有问题，比如3px的偏差，而且这个原因很难发现。</font>
								</p>
								<p>
										<font size="2">非常不走运的是我又碰到了这样的问题，多个img标签连着，然后定义的float: left，希望这些图片可以连起来。但是结果在firefox里面正常而IE里面显示的每个img都相隔了3px。我把标签之间的空格都删除都没有作用。</font>
								</p>
								<p>
										<font size="2">后来的解决方法是在img外面套li，并且对li定义margin: 0，这样就解决了IE和firefox的显示偏差。IE对于一些模型的解释会产生很多错误问题，只有多多尝试才能发现原因。</font>
								</p>
						</li>
				</ol>
		</div>
		<p>
				<font size="2">这只是一些简单的区别,在做布局和CSS设计时候可以综合考虑,但最为有效与简单的解决兼容问题还是用TABLE表格,表格在兼容性方面有着不错的表现.</font>
		</p>
		<p>
				<font size="2">另外在模版的JS设计的时候也需要考虑两者对代码的兼容,以下是对IE与FIREFOX中JS的一些测试:</font>
		</p>
		<p>
				<font size="2">以下以 IE 代替 Internet Explorer，以 MF 代替 Mozilla Firefox</font>
		</p>
		<p>
				<font size="2">1. document.form.item 问题<br />    (1)现有问题：<br />        现有代码中存在许多 document.formName.item("itemName") 这样的语句，不能<br />        在 MF 下运行<br />    (2)解决方法：<br />        改用 document.formName.elements["elementName"]<br />    (3)其它<br />        参见 2</font>
		</p>
		<p>
				<font size="2">2. 集合类对象问题<br />    (1)现有问题：<br />        现有代码中许多集合类对象取用时使用 ()，IE 能接受，MF 不能。<br />    (2)解决方法：<br />        改用 [] 作为下标运算。如：document.forms("formName") 改为<br />        document.forms["formName"]。<br />        又如：document.getElementsByName("inputName")(1) 改为<br />        document.getElementsByName("inputName")[1]<br />    (3)其它</font>
		</p>
		<p>
				<font size="2">3. window.event<br />    (1)现有问题：<br />        使用 window.event 无法在 MF 上运行<br />    (2)解决方法：<br />        MF 的 event 只能在事件发生的现场使用，此问题暂无法解决。可以这样变通：<br />        原代码(可在IE中运行)：<br />            &lt;input type="button" name="someButton" value="提交"<br />                     onclick="javascript:gotoSubmit()"/&gt;<br />            ...<br />            &lt;script language="javascript"&gt;<br />                function gotoSubmit() {<br />                    ...<br />                    alert(window.event);    // use window.event<br />                    ...<br />                }<br />            &lt;/script&gt;</font>
		</p>
		<p>
				<font size="2">        新代码(可在IE和MF中运行)：<br />            &lt;input type="button" name="someButton" value="提交"<br />                    onclick="javascript:gotoSubmit(event)"/&gt;<br />            ...<br />            &lt;script language="javascript"&gt;<br />                function gotoSubmit(evt) {<br />                    evt = evt ? evt : (window.event ? window.event : null);<br />                    ...<br />                    alert(evt);             // use evt<br />                    ...<br />                }<br />            &lt;/script&gt;<br />        此外，如果新代码中第一行不改，与老代码一样的话(即 gotoSubmit 调用没有给<br />        参数)，则仍然只能在IE中运行，但不会出错。所以，这种方案 tpl 部分仍与老<br />        代码兼容。</font>
		</p>
		<font size="2">        ///////////////////////////////////////////////////////////////////////<br />        // 以下来自网友 llihua       <br />            //事件处理函数<br />            function a(evt) { //FireFox<br />            evt = evt? evt: window.event; //IE<br />            var srcElem = (evt.target)? evt.target: evt.srcElement;<br />            //事件处理...<br />            }<br /><br />在连接事件处理函数的时候，可以用Inline HTML方式，也可以用Event<br />            property方式定义。<br />           <br />                1、使用Inline HTML方式，如：<br />                &lt;input type="radio" name="radio" value="1"<br />                    onclick="javascript:a(event)"&gt;<br />               <br />                    注意：<br />                    (1)javascript不能省；<br />                    (2)实参要使用event，形参使用什么都可以(如evt、event等)；<br />               <br />                2、使用Event property方式绑定事件处理函数，如：<br />                    document.form2.radio[0].onclick = a;<br />        // 以上来自网友 llihua       <br />        ///////////////////////////////////////////////////////////////////////</font>
		<p>
				<font size="2">
						<br />4. HTML 对象的 id 作为对象名的问题<br />    (1)现有问题<br />        在 IE 中，HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在<br />        MF 中不能。<br />    (2)解决方法<br />        用 getElementById("idName") 代替 idName 作为对象变量使用。</font>
		</p>
		<p>
				<font size="2">5. 用idName字符串取得对象的问题<br />    (1)现有问题<br />        在IE中，利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象，在MF 中不<br />        能。<br />    (2)解决方法<br />        用 getElementById(idName) 代替 eval(idName)。</font>
		</p>
		<p>
				<font size="2">6. 变量名与某 HTML 对象 id 相同的问题<br />    (1)现有问题<br />        在 MF 中，因为对象 id 不作为 HTML 对象的名称，所以可以使用与 HTML 对象<br />        id 相同的变量名，IE 中不能。<br />    (2)解决方法<br />        在声明变量时，一律加上 var ，以避免歧义，这样在 IE 中亦可正常运行。<br />        此外，最好不要取与 HTML 对象 id 相同的变量名，以减少错误。<br />    (3)其它<br />        参见 问题4</font>
		</p>
		<p>
				<font size="2">7. event.x 与 event.y 问题<br />    (1)现有问题<br />        在IE 中，event 对象有 x, y 属性，MF中没有。<br />    (2)解决方法<br />        在MF中，与event.x 等效的是 event.pageX。但event.pageX IE中没有。<br />        故采用 event.clientX 代替 event.x。在IE 中也有这个变量。<br />        event.clientX 与 event.pageX 有微妙的差别（当整个页面有滚动条的时候），<br />        不过大多数时候是等效的。</font>
		</p>
		<p>
				<font size="2">        如果要完全一样，可以稍麻烦些：<br />        mX = event.x ? event.x : event.pageX;<br />        然后用 mX 代替 event.x<br />    (3)其它<br />        event.layerX 在 IE 与 MF 中都有，具体意义有无差别尚未试验。</font>
		</p>
		<p>
				<font size="2">
						<br />8. 关于frame<br />   (1)现有问题<br />         在 IE中 可以用window.testFrame取得该frame，mf中不行<br />   (2)解决方法<br />         在frame的使用方面mf和ie的最主要的区别是：<br />         如果在frame标签中书写了以下属性：<br />         &lt;frame src="xx.htm" id="frameId" name="frameName" /&gt;<br />         那么ie可以通过id或者name访问这个frame对应的window对象<br />         而mf只可以通过name来访问这个frame对应的window对象<br />         例如如果上述frame标签写在最上层的window里面的htm里面，那么可以这样访问<br />         ie： window.top.frameId或者window.top.frameName来访问这个window对象<br />         mf： 只能这样window.top.frameName来访问这个window对象</font>
		</p>
		<p>
				<font size="2">         另外，在mf和ie中都可以使用<br />             window.top.document.getElementById("frameId")<br />         来访问<br />         frame标签<br />         并且可以通过<br />             window.top.document.getElementById("testFrame").src = 'xx.htm'<br />         来切换frame的内容<br />         也都可以通过window.top.frameName.location = 'xx.htm'来切换frame的内容<br />         关于frame和window的描述可以参见bbs的‘window与frame’文章<br />         以及/test/js/test_frame/目录下面的测试<br />         ----adun 2004.12.09修改</font>
		</p>
		<p>
				<font size="2">9. 在mf中，自己定义的属性必须getAttribute()取得<br />10.在mf中没有  parentElement parement.children  而用<br />               parentNode parentNode.childNodes<br />   childNodes的下标的含义在IE和MF中不同，MF使用DOM规范，childNodes中会插入空白<br />   文本节点。<br />  一般可以通过node.getElementsByTagName()来回避这个问题。<br />   当html中节点缺失时，IE和MF对parentNode的解释不同，例如<br />   &lt;form&gt;<br />   &lt;table&gt;<br />        &lt;input/&gt;<br />   &lt;/table&gt;<br />   &lt;/form&gt;<br />   MF中input.parentNode的值为form, 而IE中input.parentNode的值为空节点</font>
		</p>
		<p>
				<font size="2">   MF中节点没有removeNode方法，必须使用如下方法<br />   node.parentNode.removeChild(node)</font>
		</p>
		<p>
				<font size="2">11.const 问题<br />  (1)现有问题:<br />     在 IE 中不能使用 const 关键字。如 const constVar = 32;<br />     在IE中这是语法错误。<br />  (2)解决方法:<br />     不使用 const ，以 var 代替。</font>
		</p>
		<p>
				<font size="2">12. body 对象<br />   MF的body在body标签没有被浏览器完全读入之前就存在，而IE则必须在body完全被读入<br />   之后才存在</font>
		</p>
		<p>
				<font size="2">13. url encoding<br />    在js中如果书写url就直接写&amp;不要写&amp;例如<br />        var url = 'xx.jsp?objectName=xx&amp;objectEvent=xxx';<br />    frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器<br />    一般会服务器报错参数没有找到<br />    当然如果是在tpl中例外，因为tpl中符合xml规范，要求&amp;书写为&amp;<br />    一般MF无法识别js中的&amp;</font>
		</p>
		<p>
				<font size="2">
						<br />14. nodeName 和 tagName 问题<br />  (1)现有问题：<br />     在MF中，所有节点均有 nodeName 值，但 textNode 没有 tagName 值。在 IE 中，<br />     nodeName 的使用好象<br />     有问题（具体情况没有测试，但我的IE已经死了好几次）。<br />  (2)解决方法：<br />     使用 tagName，但应检测其是否为空。</font>
		</p>
		<p>
				<font size="2">15. 元素属性<br />   IE下 input.type属性为只读，但是MF下可以修改</font>
		</p>
		<p>
				<font size="2">
						<br />16. document.getElementsByName() 和 document.all[name] 的问题<br />  (1)现有问题：<br />     在 IE 中，getElementsByName()、document.all[name] 均不能用来取得 div 元素<br />     （是否还有其它不能取的元素还不知道）。</font>
		</p>
		<p>
				<font size="2">17. DOM 数据岛的问题<br />  (1)现有问题<br />     在IE中, &lt;xml&gt;标签具有特殊意义, 可以内含XML DOM, 并能实现与HTML组件的数据<br />     绑定. 在MF中,&lt;xml&gt;则仅仅是一个未知的标记而已.<br />     另外, 对 IE 来说, &lt;xml&gt;实际意味着这里是一个ActiveX对象, 但它却挂在HTML本<br />     身的DOM树下作为一个节点, 因而会对DOM树的遍历造成严重影响.<br />  (2)解决方法<br />     IE的数据绑定机制是可以用JS来模拟的, 但是太麻烦, 建议不使用数据绑定机制或者<br />     寻找实现这种模拟的库来做. 我们只讨论如何实现DOM的兼容.<br />     在MF中无论已知的HTML标记还是其它符合XML规范的标记, 都是用统一的DOM树来处理<br />     的, 因此, MF事实上完全可以使用DOM数据岛, 但与IE小小的不同在于: 在IE中&lt;xml&gt;<br />     是个 DOM document, 而在MF只是 DOM node. 这个差别通常不足为患.<br />     但是有一个小小的细节, 为了兼容HTML相当随意的语法, MF无法识别简写的空标记.<br />     如: &lt;xml id="xx"&gt;&lt;book&gt;&lt;title&gt;xxxx&lt;/title&gt;&lt;content/&gt;&lt;index/&gt;&lt;/book&gt;&lt;/xml&gt;,<br />     这其中&lt;content/&gt;和&lt;index/&gt;是简写形式的, 会使MF无法识别, 应当写成:<br />         &lt;content&gt;&lt;/content&gt;&lt;index&gt;&lt;/index&gt;<br />     不过, 我怀疑如果用XHTML, 可能就没有这种问题. 但我还没有试过.<br />     对于IE中&lt;xml&gt;干扰HTML的DOM结构问题, 我现在的方法是处理完毕后把它从HTML的<br />     DOM中删除. 不知道还有没有更好的解.</font>
		</p>
		<font size="2">
				<br />
				<br />
				<br />
		</font>
<img src ="http://www.blogjava.net/hellotony/aggbug/55791.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellotony/" target="_blank">Tony</a> 2006-06-29 17:25 <a href="http://www.blogjava.net/hellotony/articles/55791.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>xmlHttp中文参考</title><link>http://www.blogjava.net/hellotony/articles/48619.html</link><dc:creator>Tony</dc:creator><author>Tony</author><pubDate>Sun, 28 May 2006 11:55:00 GMT</pubDate><guid>http://www.blogjava.net/hellotony/articles/48619.html</guid><wfw:comment>http://www.blogjava.net/hellotony/comments/48619.html</wfw:comment><comments>http://www.blogjava.net/hellotony/articles/48619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellotony/comments/commentRss/48619.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellotony/services/trackbacks/48619.html</trackback:ping><description><![CDATA[
		<div id="main">
				<h3>
						<font size="2">XmlHttp是什么？</font>
				</h3>
				<p>
						<font size="2">
最通用的定义为：XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。<br />
来自MSDN的解释：XmlHttp提供客户端同http服务器通讯的协议。客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)
向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model
(DOM)处理回应。
</font>
				</p>
				<p>
						<font size="2">
现在的绝对多数浏览器都增加了对XmlHttp的支持，IE中使用ActiveXObject方式创建XmlHttp对象，其他浏览器如：Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。
</font>
				</p>
				<h3>
						<font size="2">XmlHttp对象参考：</font>
				</h3>
				<h4>
						<font size="2">属性：</font>
				</h4>
				<table class="t1" border="1" cellpadding="3">
						<tbody>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/onreadystatechange.html" title="">onreadystatechange*</a>
												</font>
										</td>
										<td>
												<font size="2">指定当readyState属性改变时的事件处理句柄。只写</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/readystate.html" title="">readyState</a>
												</font>
										</td>
										<td>
												<font size="2">返回当前请求的状态，只读.</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/responsebody.html" title="">responseBody</a>
												</font>
										</td>
										<td>
												<font size="2">将回应信息正文以unsigned byte数组形式返回.只读</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/responsestream.html" title="">responseStream</a>
												</font>
										</td>
										<td>
												<font size="2">以Ado Stream对象的形式返回响应信息。只读</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/responseText.html" title="">responseText</a>
												</font>
										</td>
										<td>
												<font size="2">将响应信息作为字符串返回.只读</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/responsexml.html" title="">responseXML</a>
												</font>
										</td>
										<td>
												<font size="2">将响应信息格式化为Xml Document对象并返回，只读</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/status.html" title="">status</a>
												</font>
										</td>
										<td>
												<font size="2">返回当前请求的http状态码.只读</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/statustext.html" title="">statusText</a>
												</font>
										</td>
										<td>
												<font size="2">返回当前请求的响应行状态，只读</font>
										</td>
								</tr>
						</tbody>
				</table>
				<p>
						<font size="2">* 表示此属性是W3C文档对象模型的扩展.</font>
				</p>
				<h4>
						<font size="2">方法：</font>
				</h4>
				<table class="t1" border="1" cellpadding="3">
						<tbody>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/abort.html" title="">abort</a>
												</font>
										</td>
										<td>
												<font size="2">取消当前请求</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/getallresponseheaders.html" title="">getAllResponseHeaders</a>
												</font>
										</td>
										<td>
												<font size="2">获取响应的所有http头</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/getresponseheader.html" title="">getResponseHeader</a>
												</font>
										</td>
										<td>
												<font size="2">从响应信息中获取指定的http头</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/open.html" title="">open</a>
												</font>
										</td>
										<td>
												<font size="2">创建一个新的http请求，并指定此请求的方法、URL以及验证信息(用户名/密码)</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/send.html" title="">send</a>
												</font>
										</td>
										<td>
												<font size="2">发送请求到http服务器并接收回应</font>
										</td>
								</tr>
								<tr>
										<td>
												<font size="2">
														<a href="http://www.xmlhttp.cn/manual/setrequestheader.html" title="">setRequestHeader</a>
												</font>
										</td>
										<td>
												<font size="2">单独指定请求的某个http头</font>
										</td>
								</tr>
						</tbody>
				</table>
				<font size="2">
						<br />
				</font>
				<h4>
						<font size="2">事件：</font>
				</h4>
				<font size="2">
						<em>无<br /><br /><br /><br /><br /></em>
						<span class="bright-message-list">
								<span class="bright-message-list">responseText:<br />能
解释UCS-2 或者UCS-4
,默认以UTF-8来解释服务端返回的字符流,不对字符流的内容做任何判断,所以你的innerHTML.xml中写的&lt;?xml
version = "1.0" encoding="GBK"?&gt;对这个函数没有任何意义,因为它只是文本流中的一行字符内容.<br /><br />responseXml:<br />对接收回来的数据作为dom对象来解析,当然会对其中的内容如字符集,DTD,schema,等做相应解析,简单说不仅仅是"接收",而且要"处理"<br /><br />responseBody:<br />任何内容以原始的二进制byte接收,(在网络层就是原始的ununsigned char序列 ,java中表示为byte)不对内容做任何字符集假设.但它一次性将数据返回为一个byte[]<br /><br />responseStream:<br />同上,但返回为一个流接口,要你自己从中读取byte<br /><br /><br /><br />所以如果你仅把一个名为xml的文档作为原始文本文件用responseText返回,你在文档里面任何设置属性都不会起作用</span>
						</span>
				</font>
				<br />
		</div>
<img src ="http://www.blogjava.net/hellotony/aggbug/48619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellotony/" target="_blank">Tony</a> 2006-05-28 19:55 <a href="http://www.blogjava.net/hellotony/articles/48619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript里使用Dom操作Xml</title><link>http://www.blogjava.net/hellotony/articles/43289.html</link><dc:creator>Tony</dc:creator><author>Tony</author><pubDate>Wed, 26 Apr 2006 06:51:00 GMT</pubDate><guid>http://www.blogjava.net/hellotony/articles/43289.html</guid><wfw:comment>http://www.blogjava.net/hellotony/comments/43289.html</wfw:comment><comments>http://www.blogjava.net/hellotony/articles/43289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellotony/comments/commentRss/43289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellotony/services/trackbacks/43289.html</trackback:ping><description><![CDATA[
		<p>
		</p>
		<p>
				<font size="2">
				</font>
		</p>
		<font size="2">例子</font>
		<p>
				<font size="2">一．本笔记使用的Xml文件 </font>
		</p>
		<p>
				<br />
				<font size="2">&lt;?xml version="1.0"?&gt;</font>
		</p>
		<p>
				<font size="2">&lt;book level="1"&gt; </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">  &lt;Name&gt;c++&lt;/Name&gt; </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">  &lt;Price&gt;20&lt;/Price&gt; </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2"> &lt;info&gt;</font>
		</p>
		<p>
				<font size="2">&lt;k&gt;1&lt;/k&gt;</font>
		</p>
		<p>
				<font size="2">  &lt;/info&gt;</font>
		</p>
		<p>
				<font size="2">  &lt;info&gt;</font>
		</p>
		<p>
				<font size="2">    &lt;k&gt;2&lt;/k&gt; </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">  &lt;/info&gt; </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">&lt;/book&gt; </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">在asp.net下实现代码：</font>
		</p>
		<p>
				<font size="2">string str = Server.MapPath("test1.xml"); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">XmlTextWriter xmlWriter = new XmlTextWriter(str,null); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.Formatting = System.Xml.Formatting.Indented; </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteStartDocument(); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteStartElement("book"); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteAttributeString("level","1"); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteElementString("Name","c++"); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteElementString("Price","20"); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteStartElement("info"); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteElementString("k","1"); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteEndElement(); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteStartElement("info"); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteElementString("k","2"); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteEndElement(); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteEndElement(); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.WriteEndDocument(); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font size="2">xmlWriter.Close(); </font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<br />
				<font size="2"> </font>
		</p>
		<p>
				<font size="2">二．IXMLDOMDocument/DOMDocument简介 </font>
		</p>
		<p>
				<font size="2">2．1 属性 </font>
		</p>
		<p>
				<font size="2">2．1．1  parseError </font>
		</p>
		<p>
				<br />
				<font size="2">Returns an IXMLDOMParseError object that contains <br />information about the last parsing error</font>
		</p>
		<p>
				<font size="2">返回解析错误时的一个对象。</font>
		</p>
		<p>
				<font size="2">重要的有parseError.errorCode,parseError.reason</font>
		</p>
		<p>
				<font size="2">如果load时路径不对，会返回“系统未找到指定的对象”的错误<br />2．1．2  async </font>
		</p>
		<p>
				<br />
				<font size="2">Specifies whether asynchronous download is permitted</font>
		</p>
		<p>
				<font size="2">是否允许异步下载，布尔值</font>
		</p>
		<p>
				<br />
				<font size="2"> </font>
		</p>
		<p>
				<font size="2">2．1．3  xml </font>
		</p>
		<p>
				<br />
				<font size="2">Contains the XML representation of the node and all its descendants. Read-only.</font>
		</p>
		<p>
				<font size="2">该点及下面派生的所有点的全部信息，只读如果要求book点的xml,返回“&lt;book level="1"&gt;&lt;Name&gt;c++&lt;/Name&gt;&lt;Price&gt;20&lt;/Price&gt;&lt;info&gt;&lt;k&gt;1&lt;/k&gt;&lt;/info&gt;<br />&lt;info&gt;&lt;k&gt;2&lt;/k&gt;&lt;/info&gt;&lt;/book&gt;”，如果Name的xml，返回“&lt;Name&gt;c++&lt;/Name&gt;”<br />2．1．4  text </font>
		</p>
		<p>
				<br />
				<font size="2">Represents the text content of the node or the concatenated text representing the node and its descendants. Read/write</font>
		</p>
		<p>
				<font size="2">该点及下面派生的所有点的全部节点值，可读可写</font>
		</p>
		<p>
				<font size="2">&lt;price&gt;20&lt;/price&gt;</font>
		</p>
		<p>
				<font size="2">则text为20</font>
		</p>
		<p>
				<font size="2">"Name"节点的text为"c++"<br />2．1．5  attributes </font>
		</p>
		<p>
				<br />
				<font size="2">Contains the list of attributes for this node</font>
		</p>
		<p>
				<font size="2">返回属性的集合。<br />2．1．6  nodeName </font>
		</p>
		<p>
				<br />
				<font size="2">Returns the qualified name for attribute, document type, element, entity, or notation nodes. Returns a fixed string for all </font>
		</p>
		<p>
				<font size="2">other node types. Read-only</font>
		</p>
		<p>
				<font size="2">该节点名称</font>
		</p>
		<p>
				<font size="2">"Name"节点的nodeName为"Name","book"节点的nodeName为"book"<br />2．1．7  documentElement </font>
		</p>
		<p>
				<br />
				<font size="2">Contains the root element of the document</font>
		</p>
		<p>
				<font size="2">xml的根节点</font>
		</p>
		<p>
				<font size="2">上面的xml的根节点为"book"<br />2．1．8  nextSibling </font>
		</p>
		<p>
				<br />
				<font size="2">Contains the next sibling of the node in the parent's child list. Read-only.</font>
		</p>
		<p>
				<font size="2">下一个兄弟节点，只读<br />2．1．9  childNodes </font>
		</p>
		<p>
				<br />
				<font size="2">Contains a node list containing the child nodes</font>
		</p>
		<p>
				<font size="2">所有的子节点。<br />2．1．10  firstChild </font>
		</p>
		<p>
				<br />
				<font size="2">Contains the first child of the node</font>
		</p>
		<p>
				<font size="2">第一个子节点<br />2．1．11  lastChild </font>
		</p>
		<p>
				<br />
				<font size="2">Returns the last child node</font>
		</p>
		<p>
				<font size="2">最后一个子节点</font>
		</p>
		<p>
				<br />
				<font size="2"> </font>
		</p>
		<p>
				<font size="2">2．2 方法 </font>
		</p>
		<p>
				<font size="2">2．2．1  loadXML </font>
		</p>
		<p>
				<br />
				<font size="2">Loads an XML document using the supplied string<br />2．2．2  load </font>
		</p>
		<p>
				<br />
				<font size="2">Loads an XML document from the specified locati</font>
		</p>
		<p>
				<font size="2">参数的路径为服务器端的，是相对路径<br />2．2．3  selectSingleNode </font>
		</p>
		<p>
				<br />
				<font size="2">Applies the specified pattern-matching operation to this node's context and returns the first matching node</font>
		</p>
		<p>
				<font size="2">返回第一个匹配的项<br />2．2．4  selectNodes </font>
		</p>
		<p>
				<br />
				<font size="2">Applies the specified pattern-matching operation to this node's context and returns the list of matching nodes as IXMLDOMNodeList</font>
		</p>
		<p>
				<font size="2">符合条件的所有项。<br />2．2．5  getElementsByTagName </font>
		</p>
		<p>
				<br />
				<font size="2">Returns a collection of elements that have the specified name</font>
		</p>
		<p>
				<font size="2">返回与元素名匹配的一个node的集合<br />2．2．6  hasChildNodes </font>
		</p>
		<p>
				<br />
				<font size="2">Provides a fast way to determine whether a node has children</font>
		</p>
		<p>
				<font size="2">判断是否含有子节点</font>
		</p>
		<p>
				<font size="2">返回值为bool值</font>
		</p>
		<p>
				<br />
				<font size="2"> </font>
		</p>
		<p>
				<font size="2">三．例子 </font>
		</p>
		<p>
				<br />
				<font size="2">var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");</font>
		</p>
		<p>
				<font size="2">xmlDoc.async = false;</font>
		</p>
		<p>
				<font size="2">xmlDoc.load("test\\test1.xml");</font>
		</p>
		<p>
				<font size="2">if (xmlDoc.parseError.errorCode!=0)</font>
		</p>
		<p>
				<font size="2">{</font>
		</p>
		<p>
				<font size="2">var error = xmlDoc.parseError;</font>
		</p>
		<p>
				<font size="2">  alert(error.reason)</font>
		</p>
		<p>
				<font size="2">return;</font>
		</p>
		<p>
				<font size="2">}</font>
		</p>
		<p>
				<font size="2">var root = xmlDoc.documentElement;   //根节点</font>
		</p>
		<p>
				<font size="2">Form1.test1.value = root.xml;</font>
		</p>
		<p>
				<font size="2">/*结果如下：</font>
		</p>
		<p>
				<font size="2">&lt;book level="1"&gt;&lt;Name&gt;c++&lt;/Name&gt;&lt;Price&gt;20&lt;/Price&gt;&lt;info&gt;&lt;k&gt;1&lt;/k&gt;&lt;/info&gt;<br />&lt;info&gt;&lt;k&gt;2&lt;/k&gt;&lt;/info&gt;&lt;/book&gt;*/</font>
		</p>
		<p>
				<font size="2">Form1.test1.value = root.nodeName;  //结果为"book"</font>
		</p>
		<p>
				<font size="2">var att = root.attributes;  //得到该点下所有属性的集合</font>
		</p>
		<p>
				<font size="2">var str = "";</font>
		</p>
		<p>
				<font size="2">for (var i=0; i&lt;att.length; i++)</font>
		</p>
		<p>
				<font size="2">{</font>
		</p>
		<p>
				<font size="2">str += att.item(i).nodeName+":"+att.item(i).text;</font>
		</p>
		<p>
				<font size="2">}</font>
		</p>
		<p>
				<font size="2">Form1.test1.value = str;  //只有一个属性，所以结果为“level：1”</font>
		</p>
		<p>
				<font size="2">var fNode;</font>
		</p>
		<p>
				<font size="2">var lNode;</font>
		</p>
		<p>
				<font size="2">var nextSibling;</font>
		</p>
		<p>
				<font size="2">fNode = root.firstChild;   //第一个子节点Name</font>
		</p>
		<p>
				<font size="2">lNode = root.lastChild;    //最后一个子节点 info</font>
		</p>
		<p>
				<font size="2">nextSibling = fNode.nextSibling;  //第一个子节点Name的后一个兄弟节点，即Price</font>
		</p>
		<p>
				<font size="2">str = fNode.nodeName + ":" + fNode.text;  //结果："Name:c++"</font>
		</p>
		<p>
				<font size="2">str = lNode.nodeName + ":" + lNode.text;  //结果为："info:2"</font>
		</p>
		<p>
				<font size="2">str = nextSibling.nodeName + ":"  + nextSibling.text;  //结果为:"Price:20"</font>
		</p>
		<p>
				<font size="2">var nodeList;</font>
		</p>
		<p>
				<font size="2">str = "";</font>
		</p>
		<p>
				<font size="2">nodeList = xmlDoc.selectNodes("//info");  //查找元素名为"info"的节点</font>
		</p>
		<p>
				<font size="2">for (var j=0; j&lt;nodeList.length; j++)  //有两个info节点</font>
		</p>
		<p>
				<font size="2">{</font>
		</p>
		<p>
				<font size="2">var infoNode = nodeList.item(j);</font>
		</p>
		<p>
				<font size="2">var cldNodes = infoNode.childNodes;  //info节点的子节点集</font>
		</p>
		<p>
				<font size="2">for (var k=0; k&lt;cldNodes.length; k++)</font>
		</p>
		<p>
				<font size="2">{</font>
		</p>
		<p>
				<font size="2">       str += cldNodes.item(k).nodeName + ":" + cldNodes.item(k).text + " ";</font>
		</p>
		<p>
				<font size="2">}</font>
		</p>
		<p>
				<font size="2">//结果“k:1 k:2 ”</font>
		</p>
		<p>
				<font size="2">}</font>
		</p>
		<p>
				<font size="2">str = "";</font>
		</p>
		<p>
				<font size="2">var sNode;</font>
		</p>
		<p>
				<font size="2">sNode = xmlDoc.selectSingleNode("//info"); //找到第一个和"info"匹配的</font>
		</p>
		<p>
				<font size="2">var scldNodes = sNode.childNodes;  //info节点的子节点集</font>
		</p>
		<p>
				<font size="2">for (var t=0; t&lt;scldNodes.length; t++)</font>
		</p>
		<p>
				<font size="2">{</font>
		</p>
		<p>
				<font size="2">str += scldNodes.item(t).nodeName + ":" + scldNodes.item(t).text + " ";</font>
		</p>
		<p>
				<font size="2">}</font>
		</p>
		<p>
				<font size="2">//结果“k:1”</font>
		</p>
		<p>
				<font size="2">Form1.test1.value = str;</font>
		</p>
<img src ="http://www.blogjava.net/hellotony/aggbug/43289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellotony/" target="_blank">Tony</a> 2006-04-26 14:51 <a href="http://www.blogjava.net/hellotony/articles/43289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Microsoft's XML Parser</title><link>http://www.blogjava.net/hellotony/articles/43287.html</link><dc:creator>Tony</dc:creator><author>Tony</author><pubDate>Wed, 26 Apr 2006 06:49:00 GMT</pubDate><guid>http://www.blogjava.net/hellotony/articles/43287.html</guid><wfw:comment>http://www.blogjava.net/hellotony/comments/43287.html</wfw:comment><comments>http://www.blogjava.net/hellotony/articles/43287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellotony/comments/commentRss/43287.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellotony/services/trackbacks/43287.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">Microsoft's XML parser is a COM component that comes with Internet Explorer 5 and higher. Once you have installed Internet Explorer, the parser is available to scripts.</font>
		</p>
		<p>
				<font size="2">Microsoft's XML parser supports all the necessary functions to traverse the node tree, access the nodes and their attribute values, insert and delete nodes, and convert the node tree back to XML. </font>
		</p>
		<p>
				<font size="2">The following table lists the most commonly used node types supported by Microsoft's XML parser:Node Type Example<br />Processing instruction &lt;?xml version="1.0"?&gt;<br />Element &lt;drink type="beer"&gt;Carlsberg&lt;/drink&gt;<br />Attribute type="beer"<br />Text Carlsberg</font>
		</p>
		<p>
				<br />
				<font size="2">MSXML Parser 2.5 is the XML parser that is shipped with Windows 2000 and IE 5.5.</font>
		</p>
		<p>
				<font size="2">MSXML Parser 3.0 is the XML parser that is shipped with IE 6.0 and Windows XP.</font>
		</p>
		<p>
				<font size="2">The MSXML 3.0 parser features:<br />JavaScript, VBScript, Perl, VB, Java, C++, etc. support<br />Complete XML support<br />Full DOM and Namespace support<br />DTD and validation<br />Complete XSLT and XPath support<br />SAX2 support<br />Server-safe HTTP</font>
		</p>
		<p>
				<font size="2">To create an instance of Microsoft's XML parser with JavaScript, use the following code:var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")</font>
		</p>
		<p>
				<br />
				<font size="2">To create an instance of Microsoft's XML parser with VBScript, use the following code:set xmlDoc=CreateObject("Microsoft.XMLDOM")</font>
		</p>
		<p>
				<br />
				<font size="2">To create an instance of Microsoft's XML parser in an ASP page (using VBScript), use the following code:set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")</font>
		</p>
		<p>
				<br />
				<font size="2">The following code loads an existing XML document ("note.xml") into Microsoft's XML parser:&lt;script type="text/javascript"&gt;<br />var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")<br />xmlDoc.async="false"<br />xmlDoc.load("note.xml")<br />...<br />...<br />...<br />&lt;/script&gt;</font>
		</p>
		<p>
				<br />
				<font size="2">The first line of the script above creates an instance of the Microsoft XML parser. The third line tells the parser to load an XML document called "note.xml". The second line turns off asynchronized loading, to make sure that the parser will not continue execution of the script before the document is fully loaded.<br />XML Parser in Mozilla Browsers</font>
		</p>
		<p>
				<font size="2">Plain XML documents are displayed in a tree-like structure in Mozilla (just like IE).</font>
		</p>
		<p>
				<font size="2">Mozilla also supports parsing of XML data using JavaScript. The parsed data can be displayed as HTML.</font>
		</p>
		<p>
				<font size="2">To create an instance of the XML parser with JavaScript in Mozilla browsers, use the following code:var xmlDoc=document.implementation.createDocument("ns","root",null)</font>
		</p>
		<p>
				<br />
				<font size="2">The first parameter, ns, defines the namespace used for the XML document. The second parameter, root, is the XML root element in the XML file. The third parameter, null, is always null because it is not implemented yet.</font>
		</p>
		<p>
				<font size="2">The following code loads an existing XML document ("note.xml") into Mozillas' XML parser:&lt;script type="text/javascript"&gt;<br />var xmlDoc=document.implementation.createDocument("","",null);<br />xmlDoc.load("note.xml");<br />...<br />...<br />...<br />&lt;/script&gt;</font>
		</p>
		<p>
				<br />
				<font size="2">The first line of the script above creates an instance of the XML parser. The second line tells the parser to load an XML document called "note.xml".<br />Loading an XML File - A Cross browser Example</font>
		</p>
		<p>
				<font size="2">The following example is a cross browser example that loads an existing XML document ("note.xml") into the XML parser:&lt;html&gt;<br />&lt;head&gt;<br />&lt;script type="text/javascript"&gt;<br />var xmlDoc<br />function loadXML()<br />{<br />//load xml file<br />// code for IE<br />if (window.ActiveXObject)<br />  {<br />  xmlDoc = new ActiveXObject("Microsoft.XMLDOM");<br />  xmlDoc.async=false;<br />  xmlDoc.load("note.xml");<br />  getmessage()<br />  }<br />// code for Mozilla, etc.<br />else if (document.implementation &amp;&amp;<br />document.implementation.createDocument)<br />  {<br />  xmlDoc= document.implementation.createDocument("","",null);<br />  xmlDoc.load("note.xml");<br />  xmlDoc.onload=getmessage<br />  }<br />else<br />  {<br />  alert('Your browser cannot handle this script');<br />  }<br />}<br />function getmessage()<br />{<br />document.getElementById("to").innerHTML=<br />xmlDoc.getElementsByTagName("to")[0].firstChild.nodeValue<br />document.getElementById("from").innerHTML=<br />xmlDoc.getElementsByTagName("from")[0].firstChild.nodeValue<br />document.getElementById("message").innerHTML=<br />xmlDoc.getElementsByTagName("body")[0].firstChild.nodeValue<br />}<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body onload="loadXML()" bgcolor="yellow"&gt;<br />&lt;h1&gt;W3Schools Internal Note&lt;/h1&gt;<br />&lt;p&gt;&lt;b&gt;To:&lt;/b&gt; &lt;span id="to"&gt;&lt;/span&gt;&lt;br /&gt;<br />&lt;b&gt;From:&lt;/b&gt; &lt;span id="from"&gt;&lt;/span&gt;<br />&lt;hr /&gt;<br />&lt;b&gt;Message:&lt;/b&gt; &lt;span id="message"&gt;&lt;/span&gt;<br />&lt;/p&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</font>
		</p>
		<p>
				<br />
				<font size="2">Try it yourself</font>
		</p>
		<p>
				<font size="2">There are more examples of this in our XML DOM tutorial.<br />Loading XML Text Into the Parser </font>
		</p>
		<p>
				<font size="2">Internet Explorer supports two ways of loading XML into a document object: the load() method and the loadXML() method. The load() method loads an XML file and the loadXML() method loads a text string that contains XML code.</font>
		</p>
		<p>
				<font size="2">The following code loads a text string into Microsoft's XML parser:&lt;script type="text/javascript"&gt;<br />var txt="&lt;note&gt;"<br />txt=txt+"&lt;to&gt;Tove&lt;/to&gt;&lt;from&gt;Jani&lt;/from&gt;"<br />txt=txt+"&lt;heading&gt;Reminder&lt;/heading&gt;"<br />txt=txt+"&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;"<br />txt=txt+"&lt;/note&gt;"<br />var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")<br />xmlDoc.async="false"<br />xmlDoc.loadXML(txt)<br />...<br />...<br />...<br />&lt;/script&gt;</font>
		</p>
<img src ="http://www.blogjava.net/hellotony/aggbug/43287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellotony/" target="_blank">Tony</a> 2006-04-26 14:49 <a href="http://www.blogjava.net/hellotony/articles/43287.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript 载入 XML 文件实例（跨平台）</title><link>http://www.blogjava.net/hellotony/articles/43286.html</link><dc:creator>Tony</dc:creator><author>Tony</author><pubDate>Wed, 26 Apr 2006 06:47:00 GMT</pubDate><guid>http://www.blogjava.net/hellotony/articles/43286.html</guid><wfw:comment>http://www.blogjava.net/hellotony/comments/43286.html</wfw:comment><comments>http://www.blogjava.net/hellotony/articles/43286.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellotony/comments/commentRss/43286.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellotony/services/trackbacks/43286.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">HTML文件内容： <br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;script type="text/javascript"&gt;<br />&lt;!--<br />var xmlDoc<br />function loadXML()<br />{<br />//load xml file<br />if (window.ActiveXObject) {<br />// code for IE<br />xmlDoc = new ActiveXObject("Microsoft.XMLDOM");<br />xmlDoc.async=false;<br />xmlDoc.load("note.xml");<br />getmessage()<br />} else if (document.implementation &amp;&amp; document.implementation.createDocument) {<br />// code for Mozilla, etc.<br />xmlDoc= document.implementation.createDocument("","",null);<br />xmlDoc.load("note.xml");<br />xmlDoc.onload=getmessage<br />} else {<br />alert('Your browser cannot handle this script');<br />}<br />}</font>
		</p>
		<p>
				<font size="2">function getmessage()<br />{<br />document.getElementById("to").innerHTML=<br />xmlDoc.getElementsByTagName("to")[0].firstChild.nodeValue<br />document.getElementById("from").innerHTML=<br />xmlDoc.getElementsByTagName("from")[0].firstChild.nodeValue<br />document.getElementById("message").innerHTML=<br />xmlDoc.getElementsByTagName("body")[0].firstChild.nodeValue<br />}<br />--&gt;<br />&lt;/script&gt;<br />&lt;/head&gt;</font>
		</p>
		<p>
				<font size="2">&lt;body onload="loadXML()" bgcolor="yellow"&gt;<br />&lt;h1&gt;W3Schools Internal Note&lt;/h1&gt;<br />&lt;p&gt;&lt;b&gt;To:&lt;/b&gt; &lt;span id="to"&gt;&lt;/span&gt;&lt;br /&gt;<br />&lt;b&gt;From:&lt;/b&gt; &lt;span id="from"&gt;&lt;/span&gt;<br />&lt;hr /&gt;<br />&lt;b&gt;Message:&lt;/b&gt; &lt;span id="message"&gt;&lt;/span&gt;<br />&lt;/p&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />XML文件（note.xml） 内容： <br />&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br />&lt;!-- Edited with XML Spy v4.2 --&gt;<br />&lt;note time="12:03:46"&gt;<br />  &lt;to&gt;Tove&lt;/to&gt;<br />  &lt;from&gt;Jani&lt;/from&gt;<br />  &lt;heading&gt;Reminder&lt;/heading&gt;<br />  &lt;body&gt;Don't forget me this weekend!&lt;/body&gt;<br />&lt;/note&gt;<br /></font>
		</p>
<img src ="http://www.blogjava.net/hellotony/aggbug/43286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellotony/" target="_blank">Tony</a> 2006-04-26 14:47 <a href="http://www.blogjava.net/hellotony/articles/43286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript 参考教程</title><link>http://www.blogjava.net/hellotony/articles/32876.html</link><dc:creator>Tony</dc:creator><author>Tony</author><pubDate>Tue, 28 Feb 2006 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/hellotony/articles/32876.html</guid><wfw:comment>http://www.blogjava.net/hellotony/comments/32876.html</wfw:comment><comments>http://www.blogjava.net/hellotony/articles/32876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellotony/comments/commentRss/32876.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellotony/services/trackbacks/32876.html</trackback:ping><description><![CDATA[
		<h4>
				<p>
						<font size="2">JavaScript 是使用“对象化编程”的，或者叫“面向对象编程”的。所谓“对象化编程”，意思是把 JavaScript 能涉及的范围划分成大大小小的对象，对象下面还继续划分对象直至非常详细为止，所有的编程都以对象为出发点，基于对象。小到一个变量，大到网页文档、窗口甚至屏幕，都是对象。这一章将“面向对象”讲述 JavaScript 的运行情况。</font>
				</p>
		</h4>
		<h3>
				<font size="2">
						<a name="对象的基本知识">对象的基本知识</a>
				</font>
		</h3>
		<p>
				<font size="2"> <b>对象</b>是可以从 JavaScript“势力范围”中划分出来的一小块，可以是一段文字、一幅图片、一个表单（Form）等等。每个对象有它自己的<b>属性</b>、<b>方法</b>和<b>事件</b>。对象的<b>属性</b>是反映该对象某些特定的性质的，例如：字符串的长度、图像的长宽、文字框（Textbox）里的文字等等；对象的<b>方法</b>能对该对象做一些事情，例如，表单的“提交”(Submit)，窗口的“滚动”(Scrolling)等等；而对象的<b>事件</b>就能响应发生在对象上的事情，例如提交表单产生表单的“提交事件”，点击连接产生的“点击事件”。不是所有的对象都有以上三个性质，有些没有事件，有些只有属性。引用对象的任一“性质”用“&lt;对象名&gt;.&lt;性质名&gt;”这种方法。</font>
		</p>
		<h3>
				<font size="2">
						<a name="基本对象">基本对象</a>
				</font>
		</h3>
		<p>
				<font size="2">现在我们要复习以上学过的内容了——把一些数据类型用对象的角度重新学习一下。</font>
		</p>
		<p>
				<font size="2">
						<b>
								<a name="Number">Number</a>
						</b> “数字”对象。这个对象用得很少，作者就一次也没有见过。不过属于“Number”的对象，也就是“变量”就多了。</font>
		</p>
		<blockquote>
				<p>
						<font size="2">
								<b>属性</b>
						</font>
				</p>
				<p>
						<font size="2">
								<b>MAX_VALUE</b> 用法：Number.MAX_VALUE；返回“最大值”。<b><br />MIN_VALUE</b> 用法：Number.MIN_VALUE；返回“最小值”。<b><br />NaN</b> 用法：Number.NaN 或 NaN；返回“NaN”。“<a href="http://www.iselong.com/online/ebooks/javascript/js_1.htm#JavaScript%E5%B8%B8%E6%95%B0" tppabs="js_1.htm#JavaScript常数"><font color="#0000ff">NaN</font></a>”（不是数值）在很早就介绍过了。<b><br />NEGATIVE_INFINITY</b> 用法：Number.NEGATIVE_INFINITY；返回：负无穷大，比“最小值”还小的值。<b><br />POSITIVE_INFINITY</b> 用法：Number.POSITIVE_INFINITY；返回：正无穷大，比“最大值”还大的值。</font>
				</p>
				<p>
						<font size="2">
								<b>方法</b>
						</font>
				</p>
				<p>
						<font size="2">
								<b>toString() </b>用法：&lt;数值变量&gt;.toString()；返回：字符串形式的数值。如：若 a == 123；则 a.toString() == '123'。</font>
				</p>
		</blockquote>
		<p>
				<font size="2">
						<b>
								<a name="String">String</a>
						</b> 字符串对象。声明一个字符串对象最简单、快捷、有效、常用的方法就是直接赋值。</font>
		</p>
		<blockquote>
				<p>
						<font size="2">
								<b>属性</b>
						</font>
				</p>
				<p>
						<font size="2">
								<b>length</b> 用法：&lt;字符串对象&gt;.length；返回该字符串的长度。</font>
				</p>
				<p>
						<font size="2">
								<b>方法</b>
						</font>
				</p>
				<p>
						<font size="2">
								<b>charAt()</b> 用法：&lt;字符串对象&gt;.charAt(&lt;位置&gt;)；返回该字符串位于第&lt;位置&gt;位的单个字符。注意：字符串中的一个字符是第 0 位的，第二个才是第 1 位的，最后一个字符是第 length - 1 位的。<b><br />charCodeAt()</b> 用法：&lt;字符串对象&gt;.charCodeAt(&lt;位置&gt;)；返回该字符串位于第&lt;位置&gt;位的单个字符的 ASCII 码。<b><br />fromCharCode()</b> 用法：String.fromCharCode(a, b, c...)；返回一个字符串，该字符串每个字符的 ASCII 码由 a, b, c... 等来确定。<b><br />indexOf()</b> 用法：&lt;字符串对象&gt;.indexOf(&lt;另一个字符串对象&gt;[, &lt;起始位置&gt;])；该方法从&lt;字符串对象&gt;中查找&lt;另一个字符串对象&gt;（如果给出&lt;起始位置&gt;就忽略之前的位置），如果找到了，就返回它的位置，没有找到就返回“-1”。所有的“位置”都是从零开始的。<b><br />lastIndexOf()</b> 用法：&lt;字符串对象&gt;.lastIndexOf(&lt;另一个字符串对象&gt;[, &lt;起始位置&gt;])；跟 indexOf() 相似，不过是从后边开始找。<b><br />split()</b> 用法：&lt;字符串对象&gt;.split(&lt;分隔符字符&gt;)；返回一个数组，该数组是从&lt;字符串对象&gt;中分离开来的， &lt;分隔符字符&gt;决定了分离的地方，它本身不会包含在所返回的数组中。例如：'1&amp;2&amp;345&amp;678'.split ('&amp;')返回数组：1,2,345,678。关于数组，我们等一下就讨论。<b><br />substring()</b> 用法：&lt;字符串对象&gt;.substring(&lt;始&gt;[, &lt;终&gt;])；返回原字符串的子字符串，该字符串是原字符串从&lt;始&gt;位置到&lt;终&gt;位置的前一位置的一段。&lt;终 &gt; - &lt;始&gt; = 返回字符串的长度（length）。如果没有指定&lt;终&gt;或指定得超过字符串长度，则子字符串从&lt;始&gt;位置一直取到原字符串尾。如果所指定的位置不能返回字符串，则返回空字符串。<b><br />substr()</b> 用法：&lt;字符串对象&gt;.substr(&lt;始&gt;[, &lt;长&gt;])；返回原字符串的子字符串，该字符串是原字符串从&lt;始&gt;位置开始，长度为&lt;长&gt;的一段。如果没有指定 &lt;长&gt;或指定得超过字符串长度，则子字符串从&lt;始&gt;位置一直取到原字符串尾。如果所指定的位置不能返回字符串，则返回空字符串。<b><br />toLowerCase()</b> 用法：&lt;字符串对象&gt;.toLowerCase()；返回把原字符串所有大写字母都变成小写的字符串。<br /><b>toUpperCase()</b> 用法：&lt;字符串对象&gt;.toUpperCase()；返回把原字符串所有小写字母都变成大写的字符串。</font>
				</p>
		</blockquote>
		<p>
				<font size="2">
						<b>
								<a name="Array">Array</a>
						</b> 数组对象。数组对象是一个对象的集合，里边的对象可以是不同类型的。数组的每一个成员对象都有一个“下标”，用来表示它在数组中的位置（既然是“位置”，就也是从零开始的啦）。</font>
		</p>
		<p>
				<font size="2">数组的定义方法：</font>
		</p>
		<blockquote>
				<p>
						<font size="2">var &lt;数组名&gt; = new Array();</font>
				</p>
		</blockquote>
		<p>
				<font size="2">这样就定义了一个空数组。以后要添加数组元素，就用：</font>
		</p>
		<blockquote>
				<p>
						<font size="2">&lt;数组名&gt;[&lt;下标&gt;] = ...;</font>
				</p>
		</blockquote>
		<p>
				<font size="2">注意这里的方括号不是“可以省略”的意思，数组的下标表示方法就是用方括号括起来。</font>
		</p>
		<p>
				<font size="2">如果想在定义数组的时候直接初始化数据，请用：</font>
		</p>
		<blockquote>
				<p>
						<font size="2">var &lt;数组名&gt; = new Array(&lt;元素1&gt;, &lt;元素2&gt;, &lt;元素3&gt;...);</font>
				</p>
		</blockquote>
		<p>
				<font size="2">例如，var myArray = new Array(1, 4.5, 'Hi'); 定义了一个数组 myArray，里边的元素是：myArray[0] == 1; myArray[1] == 4.5; myArray[2] == 'Hi'。</font>
		</p>
		<p>
				<font size="2">但是，如果元素列表中只有一个元素，而这个元素又是一个正整数的话，这将定义一个包含&lt;正整数&gt;个空元素的数组。</font>
		</p>
		<p>
				<font size="2">注意：JavaScript只有一维数组！千万不要用“Array(3,4)”这种愚蠢的方法来定义 4 x 5 的二维数组，或者用“myArray[2,3]”这种方法来返回“二维数组”中的元素。任意“myArray[...,3]”这种形式的调用其实只返回了 “myArray[3]”。要使用多维数组，请用这种虚拟法：</font>
		</p>
		<blockquote>
				<p>
						<font size="2">var myArray = new Array(new Array(), new Array(), new Array(), ...);</font>
				</p>
		</blockquote>
		<p>
				<font size="2">其实这是一个一维数组，里边的每一个元素又是一个数组。调用这个“二维数组”的元素时：myArray[2][3] = ...;</font>
		</p>
		<blockquote>
				<p>
						<font size="2">
								<b>属性</b>
						</font>
				</p>
				<p>
						<font size="2">
								<b>length</b> 用法：&lt;数组对象&gt;.length；返回：数组的长度，即数组里有多少个元素。它等于数组里最后一个元素的下标加一。所以，想添加一个元素，只需要：myArray[myArray.length] = ...。</font>
				</p>
				<p>
						<font size="2">
								<b>方法</b>
						</font>
				</p>
				<p>
						<font size="2">
								<b>join()</b> 用法：&lt;数组对象&gt;.join(&lt;分隔符&gt;)；返回一个字符串，该字符串把数组中的各个元素串起来，用&lt;分隔符&gt;置于元素与元素之间。这个方法不影响数组原本的内容。<b><br />reverse()</b> 用法：&lt;数组对象&gt;.reverse()；使数组中的元素顺序反过来。如果对数组[1, 2, 3]使用这个方法，它将使数组变成：[3, 2, 1]。<b><br />slice()</b> 用法：&lt;数组对象&gt;.slice(&lt;始&gt;[, &lt;终&gt;])；返回一个数组，该数组是原数组的子集，始于&lt;始&gt;，终于&lt;终&gt;。如果不给出&lt;终&gt;，则子集一直取到原数组的结尾。<b><br />sort()</b> 用法：&lt;数组对象&gt;.sort([&lt;方法函数&gt;])；使数组中的元素按照一定的顺序排列。如果不指定&lt;方法函数&gt;，则按字母顺序排列。在这种情况下，80 是比 9 排得前的。如果指定&lt;方法函数&gt;，则按&lt;方法函数&gt;所指定的排序方法排序。&lt;方法函数&gt;比较难讲述，这里只将一些有用的&lt;方法函数&gt;介绍给大家。</font>
				</p>
				<p>
						<font size="2">按升序排列数字：</font>
				</p>
				<blockquote>
						<p>
								<font size="2">function sortMethod(a, b) {<br />    return a - b;<br />}<br /><br />myArray.sort(sortMethod);</font>
						</p>
				</blockquote>
				<p>
						<font size="2">按降序排列数字：把上面的“a - b”该成“b - a”。</font>
				</p>
				<p>
						<font size="2">有关函数，请看下面。</font>
				</p>
		</blockquote>
		<p>
				<font size="2">
						<b>
								<a name="Math">Math</a>
						</b>“数学”对象，提供对数据的数学计算。下面所提到的属性和方法，不再详细说明“用法”，大家在使用的时候记住用“Math.&lt;名&gt;”这种格式。</font>
		</p>
		<blockquote>
				<p>
						<font size="2">
								<b>属性</b>
						</font>
				</p>
				<p>
						<font size="2">
								<b>E </b>返回常数 e (2.718281828...)。<b><br />LN2 </b>返回 2 的自然对数 (ln 2)。<b><br />LN10 </b>返回 10 的自然对数 (ln 10)。<b><br />LOG2E </b>返回以 2 为低的 e 的对数 (log<sub>2</sub>e)。<b><br />LOG10E </b>返回以 10 为低的 e 的对数 (log<sub>10</sub>e)。<b><br />PI </b>返回π（3.1415926535...)。<b><br />SQRT1_2 </b>返回 1/2 的平方根。<b><br />SQRT2 </b>返回 2 的平方根。</font>
				</p>
				<p>
						<font size="2">
								<b>方法</b>
						</font>
				</p>
				<p>
						<font size="2">
								<b>abs(x) </b>返回 x 的绝对值。<b><br />acos(x) </b>返回 x 的反余弦值（余弦值等于 x 的角度），用弧度表示。<b><br />asin(x) </b>返回 x 的反正弦值。<b><br />atan(x) </b>返回 x 的反正切值。<b><br />atan2(x, y) </b>返回复平面内点(x, y)对应的复数的幅角，用弧度表示，其值在 -π 到 π 之间。<b><br />ceil(x) </b>返回大于等于 x 的最小整数。<b><br />cos(x) </b>返回 x 的余弦。<b><br />exp(x) </b>返回 e 的 x 次幂 (e<sup>x</sup>)。<b><br />floor(x) </b>返回小于等于 x 的最大整数。<b><br />log(x) </b>返回 x 的自然对数 (ln x)。<b><br />max(a, b) </b>返回 a, b 中较大的数。<b><br />min(a, b) </b>返回 a, b 中较小的数。<b><br />pow(n, m) </b>返回 n 的 m 次幂 (n<sup>m</sup>)。<b><br />random() </b>返回大于 0 小于 1 的一个随机数。<b><br />round(x) </b>返回 x 四舍五入后的值。<b><br />sin(x) </b>返回 x 的正弦。<b><br />sqrt(x) </b>返回 x 的平方根。<b><br />tan(x) </b>返回 x 的正切。</font>
				</p>
		</blockquote>
		<p>
				<font size="2">
						<b>
								<a name="Date">Date</a>
						</b>日期对象。这个对象可以储存任意一个日期，从 0001 年到 9999 年，并且可以精确到毫秒数（1/1000 秒）。在内部，日期对象是一个整数，它是从 1970 年 1 月 1 日零时正开始计算到日期对象所指的日期的毫秒数。如果所指日期比 1970 年早，则它是一个负数。所有日期时间，如果不指定时区，都采用“UTC”（世界时）时区，它与“GMT”（格林威治时间）在数值上是一样的。</font>
		</p>
		<p>
				<font size="2">定义一个日期对象：</font>
		</p>
		<blockquote>
				<p>
						<font size="2">var d = new Date;</font>
				</p>
		</blockquote>
		<p>
				<font size="2">这个方法使 d 成为日期对象，并且已有初始值：当前时间。如果要自定初始值，可以用：</font>
		</p>
		<blockquote>
				<p>
						<font size="2">var d = new Date(99, 10, 1);     //99 年 10 月 1 日<br />var d = new Date('Oct 1, 1999'); //99 年 10 月 1 日</font>
				</p>
		</blockquote>
		<p>
				<font size="2">等等方法。最好的方法就是用下面介绍的“方法”来严格的定义时间。</font>
		</p>
		<blockquote>
				<p>
						<font size="2">
								<b>方法</b>
						</font>
				</p>
				<p>
						<font size="2">以下有很多“g/set[UTC]XXX”这样的方法，它表示既有“getXXX”方法，又有“setXXX”方法。“get”是获得某个数值，而 “set”是设定某个数值。如果带有“UTC”字母，则表示获得/设定的数值是基于 UTC 时间的，没有则表示基于本地时间或浏览期默认时间的。</font>
				</p>
				<p>
						<font size="2">如无说明，方法的使用格式为：“&lt;对象&gt;.&lt;方法&gt;”，下同。</font>
				</p>
				<p>
						<font size="2">
								<b>g/set[UTC]FullYear()</b> 返回/设置年份，用四位数表示。如果使用“x.set[UTC]FullYear(99)”，则年份被设定为 0099 年。<b><br />g/set[UTC]Year()</b><b></b>返回/设置年份，用两位数表示。设定的时候浏览器自动加上“19”开头，故使用“x.set[UTC]Year(00)”把年份设定为 1900 年。<b><br />g/set[UTC]Month()</b><b></b>返回/设置月份。<b><br />g/set[UTC]Date()</b><b></b>返回/设置日期。<b><br />g/set[UTC]Day()</b><b></b>返回/设置星期，0 表示星期天。<b><br />g/set[UTC]Hours()</b><b></b>返回/设置小时数，24小时制。<b><br />g/set[UTC]Minutes()</b><b></b>返回/设置分钟数。<b><br />g/set[UTC]Seconds()</b><b></b>返回/设置秒钟数。<b><br />g/set[UTC]Milliseconds()</b><b></b>返回/设置毫秒数。<b><br />g/setTime()</b> 返回/设置时间，该时间就是日期对象的内部处理方法：从 1970 年 1 月 1 日零时正开始计算到日期对象所指的日期的毫秒数。如果要使某日期对象所指的时间推迟 1 小时，就用：“x.setTime(x.getTime() + 60 * 60 * 1000);”（一小时 60 分，一分 60 秒，一秒 1000 毫秒）。<b><br />getTimezoneOffset()</b> 返回日期对象采用的时区与格林威治时间所差的分钟数。在格林威治东方的市区，该值为负，例如：中国时区（GMT+0800）返回“-480”。<b><br />toString()</b> 返回一个字符串，描述日期对象所指的日期。这个字符串的格式类似于：“Fri Jul 21 15:43:46 UTC+0800 2000”。<b><br />toLocaleString()</b> 返回一个字符串，描述日期对象所指的日期，用本地时间表示格式。如：“2000-07-21 15:43:46”。<b><br />toGMTString()</b> 返回一个字符串，描述日期对象所指的日期，用 GMT 格式。<b><br />toUTCString()</b> 返回一个字符串，描述日期对象所指的日期，用 UTC 格式。<b><br />parse()</b> 用法：Date.parse(&lt;日期对象&gt;)；返回该日期对象的内部表达方式。</font>
				</p>
		</blockquote>
		<h3>
				<font size="2">
						<a name="全局对象">全局对象</a>
				</font>
		</h3>
		<p>
				<font size="2">全局对象从不现形，它可以说是虚拟出来的，目的在于把全局函数“对象化”。在 Microsoft JScript 语言参考中，它叫做“Global 对象”，但是引用它的方法和属性从来不用“Global.xxx”（况且这样做会出错），而直接用“xxx”。</font>
		</p>
		<blockquote>
				<p>
						<font size="2">
								<b>属性</b>
						</font>
				</p>
				<p>
						<font size="2">
								<b>
										<a href="http://www.iselong.com/online/ebooks/javascript/js_1.htm#JavaScript%E5%B8%B8%E6%95%B0" tppabs="js_1.htm#JavaScript常数">
												<font color="#0000ff">NaN</font>
										</a>
								</b> 一早就说过了。</font>
				</p>
				<p>
						<font size="2">
								<b>方法</b>
						</font>
				</p>
				<p>
						<font size="2">
								<b>eval()</b> 把括号内的字符串当作标准语句或表达式来运行。<b><br />isFinite()</b> 如果括号内的数字是“有限”的（介于 Number.MIN_VALUE 和 Number.MAX_VALUE 之间）就返回 true；否则返回 false。<b><br />isNaN()</b> 如果括号内的值是“NaN”则返回 true 否则返回 false。<b><br />parseInt()</b> 返回把括号内的内容转换成整数之后的值。如果括号内是字符串，则字符串开头的数字部分被转换成整数，如果以字母开头，则返回“NaN”。<b><br />parseFloat()</b> 返回把括号内的字符串转换成浮点数之后的值，字符串开头的数字部分被转换成浮点数，如果以字母开头，则返回“NaN”。<br /><b>toString()</b> 用法：&lt;对象&gt;.toString()；把对象转换成字符串。如果在括号中指定一个数值，则转换过程中所有数值转换成特定进制。<br /><b>escape()</b> 返回括号中的字符串经过编码后的新字符串。该编码应用于 URL，也就是把空格写成“%20”这种格式。“+”不被编码，如果要“+”也被编码，请用：escape('...', 1)。<br /><b>unescape()</b> 是 escape() 的反过程。解编括号中字符串成为一般字符串。</font>
				</p>
		</blockquote>
		<h3>
				<font size="2">
						<b>
								<a name="函数">函数</a>
						</b>
				</font>
		</h3>
		<p>
				<font size="2">
						<b>
								<a name="函数的定义">函数的定义</a>
						</b>
				</font>
		</p>
		<p>
				<font size="2">所谓“函数”，是有返回值的对象或对象的方法。 </font>
		</p>
		<p>
				<font size="2">
						<b>
								<a name="函数的种类">函数的种类</a>
						</b>
				</font>
		</p>
		<p>
				<font size="2">常见的函数有：构造函数，如 Array()，能构造一个数组；全局函数，即全局对象里的方法；自定义函数；等等。 </font>
		</p>
		<p>
				<font size="2">
						<b>
								<a name="自定义函数">自定义函数</a>
						</b>
				</font>
		</p>
		<p>
				<font size="2">定义函数用以下语句： </font>
		</p>
		<blockquote>
				<p>
						<font size="2">function 函数名([参数集]) {<br />    ...<br />    [return[ &lt;值&gt;];]<br />    ...<br />} </font>
				</p>
		</blockquote>
		<p>
				<font size="2">其中，用在 function 之后和函数结尾的大括号是不能省去的，就算整个函数只有一句。 </font>
		</p>
		<p>
				<font size="2">函数名与变量名有一样的起名规定，也就是只包含字母数字下划线、字母排头、不能与保留字重复等。 </font>
		</p>
		<p>
				<font size="2">参数集可有可无，但括号就一定要有。 </font>
		</p>
		<p>
				<font size="2">
						<b>参数 </b>是函数外部向函数内部传递信息的桥梁，例如，想叫一个函数返回 3 的立方，你就要让函数知道“3”这个数值，这时候就要有一个变量来接收数值，这种变量叫做参数。 </font>
		</p>
		<p>
				<font size="2">参数集是一个或多个用逗号分隔开来的参数的集合，如：a, b, c。 </font>
		</p>
		<p>
				<font size="2">函数的内部有一至多行语句，这些语句并不会立即执行，而只当有其它程序调用它时才执行。这些语句中可能包含“return”语句。在执行一个函数的时候，碰到 return 语句，函数立刻停止执行，并返回到调用它的程序中。如果“return”后带有&lt;值&gt;，则退出函数的同时返回该值。 </font>
		</p>
		<p>
				<font size="2">在函数的内部，参数可以直接当作变量来使用，并可以用 var 语句来新建一些变量，但是这些变量都不能被函数外部的过程调用。要使函数内部的信息能被外部调用，要么使用“return”返回值，要么使用<b>全局变量</b>。 </font>
		</p>
		<p>
				<font size="2">
						<b>全局变量</b> 在 Script 的“根部”（非函数内部）的“var”语句所定义的变量就是全局变量，它能在整个过程的任意地方被调用、更改。 </font>
		</p>
		<p>
				<font size="2">
						<b>例</b>
				</font>
		</p>
		<blockquote>
				<p>
						<font size="2">function addAll(a, b, c) {<br />    return a + b + c;<br />}<br /><br />var total = addAll(3, 4, 5); </font>
				</p>
		</blockquote>
		<p>
				<font size="2">这个例子建立了一个叫“addAll”的函数，它有 3 个参数：a, b, c，作用是返回三个数相加的结果。在函数外部，利用“var total = addAll(3, 4, 5);”接收函数的返回值。 </font>
		</p>
		<p>
				<font size="2">更多的时候，函数是没有返回值的，这种函数在一些比较强调严格的语言中是叫做“过程”的，例如 Basic 类语言的“Sub”、Pascal 语言的“procedure”。 </font>
		</p>
		<blockquote>
				<p>
						<font size="2">
								<b>属性</b>
						</font>
				</p>
				<p>
						<font size="2">
								<b>arguments</b> 一个数组，反映外部程序调用函数时指定的参数。用法：直接在函数内部调用“arguments”。 </font>
				</p>
		</blockquote>
<img src ="http://www.blogjava.net/hellotony/aggbug/32876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellotony/" target="_blank">Tony</a> 2006-02-28 17:01 <a href="http://www.blogjava.net/hellotony/articles/32876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>