﻿<?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-黄小二的讀書筆記-文章分类-Ajax</title><link>http://www.blogjava.net/kiant/category/39177.html</link><description>有才而性缓定属大才，有智而气和斯为大智。人偏狭我受之以宽容，人险仄我持之以坦荡。缓事宜急干，敏则有功；急事宜缓办，忙则多措。
--李叔同</description><language>zh-cn</language><lastBuildDate>Tue, 01 Jun 2010 21:03:23 GMT</lastBuildDate><pubDate>Tue, 01 Jun 2010 21:03:23 GMT</pubDate><ttl>60</ttl><item><title>Javascript学习指南（第2版）笔记(六) DOM、Ajax及其数据</title><link>http://www.blogjava.net/kiant/articles/322267.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Sun, 30 May 2010 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/322267.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/322267.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/322267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/322267.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/322267.html</trackback:ping><description><![CDATA[<br />
<a href="#1">1、DOM<br />
</a><a href="#2">2、节点属性和方法</a><br />
<a href="#3">3、Ajax安全和工作区</a><br />
<a href="#4">4、Ajax数据：XML或 JSON（JavaScript对象符号）</a><br />
<br />
<br />
<br />
<br />
<a id="1" name="1"></a><br />
<strong>1、DOM</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在 W3C关于 DOM的规范中，将 document元素描述为一个节点(node)集合，他们之间是以有层次的树形结构连接的。你不仅可以从树上读取节点，还可以删除或创建新的节点。<br />
<br />
#document<br />
html<br />
&nbsp; head<br />
&nbsp;&nbsp;&nbsp; title<br />
&nbsp; body<br />
&nbsp;&nbsp;&nbsp; h1<br />
&nbsp;&nbsp;&nbsp; div<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #text<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #text
<hr color="#3366ff" size="1" />
<br />
<a id="2" name="2"></a><br />
<strong>2、节点属性和方法</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 对于文档树上的每个节点都拥有 DOM(Core)的 Node对象中定义的基本属性和基本方法集。Node对象的属性主要包括：<br />
<br />
nodeName，对象名称，如 head元素的名称就是 HEAD；<br />
nodeValue，如果不是一个元素，则返回对象值；<br />
nodeType，用数字表示的节点类型；<br />
parentNode，当前节点的父节点；<br />
childNodes，由其子节点组成的 NodeList，前提是存在子节点；<br />
firstChild，由子节点组成的 NodeList中的第一个节点；<br />
lastChild，由子节点组成的 NodeList中的最后一个节点；<br />
previousSibling，如果当前节点是位于 NodeList中的子节点，那么它表示的就是该列表中的前一个节点；<br />
nextSibling，如果当前节点是位于 NodeList中的子节点，那么它表示的就是该列表的下一个节点；<br />
attributes，一个 NamedNodeMap，它是以键/值对形式表示的，是该元素的属性列表；<br />
ownerDocument，拥有的 document对象，当你拥有多个 document对象时它比较有用；<br />
namespaceURI，命名空间的 URI，如果有的话，他是针对节点的；<br />
Prefix，命名空间的前缀，如果有的话，它是针对节点的；<br />
localName，如果指定了 namespaceURI的话，它表示的是节点的本地名。
<hr color="#3366ff" size="1" />
<br />
<a id="3" name="3"></a><br />
<strong>3、Ajax安全和工作区</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在 Ajax遵循 JavaScript中相同源、相同域的规则：在 Web页面中只能调用相同服务器（相同域）的 Web服务；也就是说：服务器端页面与服务器发送请求的页面处于相同的服务器、相同的域中。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 但是对于 Ajax程序而言，向本地服务器端请求一个 Web服务，然后接收本地服务器的返回信息即可。它并不关心本地 Web服务实际上是否通过访问远程 Web服务实现的。
<hr color="#3366ff" size="1" />
<br />
<a id="4" name="4"></a><br />
<strong>4、Ajax数据：XML或 JSON（JavaScript对象符号）</strong><br />
<br />
<br />
<strong>XML格式的 Ajax应答</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 好处是比简单的字符串或 HTML片段更多元。另外，你还可以向对待 Web页面元素那样，直接通过 DOM方法来操作 Ajax调用返回的 XML格式应答。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 确保在服务器端应用程序在返回数据时设置了正确的数据 MINE类型 text/xml，然后通过 XMLHttpRequest对象的 responseXML容器来获取应答信息。<br />
<br />
<br />
<strong>JSON</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; JSON是一种&#8220;轻量级的数据交换格式&#8221;。和一组由逗号分开的字符串，以及处理复杂（成本高昂）的 XML相比，JSON是一种很容易将服务器端数据结构转成 JavaScript对象的数据格式。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; JSON实际上就是使用 JavaScript语法定义的对象，一个对象的语法包括一对大括号以及其中的成员：<br />
&nbsp;&nbsp;&nbsp;&nbsp; object{ } or object { string : value ...}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 对于数组而言，他是由一组元素加上一对方括号组成的：<br />
&nbsp;&nbsp;&nbsp;&nbsp; array[] or array[ value, value, value, ..., value ]<br />
<br />
注：在 JavaScript可以用单引号或双引号来引用字符串，而 JSON只支持双引号。<br />
<br />
示例，在 PHP脚本中使用简单的 JSON<br />
$result = '[ { "value" : "stlou", "title" : "St. Louis" }, ' .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&nbsp; { "value" : "kc" , "title" : "Kansas City" } ]';<br />
<br />
<br />
<strong>JSON对象</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在 http://www.json.org/js.html上可以找到一个 JSON JavaScript程序库，它提供了一些基于该程序库的 JSON对象。包含了直接访问 JSON对象的静态方法：<br />
JSON.parse，基于指定的 JSON格式字符串创建一个 JavaScript对象；<br />
JSON.stringify，将一个 JavaScript对象序列化成一个 JSON格式的字符串。<br />
<br />
<br />
JSON 示例1：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">//</span><span style="color: #008000">对&nbsp;JSON字符串进行&#8220;计算&#8221;</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;response&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;JSON.parse(xmlHttpObj.responseText);<br />
<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;citySelection&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">citySelection</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">处理从&nbsp;JSON对象返回的数据</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">response.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;response[i].title;<br />
&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;response[i].value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;citySelection.options[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Option(name,&nbsp;value);<br />
}</span></div>
<br />
<br />
JSON示例2：
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">//</span><span style="color: #008000">从服务器获得的&nbsp;JSON对象实例：</span><span style="color: #008000"><br />
</span><span style="color: #000000">{&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">title</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Appletini</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">ingredients</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;:&nbsp;[&nbsp;{&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">ingredient</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">1&nbsp;ounce&nbsp;vodka</span><span style="color: #000000">"</span><span style="color: #000000">},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">ingredient</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">1/2&nbsp;ounce&nbsp;Sour&nbsp;Apple&nbsp;Pucker&nbsp;or&nbsp;apple&nbsp;schnapps&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">}&nbsp;],<br />
&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">instruction</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Mix&nbsp;vodka&nbsp;and&nbsp;schnapps&nbsp;in&nbsp;a&nbsp;glass&nbsp;filled&nbsp;with&nbsp;ice.</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;}<br />
<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">============================================================</span><span style="color: #008000"><br />
//</span><span style="color: #008000">处理&nbsp;JSON数据</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
</span><span style="color: #008000">//</span><span style="color: #008000">创建对象</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;recipeObj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;JSON.parse(xmlhttp.responseText);<br />
<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;recipe&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.createElement('div');<br />
recipe.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'recipe';<br />
recipe.className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'recipe';<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">添加标题</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;title&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;recipeObj['title'];<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;titleNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.creteElement('h3');<br />
titleNode.appendChild(document.createTextNode(title));<br />
recipe.appendChild(titleNode);<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">添加配方成分</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;ingredients&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;recipeObj.ingredients;<br />
</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">ingredients.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;item&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ingredients[i].ingredient;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
}<br />
<br />
<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.<br />
body[</span><span style="color: #000000">0</span><span style="color: #000000">].appendChild(recipe);</span></div>
 <img src ="http://www.blogjava.net/kiant/aggbug/322267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2010-05-30 11:17 <a href="http://www.blogjava.net/kiant/articles/322267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript学习指南（第2版）笔记(五) 浏览器对象、cookie</title><link>http://www.blogjava.net/kiant/articles/322244.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Sat, 29 May 2010 13:46:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/322244.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/322244.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/322244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/322244.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/322244.html</trackback:ping><description><![CDATA[<br />
<a href="#1">1、window对象</a><br />
<a href="#2">2、同源安全策略</a><br />
<a href="#3">3、cookie</a><br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;浏览器对象模型（BOM）是一组从浏览器上下文继承而来的对象，这也是绝大多数 JavaScript应用程序中函数运行的上下文。有时它也被称之为 DOM Level 0，或者就叫 DOM。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BOM是一组有限的公共 Web对象，也是一个层次化的对象集，每个层次上的对象都可以通过它们的父对象来访问，比如 window[navigator, location, frames, screen, history, document[forms, cookie, link/anchors, images, embeds/plug-ins, all]]。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;访问对象时，你可以：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var theImage = document.form[0].elements["someelement"].value;<br />
<br />
<a id="1" name="1"></a><br />
<strong>1、window对象<br />
</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;浏览器的 window对象封装了整个浏览器环境，包括 window的"chrome"（组成浏览器窗体的通用组件）、实际的 Web页面，以及页面中的事件。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过 window可以手动设置浏览器状态条上的状态，执行打开一个新窗口、重新调整已显示窗口的大小、关闭窗口等操作。不过随着动态 Web效果和 Ajax的流行，这种弹出式窗口越来不被喜欢。<br />
<br />
window对象的方法和属性可以分成4类：<br />
<br />
<strong>a. 创建新窗口，维护现有窗口行为</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;弹出式对话框：alert、confirm和 prompt<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建自定义窗口：window.open()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;维护窗口：通过窗口的引用能够完成该窗口的维护，要维护父窗口则使用关键字 opener，要维护包含当前运行脚本的窗口，则应该使用关键字 self。<br />
<br />
<br />
<strong>b. 在窗口中创建带分区的文档（帧和iframes）<br />
</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame对象定义了以下元素：parent、length和 name。对于跨帧通信而言，name和 parent属性特别重要。其父元素 frameset（帧集，包括帧的窗口）可以通过每个帧的名字访问所有子帧（也可以通过帧数组，以对象数量作为索引值）；每个帧都可以通过通用的关键字 parent来访问该帧集。兄弟帧元素之间可以通过 parent和对方的 name属性来访问。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;和标准的帧不一样，iframe是内嵌在页面中的。你可以为其指定高度和宽度，如果将它们都设置为0，那么它就将被隐藏起来。iframe会把它嵌入到的页面视为自己的父元素，这也是它和更高层页面进行通信的方法。通常，你可以使用 document的 getElementById方法来访问它，也可以使用 target属性载入其内容。<br />
<br />
<br />
<strong>c. 定时器的创建和控制<br />
</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有两类定时器：一类是一次性的，另一类是周期性使用的。两种定时器都能取消，一次性定时器方法只会被调用一次。<br />
<br />
要想创建一个不重复触发的定时器，可以使用 setTimeout方法：<br />
var tmOut = setTimeout("func", 5000, "param1", param2,,,,, paramn);<br />
<br />
如果想清除这个定时器，可以使用 clearTimeout方法：<br />
clearTimeout(tmOut);<br />
<br />
如果你想周期性地使用这个定时器，那么应调用 setInterval方法：<br />
var tmOut = setInterval("functionName", 5000);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;同样，如果想暂停或取消这个周期性定时器，可以使用 clearInterval方法。如果你想实现一个周期性定时器，但又想在参数中指定一个函数文字量，那么你可以在每次定时器过期时再用 setTimeout函数重新设置这个定时器。<br />
<br />
注：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在 IE浏览器中，setInterval和 setTimeout方法是不支持在最后添加函数调用所需参数的。<br />
<br />
<br />
<strong>d. 用来控制浏览器其他元素</strong><br />
<br />
history对象<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;history对象负责维护浏览器中页面载入操作的历史记录。同样，其方法和属性能够完成通过浏览器的后退和前进按钮所能实现的导航操作。<br />
<br />
screen对象<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;screen对象所包含的信息是屏幕显示有相关的，包括其宽度、高度，以及颜色或像素浓淡。虽然他们不是很常用，但他们对于那些需要修改浏览器窗口大小、创建需要特定调色板的带色彩对象等功能而言是不错的选择。<br />
<br />
navigator对象<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;navigator对象中提供的是和浏览器或其他访问该页面的用户代理相关的信息。通过它可以检查操作系统、浏览器或浏览器族、安全策略、语言以及 cookie是否启用。<br />
<br />
document对象<br />
1.链接和锚<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document对象的 links集合是由页面中所有超链接组成的，它的访问方法和数组一样。 <br />
<br />
2.图像<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;和链接一样，图像也有其对应的对象，也可以直接设置他们的属性，如表示图像 URL的 src属性。<br />
<br />
3.innerHTML<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用 innerHTML属性可以修改页面中任何一个 HTML元素，它之所以仍然流行，是因为通过它修改页面元素时无需构建整个页面的内容，你只需创建一个 HTML格式的字符串，然后通过 innerHTML就可以添加到 Web页面中。不过，使用 innerHTML意味着无论向 Web页面添加了什么，他们都无法融合到页面的 document树上，因此如果你混合使用 innerHTML和新的 DOM方法将会带来很大的破坏。
<hr color="#3366ff" size="1" />
<br />
<a id="2" name="2"></a><br />
<strong>2、同源安全策略</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;同源安全策略确保了不同域名、协议或端口的页面之间不能够通过脚本进行通信。同源安全策略将应用于不同页面之间的通信，包括父窗口中的表单和内嵌窗口之间的通信，如帧及 iframe。
<hr color="#3366ff" size="1" />
<br />
<a id="3" name="3"></a><br />
<strong>3、cookie</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookie的意义就是一个带有过期时间、域名、路径的小型的键/值对，之所以需要提供这些消息，是为了确保正确的服务器能够读取到正确的 cookie。这些信息将作为 Web请求的一部分发送，因此在服务器端和浏览器都能访问这些数据。<br />
<br />
<strong>设置、读取、删除 cookie</strong>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">//</span><span style="color: #008000">&nbsp;if&nbsp;cookie&nbsp;enabled</span><span style="color: #008000"><br />
</span><span style="color: #000000">window.onload&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(navigator.cookieEnabled)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;sum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;readCookie(</span><span style="color: #000000">"</span><span style="color: #000000">sum</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(sum)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;iSum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;parseInt(sum)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">cookie&nbsp;count&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;iSum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(iSum&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eraseCookie(</span><span style="color: #000000">"</span><span style="color: #000000">sum</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setCookie(</span><span style="color: #000000">"</span><span style="color: #000000">sum</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;iSum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">no&nbsp;cookie,&nbsp;setting&nbsp;now</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setCookie(</span><span style="color: #000000">"</span><span style="color: #000000">sum</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;将&nbsp;cookie有效期设置为&nbsp;2016年</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;setCookie(key,&nbsp;value)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;cookieDate&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date(</span><span style="color: #000000">2016</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">11</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">19</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">30</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">30</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.cookie&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;key&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;encodeURI(value)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;expires=</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;cookieDate.toGMTString()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;path=/</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;在每个&nbsp;cookie之前用分号隔开</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;readCookie(key)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;cookie&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.cookie;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;first&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cookie.indexOf(key&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;存在&nbsp;cookie</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(first&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cookie.substring(first,&nbsp;cookie.length);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;last&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.indexOf(</span><span style="color: #000000">"</span><span style="color: #000000">;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;如果是最后一个&nbsp;cookie</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(last&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;last&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.length;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;获取&nbsp;cookie的值</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.substring(</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;last).split(</span><span style="color: #000000">"</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;decodeURI(str[</span><span style="color: #000000">1</span><span style="color: #000000">]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;将&nbsp;cookie的有效期设置成过去，以达到删除&nbsp;cookie的目的</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;eraseCookie&nbsp;(key)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;cookieDate&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date(</span><span style="color: #000000">2000</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">11</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">19</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">30</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">30</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.cookie&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;key&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">=&nbsp;;&nbsp;expirse=</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;cookieDate.toGMTString()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;path/</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
}</span></div>
<img src ="http://www.blogjava.net/kiant/aggbug/322244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2010-05-29 21:46 <a href="http://www.blogjava.net/kiant/articles/322244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript学习指南（第2版）笔记(四) 表单、表单事件及校验</title><link>http://www.blogjava.net/kiant/articles/322211.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Sat, 29 May 2010 07:50:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/322211.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/322211.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/322211.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/322211.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/322211.html</trackback:ping><description><![CDATA[<br />
<a href="#1">1、跨浏览器兼容的事件处理<br />
</a><a href="#2">2、选择列表框<br />
</a><a href="#3">3、单选按钮和复选框<br />
</a><a href="#4">4、测验</a><br />
<br />
<br />
<br />
<a id="1" name="1"></a><br />
<strong>1、跨浏览器兼容的事件处理</strong><br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">//</span><span style="color: #008000">可复用的事件处理函数</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;catchEvent(eventObj,&nbsp;event,&nbsp;eventHandler)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(eventObj.addEventListener)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;eventObj.addEventListener(event,&nbsp;eventHandler,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(eventObj.attachEvent)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;event&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">on</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;event;<br />
&nbsp;&nbsp;&nbsp;&nbsp;eventObj.attachEvent(event,&nbsp;eventHandler);<br />
&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">可复用的事件取消函数</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;cancelEvent(event)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(event.preventDefault)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;event.preventDefault();<br />
&nbsp;&nbsp;&nbsp;&nbsp;event.stopPropagation();<br />
&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;event.retrunValue&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;event.cancelBubble&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
}</span></div>
<hr color="#3366ff" size="1" />
<br />
<a id="2" name="2"></a><br />
<strong>2、选择列表框</strong><br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;opts&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">someForm</span><span style="color: #000000">"</span><span style="color: #000000">).selectOpts.options;<br />
</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">opts.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(opts[i].selected)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(opts[i].text&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;opts[i].value);<br />
&nbsp;&nbsp;}<br />
}</span></div>
<br />
a.动态添加一个新的选项：由于数组的索引值是从 0开始编号的，因此只要以数组的 length属性作为索引值，就可以在数组的最后面添加一个新的数组元素。<br />
opts[opts.length] = new Option["Option Four", "Opt4"];<br />
<br />
b.删除一个选项，只需将数组中该选项设置为 null，这样操作将会重新安排数组，而不会导致编号不连续的现象。<br />
opts[2] = null;<br />
<br />
如果想删除所有选项，那么只需将数组的 length设置为 0。<br />
opts.length = 0;<br />
<br />
<br />
<strong>自动选择</strong><br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">//</span><span style="color: #008000">catchEvent(document.getElementById("selectOpts"),&nbsp;"change",&nbsp;checkSelect);</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;theEvent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;evnt&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;evnt&nbsp;:&nbsp;window.event;<br />
<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;opts&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">someForm</span><span style="color: #000000">"</span><span style="color: #000000">).selectOpts.options;<br />
</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">opts.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(opts[i].selected)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">switch</span><span style="color: #000000">&nbsp;(opts[i].value)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Opt1</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;:&nbsp;opts[i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">].selected&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Opt3</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;:&nbsp;opts[i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">].selected&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Opt5</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;:&nbsp;opts[i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">].selected&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
}</span></div>
<hr color="#3366ff" size="1" />
<br />
<a id="3" name="3"></a><br />
<strong>3、单选按钮和复选框</strong><br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">//</span><span style="color: #008000">单选按钮访问：</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;buttons&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">radioGroup</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">buttons.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(buttons[i].checked)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(buttons[i].value);<br />
&nbsp;&nbsp;}<br />
}</span></div>
<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">//</span><span style="color: #008000">复选框选择：</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;colorOpts&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">someForm</span><span style="color: #000000">"</span><span style="color: #000000">).getElementByTagName(</span><span style="color: #000000">"</span><span style="color: #000000">input</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">遍历复选框中的每个&nbsp;checkbox，检查是否被选中</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;isChecked&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">colorOpts.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;((colorOpts[i].type&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">checkbox</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;(colorOpts[i].checked))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;ifChecked&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;}<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">没有一个&nbsp;checkbox被选中</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">isChecked)&nbsp;{<br />
&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">no&nbsp;choose!</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;<img alt="" src="http://www.blogjava.net/Images/dot.gif" /><br />
}</span></div>
<hr color="#3366ff" size="1" />
<br />
<a id="4" name="4"></a><br />
<strong>4、测验</strong><br />
<br />
Q：如果表单数据不完整或无效，如何停止表单提交操作？<br />
A：<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果你使用 DOM Level 0的事件，那么只要在事件句柄中返回 false值，并且在事件句柄脚本中取消表单提交操作即可。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果你使用 DOM Level 2模型，那么就将 event对象的 cancelBubble属性设置为 true（针对 IE），并调用其 preventDefault方法（针对其他浏览器）。<br />
 <img src ="http://www.blogjava.net/kiant/aggbug/322211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2010-05-29 15:50 <a href="http://www.blogjava.net/kiant/articles/322211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript学习指南（第2版）笔记(三) 排错、调试、事件捕获</title><link>http://www.blogjava.net/kiant/articles/322189.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Sat, 29 May 2010 01:25:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/322189.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/322189.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/322189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/322189.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/322189.html</trackback:ping><description><![CDATA[<br />
<a href="#1">1、排错、调试</a><br />
<a href="#2">2、事件</a><br />
<a href="#3">3、Event对象</a><br />
<a href="#4">4、事件冒泡</a><br />
<a href="#5">5、事件句柄和 this</a><br />
<a href="#6">6、DOM Level 2事件模型</a><br />
<a href="#7">7、测验</a><br />
<br />
<br />
<br />
<br />
<a id="1" name="1"></a><strong><br />
1、排错、调试</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; Firebug是最常用的 Firefox开发工具，同时常用的 Web工具还有 Web Developer toolkit，该工具功能包括页面 HTML和 CSS代码的校验、可访问性检查、查看 CSS和 cookies、检查图像、查看 JavaScript修改后的页面源代码（包括动态源代码）。
<hr color="#3366ff" size="1" />
<br />
<a id="2" name="2"></a><strong><br />
2、事件<br />
</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; 事件包括：用户界面事件（鼠标、键盘触发的）、逻辑事件（一个处理的结果）、和变化事件（修改文档的操作）。<br />
<br />
<h2>事件句柄　(Event Handlers)</h2>
<p>HTML 4.0 的新特性之一是能够使 HTML 事件触发浏览器中的行为，比如当用户点击某个 HTML 元素时启动一段 JavaScript。下面是一个属性列表，可将之插入 HTML 标签以定义事件的行为。</p>
<table class="dataintable">
    <tbody>
        <tr>
            <th style="width: 20%">属性</th>
            <th>此事件发生在何时...</th>
            <th style="width: 7%">IE</th>
            <th style="width: 7%">F</th>
            <th style="width: 7%">O</th>
            <th style="width: 7%">W3C</th>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onabort.asp" target="_top">onabort</a></td>
            <td>图像的加载被中断。</td>
            <td>4</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onblur.asp" target="_top">onblur</a></td>
            <td>元素失去焦点。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onchange.asp" target="_top">onchange</a></td>
            <td>域的内容被改变。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onclick.asp" target="_top">onclick</a></td>
            <td>当用户点击某个对象时调用的事件句柄。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_ondblclick.asp" target="_top">ondblclick</a></td>
            <td>当用户双击某个对象时调用的事件句柄。</td>
            <td>4</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onerror.asp" target="_top">onerror</a></td>
            <td>在加载文档或图像时发生错误。</td>
            <td>4</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onfocus.asp" target="_top">onfocus</a></td>
            <td>元素获得焦点。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onkeydown.asp" target="_top">onkeydown</a></td>
            <td>某个键盘按键被按下。</td>
            <td>3</td>
            <td>1</td>
            <td>No</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onkeypress.asp" target="_top">onkeypress</a></td>
            <td>某个键盘按键被按下并松开。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onkeyup.asp" target="_top">onkeyup</a></td>
            <td>某个键盘按键被松开。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onload.asp" target="_top">onload</a></td>
            <td>一张页面或一幅图像完成加载。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onmousedown.asp" target="_top">onmousedown</a></td>
            <td>鼠标按钮被按下。</td>
            <td>4</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onmousemove.asp">onmousemove</a></td>
            <td>鼠标被移动。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onmouseout.asp" target="_top">onmouseout</a></td>
            <td>鼠标从某元素移开。</td>
            <td>4</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onmouseover.asp" target="_top">onmouseover</a></td>
            <td>鼠标移到某元素之上。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onmouseup.asp" target="_top">onmouseup</a></td>
            <td>鼠标按键被松开。</td>
            <td>4</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onreset.asp" target="_top">onreset</a></td>
            <td>重置按钮被点击。</td>
            <td>4</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onresize.asp" target="_top">onresize</a></td>
            <td>窗口或框架被重新调整大小。</td>
            <td>4</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onselect.asp" target="_top">onselect</a></td>
            <td>文本被选中。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onsubmit.asp" target="_top">onsubmit</a></td>
            <td>确认按钮被点击。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_onunload.asp" target="_top">onunload</a></td>
            <td>用户退出页面。</td>
            <td>3</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
    </tbody>
</table>
<em style="font-size: 8pt">注：HTML DOM Event 对象 http://www.w3school.com.cn/htmldom/dom_obj_event.asp</em><br />
<br />
<br />
<strong>内联模式/内联注册模式</strong>：<br />
以属性的形式为 HTML元素添加属性的方法。<br />
&lt;body onload="var 1=23; i*=3; alert(i);"&gt;<br />
&lt;body onload="calcNumber();"&gt;<br />
<br />
<strong>传统模式/传统注册模式</strong>：<br />
通过对象属性将一个函数指派为事件句柄。如果想禁用事件处理，那么可以将事件句柄的值赋为 null。<br />
window.onload = calcNumber;<br />
<br />
<br />
注：<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在 DOM Level 0事件模型中，任何对象只允许指定一个事件句柄。如果你想针对某一特定对象的某个事件指定多个函数，则需要在事件句柄代码中列出他们：<br />
<br />
内嵌模式：<br />
&lt;body onload="helloMsg(); helloTwice();"&gt;<br />
<br />
传统模式：<br />
function helloMsg() {<br />
&nbsp;&nbsp;&nbsp; var helloString = "hello there";<br />
&nbsp;&nbsp;&nbsp; alert(helloString);<br />
&nbsp;&nbsp;&nbsp; helloTwice();<br />
}<br />
<br />
当要求浏览器停止执行事件行为，可以从事件句柄函数中返回 false值。
<hr color="#3366ff" size="1" />
<br />
<a id="3" name="3"></a><strong><br />
3、Event对象<br />
</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; Event对象是和所有事件相关的。它有一些用来提供事件相关信息的属性，如 Web页面中鼠标点击的位置。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; IE将 Event视为 window对象的属性。当处理事件时，将通过程序访问 window对象，其所包含的数据也会相应的进行填充。
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;mouseDown()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;locString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">X&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;window.event.screenX&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Y&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;window.event.screenY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(locString);<br />
}<br />
<br />
document.onmousedown = mouseDown;</span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在基于 Netscape的浏览器（如 Firefox、Mozilla、Opera和 Safari）中，获取 Event对象的方法是不同的：他将作为函数的一部分传入。
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;mouseDown(theEvent)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;locString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">X&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;theEvent.screenX&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Y&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;theEvent.screenY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(locString);<br />
}<br />
<br />
document.onmousedown&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;mouseDown;</span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 处理这些浏览器差异的方法之一是检查传入函数的 Event对象是否已经实例化。如果是，那么将这个 Event对象赋给一个局部变量；否则，将假定 window.event为该事件，并将其赋给这个局部变量。
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;mouseDown(nsEvent)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;theEvent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;nsEvent&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;nsEvent&nbsp;:&nbsp;window.event;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">判断&nbsp;nsEvent对象是否已定义。定义则赋值，否则选择&nbsp;window.event属性</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;locString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">X&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;theEvent.screenX&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Y&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;theEvent.screenY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(locString);<br />
}<br />
<br />
document.onmousedown&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;mouseDown;</span></div>
<br />
<br />
<h2>鼠标 / 键盘属性</h2>
<table class="dataintable">
    <tbody>
        <tr>
            <th style="width: 20%">属性</th>
            <th>描述</th>
            <th style="width: 7%">IE</th>
            <th style="width: 7%">F</th>
            <th style="width: 7%">O</th>
            <th style="width: 7%">W3C</th>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_altkey.asp">altKey</a></td>
            <td>返回当事件被触发时，"ALT" 是否被按下。</td>
            <td>6</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_button.asp">button</a></td>
            <td>返回当事件被触发时，哪个鼠标按钮被点击。</td>
            <td>6</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_clientx.asp">clientX</a></td>
            <td>返回当事件被触发时，鼠标指针的水平坐标。</td>
            <td>6</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_clienty.asp">clientY</a></td>
            <td>返回当事件被触发时，鼠标指针的垂直坐标。</td>
            <td>6</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_ctrlkey.asp">ctrlKey</a></td>
            <td>返回当事件被触发时，"CTRL" 键是否被按下。</td>
            <td>6</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_metakey.asp">metaKey</a></td>
            <td>返回当事件被触发时，"meta" 键是否被按下。</td>
            <td>No</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_relatedtarget.asp">relatedTarget</a></td>
            <td>返回与事件的目标节点相关的节点。</td>
            <td>No</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_screenx.asp">screenX</a></td>
            <td>返回当某个事件被触发时，鼠标指针的水平坐标。</td>
            <td>6</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_screeny.asp">screenY</a></td>
            <td>返回当某个事件被触发时，鼠标指针的垂直坐标。</td>
            <td>6</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_shiftkey.asp">shiftKey</a></td>
            <td>返回当事件被触发时，"SHIFT" 键是否被按下。</td>
            <td>6</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
    </tbody>
</table>
<em style="font-size: 8pt">注：HTML DOM Event 对象 http://www.w3school.com.cn/htmldom/dom_obj_event.asp</em><br />
<br />
注：<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在 IE中，fromElement 对于 mouseover 和 mouseout 事件，fromElement 引用移出鼠标的元素。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 而在 Mozilla/Firefox中，relatedTarget 返回与事件的目标节点相关的节点。 <br />
要解决浏览器差异，可以使用：<br />
var oldElement = theEvent.fromElement ? theEvent.fromElement : theEvent.relatedTarget;
<hr color="#3366ff" size="1" />
<br />
<a id="4" name="4"></a><strong><br />
4、事件冒泡<br />
</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果你为多个嵌套的元素设置相同的事件句柄，会发生什么呢？他们将以什么样的顺序触发？如果你想使得一次只影响一个元素，那么如何保存触发事件句柄的事件呢？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 要管理元素堆栈中的事件，其中一个方法就是众所周知的事件冒泡。在事件冒泡中，最内部的元素将首先触发该事件，然后堆栈内的下一个元素触发该事件，以此类推，直到最外面的元素。如果事件句柄被指定给所有元素，那么这些事件将依次被触发。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果 div2在 div1内部，而 div1又在 document内部，三者都做了事件处理。当事件触发的时候，优先最里面的 div2元素，然后是 div1元素，最后是 document元素。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果你有一个元素堆栈，并且只希望一个元素触发该事件句柄，那么你可以取消事件冒泡机制。如果在 IE中要取消一个事件冒泡，可以使用 IE中事件的 cancelBubble属性；对于 Mozilla而言，则应该使用事件的 stopPropagation方法。你可以先检查 stopPropagation方法是否存在，然后根据其结果确定使用哪种方法：
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;stopEvent(evnt)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(evnt.stopPropagation)&nbsp;evnt.stopPropagation;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;evnt.cancelBubble&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
}<br />
</span><span style="color: #008000">//</span><span style="color: #008000">注：IE&nbsp;7中调试出错，提示信息&nbsp;"stopPropagation为空或不是对象"。</span></div>
<hr color="#3366ff" size="1" />
<br />
<a id="5" name="5"></a><strong><br />
5、事件句柄和 this<br />
</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; this关键字表示的是当前调用的函数或者方法的所有者。对于一个全局变量而言，它表示的就是 window对象。对于一个对象的方法而言，它表示的就是该对象实例。而在一个事件句柄中，它表示的就是接收到该事件的元素。
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">first</span><span style="color: #000000">"</span><span style="color: #000000">).onmousedown&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #0000ff">this</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;Firefox中将输出&nbsp;"[object&nbsp;HTMLDivElement]"</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">first&nbsp;element&nbsp;event</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
}</span></div>
<hr color="#3366ff" size="1" />
<br />
<a id="6" name="6"></a><strong><br />
6、DOM Level 2事件模型</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 对于堆栈内元素的事件处理，还有一种被称为事件捕捉(event capturing)或 cascade-down的事件处理机制。对于前面这个包含3个元素的示例而言，事件将从最外面的元素开始触发：window -&gt; div1 -&gt; div2。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 老事件模型和新的 DOM Level 2事件模型之间，主要区别：<br />
a.新事件模型并不依赖于特定的事件来处理属性；<br />
b.你可以对任何一个对象的任何一种事件注册多个事件句柄函数。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 新的事件句柄提供的3个方法：<br />
addEventListener，添加一个事件监听器；<br />
removeEventListener，删除一个事件监听器；<br />
dispatchEvent，分发一个新的事件。<br />
<br />
示例：<br />
object.addEventListener('event', eventFunction, boolean);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如 click或 load之类的事件是其第一参数；第二个参数是指定的事件句柄函数；第三个参数用来指定事件是以 cascade-down或者冒泡模式处理的。当第三个参数为 false时这个事件监听器将以冒泡模式处理，否则将把这个事件监听器改成事件捕捉模型。
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;cascadeDown(evnt)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">Capturing:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />
}<br />
<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;bubbleUp(evnt)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">Bubbling:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />
}<br />
<br />
window.onload&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;setup;<br />
<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;setup(evnt)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">事件捕捉</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;document.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;cascadeDown,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;cascadeDown,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].elements[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;cascadeDown,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">事件冒泡</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;document.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;bubbleUp,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;bubbleUp,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].elements[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;bubbleUp,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
}<br />
<br />
</span><span style="color: #008000">/*</span><span style="color: #008000"><br />
在&nbsp;Firefox中，单击按钮将顺序生成6个对话框<br />
<br />
Capturing:&nbsp;[object&nbsp;HTMLDocument]<br />
Capturing:&nbsp;[object&nbsp;HTMLFormElement]<br />
Capturing:&nbsp;[object&nbsp;HTMLInputElement]<br />
Bubbling:&nbsp;[object&nbsp;HTMLInputElement]<br />
Bubbling:&nbsp;[object&nbsp;HTMLFormElement]<br />
Bubbling:&nbsp;[object&nbsp;HTMLDocument]<br />
<br />
</span><span style="color: #008000">*/</span></div>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果你想停止事件执行时，可以在函数中调用 stopPropagation方法：<br />
function cascadeDown(evnt) {<br />
&nbsp;&nbsp;&nbsp; ...<br />
&nbsp;&nbsp;&nbsp; evnt.stopPropagation();<br />
}<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果要彻底删除一个事件监听器，可以使用 removeEventListener方法：<br />
document.removeEventListener("click", cascadeDown, true);<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在 IE中，与 addEventListener和 removeEventListener方法相似的是 attachEvent和 detachEvent，对应语法是：<br />
object.attachEvent("eventhandler", function);<br />
第一个参数是事件句柄，第二个是其函数。detachEvent语法类似。<br />
<br />
<br />
<strong>跨浏览器解决方案：</strong><br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">window.onload&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;setup;<br />
window.onunload&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cleanup;<br />
<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;setup(evnt)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;evtObject&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">clickme</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">检查对象模型</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(evtObject.addEventListener)&nbsp;evtObject.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;clickMe,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(evtObject.attachEvent)&nbsp;evtObject.attachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;clickMe);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(evtObject.onclick)&nbsp;evtObject.onclick</span><span style="color: #000000">=</span><span style="color: #000000">clickMe;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
<br />
</span><span style="color: #008000">/*</span><span style="color: #008000">清理<br />
在&nbsp;IE中，需要跟踪&nbsp;window的&nbsp;unload事件，然后调用&nbsp;detachEvent方法清理，释放相应的内存<br />
而&nbsp;addEventListener方法使用的内存是无需清理的。<br />
</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;cleanup()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;evtObject&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">clickme</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(evtObject.detachEvent)&nbsp;evtObject.detachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;clickMe);<br />
}<br />
<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;clickMe()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">clickMe</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
}</span></div>
<br />
<br />
<h2>IE 属性</h2>
<p>除了上面的鼠标/事件属性，IE 浏览器还支持下面的属性：</p>
<table class="dataintable">
    <tbody>
        <tr>
            <th style="width: 20%">属性</th>
            <th>描述</th>
        </tr>
        <tr>
            <td>cancelBubble</td>
            <td>如果事件句柄想阻止事件传播到包容对象，必须把该属性设为 true。</td>
        </tr>
        <tr>
            <td>fromElement</td>
            <td>对于 mouseover 和 mouseout 事件，fromElement 引用移出鼠标的元素。</td>
        </tr>
        <tr>
            <td>keyCode</td>
            <td>对于 keypress 事件，该属性声明了被敲击的键生成的 Unicode 字符码。对于 keydown 和 keyup 事件，它指定了被敲击的键的虚拟键盘码。虚拟键盘码可能和使用的键盘的布局相关。</td>
        </tr>
        <tr>
            <td>offsetX,offsetY</td>
            <td>发生事件的地点在事件源元素的坐标系统中的 x 坐标和 y 坐标。</td>
        </tr>
        <tr>
            <td>returnValue</td>
            <td>如果设置了该属性，它的值比事件句柄的返回值优先级高。把这个属性设置为 fasle，可以取消发生事件的源元素的默认动作。</td>
        </tr>
        <tr>
            <td>srcElement</td>
            <td>对于生成事件的 Window 对象、Document 对象或 Element 对象的引用。</td>
        </tr>
        <tr>
            <td>toElement</td>
            <td>对于 mouseover 和 mouseout 事件，该属性引用移入鼠标的元素。</td>
        </tr>
        <tr>
            <td>x,y</td>
            <td>事件发生的位置的 x 坐标和 y 坐标，它们相对于用CSS动态定位的最内层包容元素。</td>
        </tr>
    </tbody>
</table>
<em style="font-size: 8pt">注：HTML DOM Event 对象 http://www.w3school.com.cn/htmldom/dom_obj_event.asp</em><br />
<br />
<br />
<h2>标准 Event 属性</h2>
<p>下面列出了 2 级 DOM 事件标准定义的属性。</p>
<table class="dataintable">
    <tbody>
        <tr>
            <th style="width: 20%">属性</th>
            <th>描述</th>
            <th style="width: 7%">IE</th>
            <th style="width: 7%">F</th>
            <th style="width: 7%">O</th>
            <th style="width: 7%">W3C</th>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_bubbles.asp">bubbles</a></td>
            <td>返回布尔值，指示事件是否是起泡事件类型。</td>
            <td>No</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_cancelable.asp">cancelable</a></td>
            <td>返回布尔值，指示事件是否可拥可取消的默认动作。</td>
            <td>No</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_currenttarget.asp">currentTarget</a></td>
            <td>返回其事件监听器触发该事件的元素。</td>
            <td>No</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_eventphase.asp">eventPhase</a></td>
            <td>返回事件传播的当前阶段。</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_target.asp">target</a></td>
            <td>返回触发此事件的元素（事件的目标节点）。</td>
            <td>No</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_timestamp.asp">timeStamp</a></td>
            <td>返回事件生成的日期和时间。</td>
            <td>No</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
        <tr>
            <td><a href="http://www.w3school.com.cn/htmldom/event_type.asp">type</a></td>
            <td>返回当前 Event 对象表示的事件的名称。</td>
            <td>6</td>
            <td>1</td>
            <td>9</td>
            <td>Yes</td>
        </tr>
    </tbody>
</table>
<em style="font-size: 8pt">注：HTML DOM Event 对象 <a href="http://www.w3school.com.cn/htmldom/dom_obj_event.asp">http://www.w3school.com.cn/htmldom/dom_obj_event.asp</a>
<hr color="#3366ff" size="1" />
</em><br />
<a id="7" name="7"></a><strong><br />
7、测验<br />
</strong><br />
Q1：使用 DOM Level 0方法为 document的 click事件指定一个事件句柄函数。<br />
A1：document.onclick = clickMe;<br />
<br />
<br />
Q2：使用 DOM Level 2事件处理机制为 document添加 click事件句柄。<br />
A2：document.addEventListener("click", clickMe, false);<br />
<br />
<br />
Q3：如果使事件处理机制能安全运行所有浏览器？<br />
A3：<br />
&nbsp;&nbsp;&nbsp; if (evtObject.addEventListener) evtObject.addEventListener("click", clickMe, false);<br />
&nbsp;&nbsp;&nbsp; else if (evtObject.attachEvent) evtObject.attachEvent("onclick", clickMe);<br />
&nbsp;&nbsp;&nbsp; else if (evtObject.onclick) evtObject.onclick=clickMe;&nbsp;&nbsp;&nbsp; <br />
<br />
<br />
Q4：对于为 document对象指定的 onclick事件句柄，如何知道是在屏幕的什么位置执行了单击操作？<br />
A4：<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果使用 DOM Level 0事件处理系统，那么将无法使用 window对象的 event对象，也不能将其作为参数传给函数。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 对于 DOM Level 2事件处理模型而言，event对象将会传给事件句柄函数，你可以通过 event对象访问其 screenX和 screenY属性。<br />
<br />
<br />
Q5：使用 DOM Level 2事件系统，如何阻止从其他元素中冒泡上来的事件。<br />
A5：<br />
&nbsp;&nbsp;&nbsp;&nbsp; IE所支持的方法和绝大多数浏览器所支持的方法有所不同，因此你需要分别支持 IE和其他浏览器。你可以检查 event对象是否支持 stopPropagation方法。如果支持，则调用它；否则就将 cancelBubble属性的值设置为 true。<br />
<br />
<br />
Q7：捕获 document对象的 keydown事件<br />
A7：
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">window.onload&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(document.addEventListener)&nbsp;document.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">keydown</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;getKey,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(document.attachEvent)&nbsp;document.attachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onkeydown</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;getKey);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(document.onkeydown)&nbsp;document.onkeydown</span><span style="color: #000000">=</span><span style="color: #000000">getKey;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;getKey(evnt)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;theEvent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;evnt&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;evnt&nbsp;:&nbsp;window.event;<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(theEvent.which);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Firefox&nbsp;返回值，IE&nbsp;7提示&nbsp;undefined</span><span style="color: #008000"><br />
</span><span style="color: #000000">}</span></div>
<img src ="http://www.blogjava.net/kiant/aggbug/322189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2010-05-29 09:25 <a href="http://www.blogjava.net/kiant/articles/322189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript学习指南（第2版）笔记(二) 对象、函数</title><link>http://www.blogjava.net/kiant/articles/321921.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Wed, 26 May 2010 08:29:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/321921.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/321921.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/321921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/321921.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/321921.html</trackback:ping><description><![CDATA[<br />
<a href="#1">1、字符串基本类型和字符串对象的相互转换<br />
</a><a href="#2">2、String对象</a><br />
<a href="#3">3、正则表达式</a><br />
<a href="#4">4、数组</a><br />
<a href="#5">5、函数</a><br />
<a href="#6">6、匿名函数</a><br />
<a href="#7">7、函数字面量</a><br />
<br />
<br />
<br />
<strong><a id="1" name="1"></a><br />
1、字符串基本类型和字符串对象的相互转换</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果创建的是字符串基本类型，却又以对象的行为访问，那么 JavaScript会将该基本类型自动转换成对象，但是转换成的 String对象只是一个临时变量，并且在属性操作后销毁该对象，所以这种操作不够有效，多了一次转换的过程而已。<br />
<br />
var strName = "Shelley";&nbsp;//字符串基本类型<br />
alert(strName.length);&nbsp;&nbsp;//隐式创建 String对象，数值与 strName相同，并执行 length方法<br />
<hr color="#3366ff" size="1" />
<br />
<strong><a id="2" name="2"></a><br />
2、String对象</strong><br />
<br />
本节内容引自：JavaScript String 对象参考手册<br />
http://www.w3school.com.cn/js/jsref_obj_string.asp<br />
<br />
var sObject = new String("Sample string");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 字符串是 JavaScript 的一种基本的数据类型。String 对象的 length 属性声明了该字符串中的字符数。String 类定义了大量操作字符串的方法，例如从字符串中提取字符或子串，或者检索字符或子串。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 需要注意的是，JavaScript 的字符串是不可变的（immutable），String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法，返回的是全新的字符串，而不是修改原始字符串。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在较早的 Netscape 代码基的 JavaScript 实现中（例如 Firefox 实现中），字符串的行为就像只读的字符数组。例如，从字符串 s 中提取第三个字符，可以用 s[2] 代替更加标准的 s.charAt(2)。此外，对字符串应用 for/in 循环时，它将枚举字符串中每个字符的数组下标（但要注意，ECMAScript 标准规定，不能枚举 length 属性）。因为字符串的数组行为不标准，所以应该避免使用它。
<hr color="#3366ff" size="1" />
&nbsp;<br />
<a id="3" name="3"></a><br />
<strong>3、正则表达式</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 正则表达式是由字符串所组成的表达式，用于匹配、替换或者查找特定的字符串。通过 RegExp对象可以显式地创建正则表达式：<br />
var searchPatten = new RegExp('s+');<br />
<br />
也可以使用文字量方式创建正则表达式：<br />
var searchPatten = /s+/;<br />
<br />
<strong>test方法</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; test方法将判断以参数传入的字符串是否与正则表达式相匹配。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;re&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">Javascript&nbsp;rules</span><span style="color: #000000">/</span><span style="color: #000000">i;<br />
</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;var&nbsp;re&nbsp;=&nbsp;new&nbsp;RegExp('s+',&nbsp;'g');&nbsp;&nbsp;&nbsp;&nbsp;//对象实例，第二个参数表示匹配选项&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Javascript&nbsp;rules</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(re.test(str))&nbsp;&nbsp;&nbsp;&nbsp;document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">I&nbsp;guess&nbsp;it&nbsp;does&nbsp;rule</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div>
<br />
其中修饰符<br />
i 执行对大小写不敏感的匹配。 <br />
g 执行全局匹配（查找所有匹配而非在找到第一个匹配后停止）。 <br />
m 执行多行匹配。 <br />
<br />
<strong>exec方法<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;re&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RegExp(</span><span style="color: #000000">"</span><span style="color: #000000">JS*</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">ig</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">cfdsJS&nbsp;*(&amp;YJSjs&nbsp;888JS</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;resultArray&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;re.exec(str);<br />
</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(resultArray)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.writeln(resultArray[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">next&nbsp;match&nbsp;starts&nbsp;at&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;re.lastIndex&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;br&nbsp;/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;resultArray&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;re.exec(str);<br />
}<br />
<br />
</span><span style="color: #008000">/*</span><span style="color: #008000"><br />
由于设置选项&nbsp;g，RegExp中的&nbsp;lastIndex属性会设置为上一次匹配的位置，所以每次&nbsp;exec调用都会查找下一个匹配。该示例中总共找到4次匹配，当没有匹配时，将会返回的数值是空值&nbsp;null，当数组为空值时循环自动结束。&nbsp;<br />
<br />
输出：<br />
JS&nbsp;next&nbsp;match&nbsp;starts&nbsp;at&nbsp;6<br />
JS&nbsp;next&nbsp;match&nbsp;starts&nbsp;at&nbsp;13<br />
js&nbsp;next&nbsp;match&nbsp;starts&nbsp;at&nbsp;15<br />
JS&nbsp;next&nbsp;match&nbsp;starts&nbsp;at&nbsp;21<br />
<br />
</span><span style="color: #008000">*/</span></div>
<br />
</strong>exec方法将返回一个数组，但是数组并不是所有匹配项，而是当前匹配项和所有带圆括号的子字符串。如果在表达式中使用圆括号引用正则表达式的某部分，那么匹配的时候，这些括号所匹配的字符串也会体现在返回的数组中。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;re&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">(ds)</span><span style="color: #000000">+</span><span style="color: #000000">(j</span><span style="color: #000000">+</span><span style="color: #000000">s)</span><span style="color: #000000">/</span><span style="color: #000000">ig;<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">cfdsJS&nbsp;*(&amp;dsjjjsYJSjs&nbsp;888dsdsJS</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;resultArray&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;re.exec(str);<br />
</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(resultArray)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.writeln(resultArray[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">next&nbsp;match&nbsp;starts&nbsp;at&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;re.lastIndex&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;br&nbsp;/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">resultArray.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">substring&nbsp;of&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;resultArray[i]&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;br&nbsp;/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;br&nbsp;/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;resultArray&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;re.exec(str);<br />
}<br />
<br />
</span><span style="color: #008000">/*</span><span style="color: #008000"><br />
<br />
输出：<br />
dsJS&nbsp;next&nbsp;match&nbsp;starts&nbsp;at&nbsp;6<br />
substring&nbsp;of&nbsp;ds<br />
substring&nbsp;of&nbsp;JS<br />
<br />
dsjjjs&nbsp;next&nbsp;match&nbsp;starts&nbsp;at&nbsp;16<br />
substring&nbsp;of&nbsp;ds<br />
substring&nbsp;of&nbsp;jjjs<br />
<br />
dsdsJS&nbsp;next&nbsp;match&nbsp;starts&nbsp;at&nbsp;31<br />
substring&nbsp;of&nbsp;ds<br />
substring&nbsp;of&nbsp;JS<br />
<br />
</span><span style="color: #008000">*/</span></div>
<br />
支持正则表达式的 String 对象的方法<br />
search 检索与正则表达式相匹配的值。 <br />
match 找到一个或多个正则表达式的匹配。 <br />
replace 替换与正则表达式匹配的子串。<br />
split 把字符串分割为字符串数组。<br />
&nbsp;<br />
<br />
参考：JavaScript RegExp 对象参考手册<br />
<a href="http://www.w3school.com.cn/js/jsref_obj_regexp.asp">http://www.w3school.com.cn/js/jsref_obj_regexp.asp</a>
<hr color="#3366ff" size="1" />
<br />
<strong><a id="4" name="4"></a><br />
4、数组</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 数组不一定是一维的，在 JavaScript中管理多维数组的方法是为每个数组元素创建一个新的数组。<br />
<br />
var threedPoints = new Array();<br />
threedPoints[0] = new Array(1.2, 3.33, 2.0);<br />
threedPoints[1] = new Array(5.3, 5.5, 5.5);<br />
threedPoints[2] = new Array(6.4, 2.2, 1.9);<br />
var newZPoint = threedPoints[2][2];&nbsp;&nbsp;&nbsp;&nbsp; //数组以索引方式访问<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 数组的 concat 和 slice都不会改变原有数组，而只是创建一个新的数组以作为方法的返回值。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在大多数情况下，数组元素的顺序并不重要，不过也有些需要维护数组元素顺序的场景，例如队列。数组维护队列的方法：<br />
push 将元素添加到数组后面<br />
unshift 将元素添加到数组最前面<br />
pop 移除数组的最后一个元素<br />
shift 移除第一个元素<br />
<br />
数组的访问<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">//</span><span style="color: #008000">通过循环来遍历数组</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">].length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">][i]);<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">使用&nbsp;for<img alt="" src="http://www.blogjava.net/Images/dot.gif" />in&nbsp;循环</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;itemIndex&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">]){<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.writeln(threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">][itemIndex]&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;br&nbsp;/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
}<br />
</span></div>
<br />
根据逗号分隔的字符串方式创建数组<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;animalString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">cats,dogs,birds,horse</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;animalArray&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;animalString.split(</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
alert(animalArray[</span><span style="color: #000000">2</span><span style="color: #000000">]);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">alert&nbsp;box&nbsp;display&nbsp;birds</span></div>
<br />
<br />
JavaScript Array 对象参考手册<br />
<a href="http://www.w3school.com.cn/js/jsref_obj_array.asp">http://www.w3school.com.cn/js/jsref_obj_array.asp</a>
<hr color="#3366ff" size="1" />
<br />
<a id="5" name="5"></a><br />
<strong>5、函数</strong>&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; JavaScript中函数和对象相似，你可以定义一个函数，创建一个新的函数，甚至输出一个函数。正是因为有了这个功能，你可以将一个函数给一个变量或数组元素，甚至可以将其作为参数传给另一个函数调用。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在 JavaScript中有3种创建函数的方法：声明式的/静态的、动态的/匿名的、字面量式的。在使用它们之前，理解各种方法的效果是十分重要的。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果在一个函数中需要执行多个任务，可以考虑将这个函数拆分成几个更小的单元，这样做可提高复用性。在实际中，尽量让函数短小、使其特定于某个人物、尽量保持通用是应该遵守的规则。
<hr color="#3366ff" size="1" />
&nbsp;<br />
<a id="6" name="6"></a><br />
<strong>6、匿名函数<br />
</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; 匿名/动态函数对于定义一个在运行时才能确定需求的函数而言是个很好的方法。匿名函数每次访问都会解析一次。使用匿名函数构造器：<br />
var variable = new Function("param1", "param2",...,"paramn","function body");<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;<br />
用户将通过&nbsp;alert对话框来设置定义函数所需的函数体及两个参数，<br />
然后调用该函数，<br />
将其生成的结果输出到页面上。<br />
<br />
注：FF调试通过，IE7异常<br />
</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">提示输入函数体和参数</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;func&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;prompt(</span><span style="color: #000000">"</span><span style="color: #000000">Enter&nbsp;function&nbsp;body:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;prompt(</span><span style="color: #000000">"</span><span style="color: #000000">Enter&nbsp;value&nbsp;of&nbsp;x:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;prompt(</span><span style="color: #000000">"</span><span style="color: #000000">Enter&nbsp;value&nbsp;of&nbsp;y:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">调用这个匿名参数</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;op&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Function(</span><span style="color: #000000">"</span><span style="color: #000000">x</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">y</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;func);<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;theAnswer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;op(x,&nbsp;y);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">function&nbsp;anonymous(x,&nbsp;y)&nbsp;{<img alt="" src="http://www.blogjava.net/Images/dot.gif" />}</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
</span><span style="color: #008000">//</span><span style="color: #008000">输出函数执行结果</span><span style="color: #008000"><br />
</span><span style="color: #000000">alert(</span><span style="color: #000000">"</span><span style="color: #000000">Function&nbsp;is:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;func);<br />
alert(</span><span style="color: #000000">"</span><span style="color: #000000">x&nbsp;is:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;x&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;y&nbsp;is:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;y);<br />
alert(</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;answer&nbsp;is:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;theAnswer);<br />
<br />
<br />
</span><span style="color: #008000">/*</span><span style="color: #008000"><br />
输入/输出：<br />
Function&nbsp;is:&nbsp;return&nbsp;x&nbsp;*&nbsp;y;<br />
x&nbsp;is&nbsp;:&nbsp;33;&nbsp;y&nbsp;is&nbsp;:&nbsp;11;<br />
The&nbsp;answer&nbsp;is:&nbsp;363;<br />
</span><span style="color: #008000">*/</span></div>
<hr color="#3366ff" size="1" />
<br />
<a id="7" name="7"></a><br />
<strong>7、函数字面量</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 函数字面量也称函数表达式，因为这样创建的函数将成为表达式的一部分，而不是一个特有类型的语句，他们像匿名函数一样没有定义函数名称，但函数字面量只会被解析一次，它是静态的。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 当你想实现如吧一个函数作为另一个函数的参数之类的扩展时，函数字面量的特色就会显示出来。<br />
<br />
//将第三个参数作为函数来声明<br />
function funcObject(x,y,z){<br />
&nbsp;&nbsp;&nbsp; alert(z(x,y));<br />
}<br />
<br />
//第三个参数是一个函数<br />
funcObject(3, 4, function(x, y){ return x*y})<br />
<img src ="http://www.blogjava.net/kiant/aggbug/321921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2010-05-26 16:29 <a href="http://www.blogjava.net/kiant/articles/321921.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript学习指南（第2版）笔记(一) Script、数据类型和变量、操作符和语句</title><link>http://www.blogjava.net/kiant/articles/321745.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Mon, 24 May 2010 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/321745.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/321745.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/321745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/321745.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/321745.html</trackback:ping><description><![CDATA[<br />
<a href="#1">1、Script的 defer属性<br />
</a><a href="#2">2、为body添加脚本<br />
</a><a href="#3">3、CDATA小节<br />
</a><a href="#4">4、null和undefined变量</a><br />
<a href="#5">5、缩减JavaScript代码<br />
</a><br />
<br />
<a id="1" name="1"></a><br />
<strong>1、Script的 defer属性<br />
<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp; 如果将defer属性设置为"defer"，那么表示该脚本不会生成任何文档内容，于是浏览器可以提前处理页面的剩余部分，在页面处理结束并做好显示准备时才处理脚本部分。defer属性可以提高页面载入的速度，特别是那些引用了大量的JavaScript代码或者庞大的JavaScript程序库的页面。 <br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;defer</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">defer</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;<img alt="" src="http://www.blogjava.net/Images/dot.gif" />no&nbsp;content&nbsp;being&nbsp;generated&nbsp;&nbsp;<br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
</span></div>
<hr color="#3366ff" size="1" />
<br />
<a id="2" name="2"></a><br />
<strong>2、为body添加脚本<br />
<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp; 前面我们曾经说过，因为对script元素进行集中管理有利于网页的可维护性，所以script元素通常将添加在网页上的head元素中。然而，在body元素中添加脚本的原因往往是出于性能的考虑。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 因为浏览器从同一个域名并发载入的资源是有限制的，所以，当把脚本添加到head元素中时，首先载入的将是脚本，其次才是文档的剩余部分。此外，浏览器可能会延迟页面剩余部分的显示，因为脚本中可能会调用document.write方法修改document对象。如果JavaScript文件很庞大，那么网页中的图片以及其他重要的信息将会被延迟显示，这所带来的问题远比可维护性更加重要。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 即使在script元素中使用defer属性也不一定能完全解决该问题，特别是并发资源访问和页面显示的限制。<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在High Performance Web Sites（中译版《高性能网站建设指南》一书中，作者推荐将script元素放在文档的最末尾处，这样网页的其他部分就可以优先载入。大多数复杂网站的开发人员更倾向于这种方法。这种方法带来的负面影响是脚本不容易查找，网页的可维护性也较差。<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 那么什么才是最佳方法呢？我发现大多数网站并不引用庞大的JavaScript程序库，在保证较好性能的前提下，将脚本放在head元素中，也确保网页可维护性的优势。不过，如果的确需要使用庞大的JavaScript程序库，那么可以考虑将脚本放在页面的最末尾处。&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 不论采用何种方法，请确保脚本位置的一致性，要么全部放在head元素中，要么全部在body元素的最末尾处。
<hr color="#3366ff" size="1" />
<br />
<a id="3" name="3"></a><strong>3、CDATA小节<br />
</strong>&nbsp;<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
</span><span style="color: #008000">//</span><span style="color: #008000">&lt;![CDATA[&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;hello()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;msg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Hello,&nbsp;&lt;em&gt;World!&lt;/em&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;document.open();<br />
&nbsp;&nbsp;&nbsp;document.write(msg);<br />
&nbsp;&nbsp;&nbsp;document.close();<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">]]&gt;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 之所以使用CDATA小节，是因为XHTML处理器在解释标记型语言时会识别出所有的开始标签和结束标签。<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在页面文件中通过script元素的src属性引用的JavaScript，是XHTML标准所兼容的，并且不要求使用CDATA小节。如果是嵌入的JavaScript代码，那么就需要使用CDATA小节，特别是包含在body元素中的代码。对于大多数浏览器而言，还需要用JavaScript注释符（//）来隐藏CDATA小节，如示例1.3所示，否则将会出现JavaScript错误。<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 当然，保持页面整洁的最佳方式是将JavaScript代码从页面中彻底移去，改成使用链接JavaScript文件的方式。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在本书的大多数示例中，JavaScript代码是直接嵌入在页面里的，这样可以提高代码的可读性且易于检查。然而，Mozilla推荐将所有嵌入的JavaScript代码都从页面中移去，放在独立的JavaScript文件中。使用独立的JavaScript文件，可以避免校验以及文本解释错误等问题，而不用担心页面是以HTML还是XHTML的方式进行处理。<br />
<br />
提示<br />
&nbsp;&nbsp;&nbsp;&nbsp; 使用JavaScript文件往往也能提高网页载入的效率，因为浏览器会在第一次载入文件的时候进行缓存，引用相同文件时则会从缓存中获取。<br />
<hr color="#3366ff" size="1" />
<br />
<a id="4" name="4"></a><br />
<strong>4、null和undefined变量<br />
</strong><br />
null变量是已定义的、值为null的变量。以下是一个null变量的示例：<br />
var nullString = null; <br />
<br />
如果变量已经声明但是还没有初始化，那么就是undefined变量：<br />
var undefString; <br />
<br />
如果声明了变量并且赋予了初始值，那么该变量就不是null或undefined：<br />
var sValue = "";&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 当你使用JavaScript程序库时，或者在一些复杂的代码中，某些变量有可能还没有初始化；如果尝试在表达式中使用这样的变量，那么就有可能得到出乎意料的结果，通常会导致JavaScript错误。如果不确定变量的状态，那么可以在条件表达式中测试该变量，例如：&nbsp;<br />
if (sValue) ...&nbsp;&nbsp;&nbsp;&nbsp; // 如果变量是null或undefined，那么结果为true，否则是false&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在第3章中将详细介绍条件语句，现在你只需要知道该表达式会判断变量sValue是否已经声明并初始化，如果已声明并初始化则该表达式的值为true，否则，该表达式的值为false。
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(unknownVariable)&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;false，变量没有声明或赋值&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(undefinedString)&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;false，变量没有赋值&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(nullString)&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;false，变量已经声明并且赋值，但是所赋的值是null&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(sValue)&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;true，变量已经声明并且赋值（包括空字符串）&nbsp;使用null关键字，可以判断数值是否为null：</span></div>
<br />
if (sValue == null)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在JavaScript中，即使变量已经声明，但只要还没有初始化就是undefined变量。如果变量已经声明并初始化，那么变量就不是null或undefined。然而，在该示例中它是一个全局变量，正如之前的章节所述，没有以var关键字声明的变量可能会引起各种各样的问题。<br />
<hr color="#3366ff" size="1" />
&nbsp; <br />
<a id="5" name="5"></a><br />
<strong>5、缩减JavaScript代码<br />
</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; 空格能够提高代码的可读性，但同时也会增加文件的大小。通常情况下，这没什么影响，因为大多数JavaScript文件都非常小。然而，对于某些大型Ajax应用，或者复杂的JavaScript程序库来说，太大的JavaScript文件会影响载入JavaScript的速度。<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果要尽可能压缩JavaScript文件，那么可以选用一些免费的工具，例如Dean Edward的Packer（http://dean.edwards.name/packer/），它能够在线压缩JavaScript代码。或者使用Wikipedia中"minify"条目（http://en.wikipedia.org/wiki/Minify）中所列举的工具，这些工具可以在桌面或者服务器上使用。<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 另一类工具是用来保护JavaScript代码版权的。这些工具不仅仅会压缩JavaScript代码，甚至还会对代码进行加密，从而使代码难以阅读。 
<img src ="http://www.blogjava.net/kiant/aggbug/321745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2010-05-24 17:13 <a href="http://www.blogjava.net/kiant/articles/321745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>各浏览器中javascript兼容性问题</title><link>http://www.blogjava.net/kiant/articles/320537.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Mon, 10 May 2010 16:10:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/320537.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/320537.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/320537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/320537.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/320537.html</trackback:ping><description><![CDATA[<br />
<a href="#1">1、使用setAttribute()改变网页中标签的onclick属性<br />
</a><a href="#2">2、IE中通过 setAttribute添加的属性</a><br />
<br />
<br />
<a id="1" name="1"></a><br />
<strong>1、使用setAttribute()改变网页中标签的onclick属性</strong> *p1<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setAttribute设置style和onclick这些属性在IE中是行不通的。
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;cancleEvent()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById('a').setAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,'');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById('g').innerHTML</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">取消事件！</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;setEvent()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById('a').setAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,'alert(</span><span style="color: #000000">"</span><span style="color: #000000">你好！</span><span style="color: #000000">"</span><span style="color: #000000">)');</span><span style="color: #008000">//</span><span style="color: #008000">firefox</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById('a').onclick</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;()&nbsp;{&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">This&nbsp;is&nbsp;a&nbsp;test!</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;}</span><span style="color: #008000">//</span><span style="color: #008000">IE&nbsp;firefox也有作用,但是使用firebug调试看不到修改后的效果，使用上面的方法可以看到。</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById('Div1').innerHTML</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">设置事件！</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span></div>
<br />
注：<br />
*p1：使用setAttribute()改变网页中标签的onclick属性&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://blog.csdn.net/Cnami/archive/2008/05/27/2486516.aspx">http://blog.csdn.net/Cnami/archive/2008/05/27/2486516.aspx</a><br />
<hr color="#3366ff" size="2" />
<br />
<a id="2" name="2"></a><br />
<strong>2、IE中通过 setAttribute添加的属性</strong> *p2<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IE下setAttribute设置元素的对象、集合和事件属性都只当成普通属性，起不到原有的作用，但可以直接进行赋值操作。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;language</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">javascript</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;!--</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;init()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;obj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">btn</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.onclick</span><span style="color: #000000">=</span><span style="color: #000000">changeValue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;obj.style.background</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">#CC6600</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
}<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;changeValue()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">txt</span><span style="color: #000000">"</span><span style="color: #000000">).value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">New&nbsp;value!</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
}<br />
</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span></div>
<br />
注：<br />
*p2：[求助]通过 setAttribute 添加的属性在 IE 下不被实现？&nbsp;<a href="http://bbs.blueidea.com/viewthread.php?tid=2290521">http://bbs.blueidea.com/viewthread.php?tid=2290521</a><br />
<hr color="#3366ff" size="2" />
<br />
<br />
<img src ="http://www.blogjava.net/kiant/aggbug/320537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2010-05-11 00:10 <a href="http://www.blogjava.net/kiant/articles/320537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript 脚本收集、乱码</title><link>http://www.blogjava.net/kiant/articles/283308.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Fri, 23 Apr 2010 10:13:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/283308.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/283308.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/283308.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/283308.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/283308.html</trackback:ping><description><![CDATA[<p><br />
<a href="http://www.codefans.net/jscss/sort/list_3_1.shtml" target="_blank">源码爱好者 层和布局</a>&nbsp;<br />
<br />
效果:<br />
<a href="http://www.codefans.net/jscss/code/764.shtml" target="_blank">弹出可拖动提示层(模式窗口)</a></p>
<br />
<br />
<hr color="#999999" size="4" />
[原]解决JS中文乱码<br />
http://www.cnblogs.com/xjyggd/archive/2009/04/14/1436000.html<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">[<strong>原]解决JS中文乱码&nbsp;<br />
</strong>方法一：&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;src</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">../JS/common.js</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;charset</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">gb2312</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt; </span><span style="color: #000000">加上charset</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">gb2312</span><span style="color: #000000">"</span><span style="color: #000000">就可以了。<br />
方法二：把JS文件的编码改成UTF</span><span style="color: #000000">-</span><span style="color: #000000">8</span><span style="color: #000000">　(VS2005的默认编码）<br />
方法三：把asp.net页面的输出编码改成gb2312（页面</span><span style="color: #000000">/</span><span style="color: #000000">web.config都可设置）<br />
<br />
<strong>Cookies的内容编码格式</strong><br />
Cookies的值中可以保存除了&#8220;;&#8221;以外的标点符号。但是不能保存汉字。保存汉字会出现乱码。&nbsp;<br />
所以对于Cookies中的内容要进行统一的编码和解码。为了在浏览器端和服务器端都能够进行解码和编码，&nbsp;所以要统一使用UTF编码格式。&nbsp;<br />
主要是因为javascript中只能使用UTF编码格式。&nbsp;</span></div>
 <img src ="http://www.blogjava.net/kiant/aggbug/283308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2010-04-23 18:13 <a href="http://www.blogjava.net/kiant/articles/283308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创建Tooltips方案</title><link>http://www.blogjava.net/kiant/articles/317457.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Wed, 21 Apr 2010 04:49:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/317457.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/317457.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/317457.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/317457.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/317457.html</trackback:ping><description><![CDATA[<p>出自：<br />
11个出色的创建Tooltips的方案<br />
http://www.qianduan.net/11-excellent-program-to-create-tooltips.html<br />
<br />
AjaxCode -- Tooltips：消息提醒框控件<br />
http://www.open-open.com/ajax/Tooltips.htm<br />
<br />
<hr color="#999999" size="4" />
<strong>1. Easy CSS Tooltip</strong><br />
<a href="http://www.kollermedia.at/archive/2008/03/24/easy-css-tooltip/">http://www.kollermedia.at/archive/2008/03/24/easy-css-tooltip/</a><br />
<img height="132" alt="" src="http://www.blogjava.net/images/blogjava_net/kiant/2010.04/CSS_Tooltips.jpg" width="383" border="0" />
<p>&nbsp;</p>
Here is the 4 line magic (3lines css, 1line html):<br />
<span id="Codehighlighter1_337_351_Open_Text">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;css&nbsp;tooltip&nbsp;</span><span style="color: #008000">*/</span><span style="color: #800000"><br />
a:hover<br />
</span><span style="color: #000000">{</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;_background</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;Transparent</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
</span><span style="color: #000000">}</span><span style="color: #800000"><br />
</span><span style="color: #008000">/*</span><span style="color: #008000">BG&nbsp;color&nbsp;is&nbsp;a&nbsp;must&nbsp;for&nbsp;IE6</span><span style="color: #008000">*/</span><span style="color: #800000"><br />
a.tooltip&nbsp;span<br />
</span><span style="color: #000000">{</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;display</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;none</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;padding</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;6px&nbsp;10px</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;text-indent</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;0px</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;line-height</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;18px</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
</span><span style="color: #000000">}</span><span style="color: #800000"><br />
a.tooltip:hover&nbsp;span<br />
</span><span style="color: #000000">{</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;display</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;inline</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;position</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;absolute</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;background</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;#ffffff</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;border</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;1px&nbsp;solid&nbsp;#cccccc</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;color</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;#6c6c6c</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;text-decoration</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;none</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
</span><span style="color: #000000">}</span><span style="color: #800000"><br />
</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;end&nbsp;of&nbsp;css&nbsp;</span></div>
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">Easy&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">a&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="tooltip"</span><span style="color: #ff0000">&nbsp;href</span><span style="color: #0000ff">="#"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Tooltip</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">This&nbsp;is&nbsp;the&nbsp;crazy&nbsp;little&nbsp;Easy&nbsp;Tooltip&nbsp;Text.</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">a</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">.</span></div>
</span><br />
<br />
<hr color="#999999" size="4" />
<strong>2. jtip<br />
</strong>http://codylindley.com/blogstuff/js/jtip/<br />
<br />
<img height="184" alt="" src="http://www.blogjava.net/images/blogjava_net/kiant/2010.04/jtip.jpg" width="640" border="0" /><br />
<br />
<br />
<br />
<hr color="#999999" size="4" />
<strong>3.</strong><br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/kiant/aggbug/317457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2010-04-21 12:49 <a href="http://www.blogjava.net/kiant/articles/317457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态添加/删除HTML元素</title><link>http://www.blogjava.net/kiant/articles/268893.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Mon, 04 May 2009 14:18:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/268893.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/268893.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/268893.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/268893.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/268893.html</trackback:ping><description><![CDATA[<br />
本文出自&nbsp;&nbsp; <a href="http://topic.csdn.net/t/20061014/18/5082375.html" target="_blank">动态删除Html元素(请教高手)</a><br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;&nbsp;&nbsp;HTML&nbsp;&nbsp;&nbsp;PUBLIC&nbsp;&nbsp;&nbsp;"-//W3C//DTD&nbsp;&nbsp;&nbsp;HTML&nbsp;&nbsp;&nbsp;4.0&nbsp;&nbsp;&nbsp;Transitional//EN"&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">WebForm2</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="GENERATOR"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;Content</span><span style="color: #0000ff">="Microsoft&nbsp;&nbsp;&nbsp;Visual&nbsp;&nbsp;&nbsp;Studio&nbsp;&nbsp;&nbsp;.NET&nbsp;&nbsp;&nbsp;7.1"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="CODE_LANGUAGE"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;Content</span><span style="color: #0000ff">="C#"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="vs_defaultClientScript"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;content</span><span style="color: #0000ff">="JavaScript"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="vs_targetSchema"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;content</span><span style="color: #0000ff">="http://schemas.microsoft.com/intellisense/ie5"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img id="Codehighlighter1_424_1070_Open_Image" onclick="this.style.display='none'; Codehighlighter1_424_1070_Open_Text.style.display='none'; Codehighlighter1_424_1070_Closed_Image.style.display='inline'; Codehighlighter1_424_1070_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_424_1070_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_424_1070_Closed_Text.style.display='none'; Codehighlighter1_424_1070_Open_Image.style.display='inline'; Codehighlighter1_424_1070_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">language</span><span style="color: #0000ff">="javascript"</span><span style="color: #0000ff">&gt;</span><span id="Codehighlighter1_424_1070_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_424_1070_Open_Text"><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;count</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;maxfile&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">5</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">最大允许数目</span><span style="color: #008000; background-color: #f5f5f5"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">增加元素</span><span style="color: #008000; background-color: #f5f5f5"><br />
<img id="Codehighlighter1_507_909_Open_Image" onclick="this.style.display='none'; Codehighlighter1_507_909_Open_Text.style.display='none'; Codehighlighter1_507_909_Closed_Image.style.display='inline'; Codehighlighter1_507_909_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_507_909_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_507_909_Closed_Text.style.display='none'; Codehighlighter1_507_909_Open_Image.style.display='inline'; Codehighlighter1_507_909_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;addUpload()&nbsp;</span><span id="Codehighlighter1_507_909_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_507_909_Open_Text"><span style="color: #000000; background-color: #f5f5f5">{&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(count&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">&gt;=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;maxfile)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">return</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">限制最多maxfile个文件框</span><span style="color: #008000; background-color: #f5f5f5"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count</span><span style="color: #000000; background-color: #f5f5f5">++</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">每次自增id不同的HTML对象，并附加到容器最后</span><span style="color: #008000; background-color: #f5f5f5"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;newDiv&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&lt;div&nbsp;id=divUpload</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;count&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&gt;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&lt;input&nbsp;id=file</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;count&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;type=file&nbsp;size=50&nbsp;name=upload&gt;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&lt;a&nbsp;href=javascript:delUpload('divUpload</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;count&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">');&gt;删除&lt;/a&gt;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&lt;/div&gt;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">uploadContent</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).insertAdjacentHTML(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">beforeEnd</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">,&nbsp;newDiv);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">删除指定元素</span><span style="color: #008000; background-color: #f5f5f5"><br />
<img id="Codehighlighter1_952_1059_Open_Image" onclick="this.style.display='none'; Codehighlighter1_952_1059_Open_Text.style.display='none'; Codehighlighter1_952_1059_Closed_Image.style.display='inline'; Codehighlighter1_952_1059_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_952_1059_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_952_1059_Closed_Text.style.display='none'; Codehighlighter1_952_1059_Open_Image.style.display='inline'; Codehighlighter1_952_1059_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;delUpload(diva)&nbsp;</span><span id="Codehighlighter1_952_1059_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_952_1059_Open_Text"><span style="color: #000000; background-color: #f5f5f5">{&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count</span><span style="color: #000000; background-color: #f5f5f5">--</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(diva).parentNode.removeChild(document.getElementById(diva));&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;</span></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">MS_POSITIONING</span><span style="color: #0000ff">="GridLayout"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">form&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="Form1"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;method</span><span style="color: #0000ff">="post"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;runat</span><span style="color: #0000ff">="server"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;enctype</span><span style="color: #0000ff">="multipart/form-data"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">table</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="tdRrmove"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;width</span><span style="color: #0000ff">="2000"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">承接整个file文件框的HTML容器</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="uploadContent"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">默认的file文件框<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id=div1&gt;&lt;input&nbsp;id=file1&nbsp;type=file&nbsp;size=50&nbsp;name=upload&gt;&lt;/div&gt;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">table</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">a&nbsp;</span><span style="color: #ff0000">href</span><span style="color: #0000ff">="javascript:addUpload()"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">添加附件</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">a</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">form</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><img src ="http://www.blogjava.net/kiant/aggbug/268893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2009-05-04 22:18 <a href="http://www.blogjava.net/kiant/articles/268893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax 对页面元素的操作</title><link>http://www.blogjava.net/kiant/articles/267529.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Sat, 25 Apr 2009 15:18:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/267529.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/267529.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/267529.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/267529.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/267529.html</trackback:ping><description><![CDATA[<br />
<a href="http://www.diybl.com/course/1_web/javascript/jsjs/20071226/94570.html" target="_blank">JavaScript的Table表格对象</a><br />
<a href="http://book.csdn.net/bookfiles/110/1001107086.shtml" target="_blank">DOM操作表格对象——table方法</a><br />
<a href="http://tmsoft.lsxy.com/index.php?load=read&amp;id=168" target="_blank">javascript 取table中内容</a><br />
<fieldset><legend>Title</legend>
<p>&lt;script language="javascript"&gt;<br />
&nbsp;var str;<br />
&lt;/script&gt;</p>
<p>取值方法<br />
&nbsp;&nbsp; var value==window.table1.rows.item(0).cells.item(0).innerText; </p>
<p>该行第1列的值<br />
onMouseDown="str=this.cells.item(0).innerText"</p>
<p>这可以取鼠标所在列的值<br />
&lt;td onMouseDown="str=this.innerText"&gt;2行1列&lt;/td&gt;&nbsp; </p>
</fieldset> <br />
<br />
<hr />
<a href="http://topic.csdn.net/u/20081027/21/c32f9508-6ab9-417e-8b8c-1ad5ee725fc1.html" target="_blank">CSS+JS实现鼠标经过改变表单背景色</a><br />
<a href="http://www.ddcat.net/blog/?p=803" target="_blank">JS解决IE 6不支持:hover伪类的简单方法<br />
</a><br />
css2中规定，:hover伪类可以应用在全部元素上，而ie6只支持&lt;a&gt;的伪类，因此对于ie6需要使用js，而ie7/ff/op/sa直接定义:hover即可。<br />
<br />
<br />
<img src ="http://www.blogjava.net/kiant/aggbug/267529.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2009-04-25 23:18 <a href="http://www.blogjava.net/kiant/articles/267529.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax 开发中遇到的乱码问题</title><link>http://www.blogjava.net/kiant/articles/267526.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Sat, 25 Apr 2009 14:49:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/267526.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/267526.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/267526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/267526.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/267526.html</trackback:ping><description><![CDATA[<p><br />
<a href="http://www.blogjava.net/eamoi/archive/2005/12/05/22516.html#Post" target="_blank">Ajax开发过程中提交获取数据的乱码问题</a></p>
<fieldset><legend>摘录</legend>
<p># re: Ajax开发过程中提交获取数据的乱码问题 2006-09-06 15:32 | 乌鸦在黑夜里飞</p>
<p>实际上所有的问题都来自编码的不统一： <br />
1、HTTP/POST方式在缺省情况下，采用的是&#8220;x-www-form-urlencoded&#8221;进行编码，它和JavaScript里面的encodeURI所起的作用是一样的； <br />
2、经过这样编码的内容，到达后台时，其中的字符都是UTF-8编码格式的； <br />
3、如果你的Servlet/JSP指定输出使用的Content-Type是UTF-8，恭喜你，你不需要对这些Parameters进行特别的编码、解码操作，它一定是正常的； <br />
4、否则你需要对这些parameter进行解、编码操作，例如你的页面是GBK编码，那么你需要这么写： <br />
String sPara = new String(request.getParamter("test").getBytes("iso-8859-1"),"GBK"); <br />
采用gb2312编码的也可以采用GBK编码； <br />
5、如果你是在eclipse中进行工作，请注意你的Servlet和JSP文件的属性，其中的编码必须和content-type中设置的一样，否则javac会对你的文件进行错误的编码，这时候的字节码文件本身的字符串就是错误的，输出也不顶用； <br />
6、最后做一个总结： <br />
6.1、servlet/JSP文件本身的编码必须和content-type输出的一致，否则需要加入额外的编码、解码步骤； <br />
6.2、HTTP/POST方式和encodeURI方式传入的编码都是UTF-8的； <br />
6.3、普通的window.open(...)，也就是HTTP/GET方式，其传入的编码是和运行script的页面编码一致的； <br />
6.4、后台解码必须通过iso-8859-1进行解码，再使用你的目标编码进行编码； <br />
6.5、所有的问题基本上可以得到解决。</p>
<p>&nbsp; 回复&nbsp; 更多评论</p>
</fieldset>
<p><br />
<br />
&nbsp;</p>
<hr />
解决AJAX的乱码，可以用 escape()函数的呀。 <br />
escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br />
<hr />
在asp中解决乱码问题只需要在服务器端加上&lt;%Response.ContentType = "text/html;charset=GB2312"%&gt;
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/kiant/aggbug/267526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2009-04-25 22:49 <a href="http://www.blogjava.net/kiant/articles/267526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于手写 Ajax</title><link>http://www.blogjava.net/kiant/articles/261285.html</link><dc:creator>黄小二</dc:creator><author>黄小二</author><pubDate>Sun, 22 Mar 2009 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/kiant/articles/261285.html</guid><wfw:comment>http://www.blogjava.net/kiant/comments/261285.html</wfw:comment><comments>http://www.blogjava.net/kiant/articles/261285.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kiant/comments/commentRss/261285.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kiant/services/trackbacks/261285.html</trackback:ping><description><![CDATA[<p>&nbsp; function createHttpRequest(){<br />
&nbsp;&nbsp; var httprequest=false;<br />
&nbsp;&nbsp; if (window.XMLHttpRequest)<br />
&nbsp;&nbsp; { // if Mozilla, Safari etc<br />
&nbsp;&nbsp;&nbsp;&nbsp; httprequest=new XMLHttpRequest();<br />
&nbsp;&nbsp;&nbsp;&nbsp; if (httprequest.overrideMimeType)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; httprequest.overrideMimeType('text/xml');<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; else if (window.ActiveXObject)<br />
&nbsp;&nbsp;&nbsp; { // if IE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; httprequest=new ActiveXObject("Msxml2.XMLHTTP");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; httprequest=new ActiveXObject("Microsoft.XMLHTTP");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (e){}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return httprequest;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;<br />
function createXml(str){ <br />
if(document.all){ <br />
&nbsp;var xmlDom=new ActiveXObject("Microsoft.XMLDOM") <br />
&nbsp;xmlDom.loadXML(str) <br />
&nbsp;return xmlDom <br />
} <br />
else <br />
&nbsp;return new DOMParser().parseFromString(str, "text/xml") <br />
}</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;function showSchedule(sid,f){<br />
&nbsp;&nbsp;&nbsp;var url = "../schedule.do?operate=toFindById";<br />
&nbsp;&nbsp;&nbsp;var postStr = "uid=" + encodeURI(sid);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//IE浏览器关于频繁传送数据初始化的问题<br />
&nbsp;&nbsp;&nbsp;httpRequest.open("POST", url, true);<br />
&nbsp;&nbsp;&nbsp;httpRequest.onreadystatechange = function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(httpRequest.readyState == 4)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(httpRequest.status == 200){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var xml = createXml(httpRequest.responseText);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var item = xml.getElementsByTagName("Schedule")[0];&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var scheduleId = item.getElementsByTagName("scheduleId")[0].firstChild.nodeValue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var title = item.getElementsByTagName("title")[0].firstChild.nodeValue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var schContent = item.getElementsByTagName("schContent")[0].firstChild.nodeValue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var address = item.getElementsByTagName("address")[0].firstChild.nodeValue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var ifPrivate = item.getElementsByTagName("ifPrivate")[0].firstChild.nodeValue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var createTime = item.getElementsByTagName("createTime")[0].firstChild.nodeValue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var beginTime = item.getElementsByTagName("beginTime")[0].firstChild.nodeValue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var endTime = item.getElementsByTagName("endTime")[0].firstChild.nodeValue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var meetingId = item.getElementsByTagName("meetingId")[0].firstChild.nodeValue;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.scheduleId.value = scheduleId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.title.value = title;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.address.value = address;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.meetingId.value = meetingId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.schContent.value = schContent;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ifPrivate == 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.ifPrivate.checked = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.ifPrivate.checked = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.beginTime.value = beginTime;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.endTime.value = endTime;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.option.value = "doModify";&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;<strong>httpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");</strong>&nbsp;<br />
&nbsp;&nbsp;&nbsp;httpRequest.send(postStr);<br />
&nbsp;&nbsp;}<br />
<br />
<br />
<br />
====================================<br />
<br />
dom4j-1.6.1.jar<br />
<br />
import org.dom4j.Document;<br />
import org.dom4j.DocumentHelper;<br />
import org.dom4j.Element;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Document doc = DocumentHelper.createDocument();<br />
&nbsp;&nbsp;&nbsp;&nbsp;Element node = doc.addElement("Depart");<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Element departId = node.addElement("departId");<br />
&nbsp;&nbsp;&nbsp;&nbsp;departId.setText(item.getDepartId().toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;Element branchId = node.addElement("branchId");<br />
&nbsp;&nbsp;&nbsp;&nbsp;branchId.setText(item.getBranchId().toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;Element departName = node.addElement("departName");<br />
&nbsp;&nbsp;&nbsp;&nbsp;departName.setText(item.getDepartName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;Element principalUserId = node.addElement("principalUserId");<br />
&nbsp;&nbsp;&nbsp;&nbsp;principalUserId.setText(item.getPrincipalUserId().toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;Element connectTelNo = node.addElement("connectTelNo");<br />
&nbsp;&nbsp;&nbsp;&nbsp;connectTelNo.setText(item.getConnectTelNo());<br />
&nbsp;&nbsp;&nbsp;&nbsp;Element connectMobileTelNo = node.addElement("connectMobileTelNo");<br />
&nbsp;&nbsp;&nbsp;&nbsp;connectMobileTelNo.setText(item.getConnectMobileTelNo());<br />
&nbsp;&nbsp;&nbsp;&nbsp;Element faxes = node.addElement("faxes");<br />
&nbsp;&nbsp;&nbsp;&nbsp;faxes.setText(item.getFaxes());<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintWriter out = response.getWriter();<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.println(doc.asXML());<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.close();<br />
<br />
<br />
================================<br />
<br />
request.setContentType("text/xml");</p>
<p>httpRequest.resoponseXML;<br />
<br />
===========================<br />
<strong>利用函数格式化 POST 请求参数<br />
</strong><br />
&nbsp;function addParam(paramObj, paramName, paramValue){<br />
&nbsp;&nbsp;if(paramObj.length &gt; 0)<br />
&nbsp;&nbsp;&nbsp;paramObj += "&amp;";<br />
&nbsp;&nbsp;return paramObj + encodeURIComponent(paramName)<br />
&nbsp;&nbsp;&nbsp;+ "=" + encodeURIComponent(paramValue);<br />
&nbsp;}<br />
<br />
<br />
=============================================<br />
javascript 里面的遍历<br />
<br />
for (pop in windowxxxx){<br />
&nbsp;&nbsp;&nbsp;&nbsp;.....<br />
}</p>
  <img src ="http://www.blogjava.net/kiant/aggbug/261285.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kiant/" target="_blank">黄小二</a> 2009-03-22 09:50 <a href="http://www.blogjava.net/kiant/articles/261285.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>