﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-鱼跃于渊-文章分类-javascript相关</title><link>http://www.blogjava.net/jasonwbd/category/34807.html</link><description>First know how, Second know why !</description><language>zh-cn</language><lastBuildDate>Fri, 26 Dec 2008 23:45:29 GMT</lastBuildDate><pubDate>Fri, 26 Dec 2008 23:45:29 GMT</pubDate><ttl>60</ttl><item><title>javascript的作用域和闭包</title><link>http://www.blogjava.net/jasonwbd/articles/247884.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Tue, 23 Dec 2008 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/247884.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/247884.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/247884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/247884.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/247884.html</trackback:ping><description><![CDATA[<p>作者:潇湘客老师<br />
<br />
闭包是通过在对一个函数调用的执行环境中返回一个函数对象构成的。比如，在对函数调用的过程中，将一个对内部函数对象的引用指定给另一个对象的属性。或者，直接将这样一个（内部）函数对象的引用指定给一个全局变量、或者一个全局性对象的属性，或者一个作为参数以引用方式传递给外部函数的对象。例如：- </p>
<p>function exampleClosureForm(arg1, arg2){<br />
var localVar = 8;<br />
function exampleReturned(innerArg){<br />
return ((arg1 + arg2)/(innerArg + localVar));<br />
}<br />
/* 返回一个定义为 exampleReturned 的内部函数的引用 -:- */ return exampleReturned;<br />
}</p>
<p>var globalVar = exampleClosureForm(2, 4);<br />
这种情况下，在调用外部函数 exampleClosureForm 的执行环境中所创建的函数对象就不会被当作垃圾收集，因为该函数对象被一个全局变量所引用，而且仍然是可以访问的，甚至可以通过 globalVar(n) 来执行。 </p>
<p>的确，情况比正常的时候要复杂一些。因为现在这个被变量 globalVar 引用的内部函数对象的 [[scope]] 属性所引用的作用域链中，包含着属于创建该内部函数对象的执行环境的活动对象（和全局对象）。由于在执行被 globalVar 引用的函数对象时，每次都要把该函数对象的 [[scope]] 属性所引用的整个作用域链添加到创建的（内部函数的）执行环境的作用域中（即此时的作用域中包括：内部执行环境的活动对象、外部执行环境的活动对象、全局对象。译者注）， 所以这个（外部执行环境的）活动对象不会被当作垃圾收集。 </p>
<p>闭包因此而构成。此时，内部函数对象拥有自由的变量，而位于该函数作用域链中的活动（可变）对象则成为与变量绑定的环境。 </p>
<p>由于活动（可变）对象受限于内部函数对象（现在被 globalVar 变量引用）的 [[scope]] 属性中作用域链的引用，所以活动对象连同它的变量声明－－即属性的值，都会被保留。而在对内部函数调用的执行环境中进行作用域解析时，将会把与活动（可变）对象的命名属性一致的标识符作为该对象的属性来解析。活动对象的这些属性值即使是在创建它的执行环境退出后，仍然可以被读取和设置。 </p>
<p>在上面的例子中，当外部函数返回（退出它的执行环境）时，其活动（可变）对象的变量声明中记录了形式参数、内部函数定义以及局部变量的值。arg1 属性的值为 2，而 arg2 属性的值为 4，localVar 的值是 8，还有一个 exampleReturned 属性，它引用由外部函数返回的内部函数对象。（为方便起见，我们将在后面的讨论中，称这个活动&lt;可变&gt;对象为 "ActOuter1"）。 </p>
<p>如果再次调用 exampleClosureForm 函数，如：- </p>
<p>var secondGlobalVar = exampleClosureForm(12, 3);<br />
- 则会创建一个新的执行环境和一个新的活动对象。而且，会返回一个新的函数对象，该函数对象的 [[scope]] 属性引用的作用域链与前一次不同，因为这一次的作用域链中包含着第二个执行环境的活动对象，而这个活动对象的属性 arg1 值为 12 而属性 arg2 值为 3。（为方便起见，我们将在后面的讨论中，称这个活动&lt;可变&gt;对象为 "ActOuter2"）。 </p>
<p>通过第二次执行 exampleClosureForm 函数，第二个、也是截然不同的闭包诞生了。 </p>
<p>通过执行 exampleClosureForm 创建的两个函数对象分别被指定给了全局变量 globalVar 和 secondGlobalVar，并返回了表达式 ((arg1 + arg2)/(innerArg + localVar))。该表达式对其中的四个标识符应用了不同的操作符。如何确定这些标识符的值是体现闭包价值的关键所在。 </p>
<p>我们来看一看，在执行由 globalVar 引用的函数对象－－如 globalVar(2)－－时的情形。此时，会创建一个新的执行环境和相应的活动对象（我们将称之为&#8220;ActInner1&#8221;），并把该活动对象添加到执行的函数对象的 [[scope]] 属性所引用的作用域链的前端。ActInner1 会带有一个属性 innerArg，根据传递的形式参数，其值被指定为 2。这个新执行环境的作用域链变成： ActInner1-&gt;ActOuter1-&gt;全局对象. </p>
<p>为了返回表达式 ((arg1 + arg2)/(innerArg + localVar)) 的值，要沿着作用域链进行标识符解析。表达式中标识符的值将通过依次查找作用域链中每个对象（与标识符名称一致）的属性来确定。 </p>
<p>作用域链中的第一个对象是 ActInner1，它有一个名为 innerArg 的属性，值是 2。所有其他三个标识符在 ActOuter1 中都有对应的属性：arg1 是 2，arg2 是 4 而 localVar 是 8。最后，函数调用返回 ((2 + 2)/(2 + 8))。 </p>
<p>现在再来看一看由 secondGlobalVar 引用的同一个函数对象的执行情况，比如 secondGlobalVar(5)。我们把这次创建的新执行环境的活动对象称为 &#8220;ActInner2&#8221;，相应的作用域链就变成了：ActInner2-&gt;ActOuter2-&gt;全局对象。ActInner2 返回 innerArg 的值 5，而 ActOuter2 分别返回 arg1、arg2 和 localVar 的值 12、3 和 8。函数调用返回的值就是 ((12 + 3)/(5 + 8))。 </p>
<p>如果再执行一次 secondGlobalVar，则又会有一个新活动对象被添加到作用域链的前端，但 ActOuter2 仍然是链中的第二个对象，而他的命名属性会再次用于完成标识符 arg1、arg2 和 localVar 的解析。 </p>
<p>这就是 ECMAScript 的内部函数获取、维持和访问创建他们的执行环境的形式参数、声明的内部函数以及局部变量的过程。这个过程说明了构成闭包以后，内部的函数对象在其存续过程中，如何维持对这些值的引用、如何对这些值进行读取的机制。即，创建内部函数对象的执行环境的活动（可变）对象，会保留在该函数对象的 [[scope]] 属性所引用的作用域链中。直到所有对这个内部函数的引用被释放，这个函数对象才会成为垃圾收集的目标（连同它的作用域链中任何不再需要的对象）。 </p>
<p>内部函数自身也可能有内部函数。在通过函数执行返回内部函数构成闭包以后，相应的闭包自身也可能会返回内部函数从而构成它们自己的闭包。每次作用域链嵌套，都会增加由创建内部函数对象的执行环境引发的新活动对象。ECMAScript 规范要求作用域链是临时性的，但对作用域链的长度却没有加以限制。在具体实现中，可能会存在实际的限制，但还没有发现有具体限制数量的报告。目前来看，嵌套的内部函数所拥有的潜能，仍然超出了使用它们的人的想像能力。 <br />
&nbsp;<br />
UID50579 帖子297 精华0 下载币114 枚 金币236 枚 阅读权限200 在线时间131 小时 注册时间2008-10-2 最后登录2008-12-22 查看个人网站</p>
<p>查看详细资料<br />
&nbsp;引用 使用道具 报告 回复 TOP <br />
&nbsp;<br />
</p>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/247884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-12-23 11:20 <a href="http://www.blogjava.net/jasonwbd/articles/247884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript后台菜单</title><link>http://www.blogjava.net/jasonwbd/articles/247606.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Sun, 21 Dec 2008 03:45:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/247606.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/247606.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/247606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/247606.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/247606.html</trackback:ping><description><![CDATA[<a href="http://lxbzj.com/upload/200604/navbar.htm">http://lxbzj.com/upload/200604/navbar.htm</a>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/247606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-12-21 11:45 <a href="http://www.blogjava.net/jasonwbd/articles/247606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>addEventListener－有用的笔记</title><link>http://www.blogjava.net/jasonwbd/articles/247593.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Sun, 21 Dec 2008 02:07:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/247593.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/247593.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/247593.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/247593.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/247593.html</trackback:ping><description><![CDATA[<p><span class="itemTitle">为什么用 addEventListener</span></p>
<ul>
    <li>可以对同一物件的同一事件绑定多个事件处理程序。
    <li>可以通过事件流三个阶段更好地控制何时触发事件处理程序。
    <li>工作于 DOM 元素，而不仅是 HTML 元素。</li>
</ul>
<p><span class="itemTitle">事件分发时添加 eventListener</span></p>
<p>不会立即触发 eventListener，可能会在下一个事件流（比如冒泡阶段）中触发。</p>
<p><span class="itemTitle">多个相同的 eventListener</span></p>
<p>如下，三个参数完全相同，并且第二个参数不是匿名函数。</p>
<div class="code">document.getElementById("myBox").addEventListener("click", Go, false);<br />
document.getElementById("myBox").addEventListener("click", Go, false);<br />
document.getElementById("myBox").addEventListener("click", Go, false);</div>
<p>会抛弃多余的，只保留一个，对应的 removeEventListener 也只用一次就可以了（removeEventListener 用法和 addEventListener 完全相同）。</p>
<p>但如果是第二个参数是匿名函数，比如：</p>
<div class="code">document.getElementById("outDiv").addEventListener("click", function () { document.getElementById("info").innerHTML += "1";}, false);<br />
document.getElementById("outDiv").addEventListener("click", function () { document.getElementById("info").innerHTML += "1";}, false);<br />
document.getElementById("outDiv").addEventListener("click", function () { document.getElementById("info").innerHTML += "1";}, false);</div>
<p>则三个均有效，并且无法用 removeEventListener 除去。</p>
<p><span class="itemTitle">this</span></p>
<p>事件处理程序中，this 变成了触发事件的控件，但我们仍推荐用 event.target 或 event.currentTarget。</p>
<p><span class="itemTitle">早期的事件监听</span></p>
<p>在 DOM0 中，我们用 obj.onclick = FuncName，由于兼容性好，应用非常广泛，只是功能不如 addEventListener 强大。</p>
<p><span class="itemTitle">内存问题</span></p>
<p>前面提到了许多使用域名函数的地方，有时这是没办法的，请参见<a href="http://www.cftea.com/c/2006/12/L1MK8NDLMFESJFHI.asp" target="_blank">在各浏览器中动态添加事件－参数篇</a>，但这会导致内存问题。</p>
<p>一旦事件绑定之后，该绑定代码<a href="http://www.cftea.com/c/2008/09/ZES3HH9Z84M4APY5.asp" target="_blank">作用域</a>的变量就都保留下来，不会被 JavaScript 引擎回收，这可能会引起占用大量内存的问题，由于 removeEventListener 无法删除匿名函数的事件处理程序，只有在物件（比如按钮）去除之后，该内存才可能得到回收。</p>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/247593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-12-21 10:07 <a href="http://www.blogjava.net/jasonwbd/articles/247593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>addEventListener－event 对象的属性和方法</title><link>http://www.blogjava.net/jasonwbd/articles/247592.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Sun, 21 Dec 2008 02:04:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/247592.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/247592.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/247592.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/247592.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/247592.html</trackback:ping><description><![CDATA[<p>事件触发时，会将一个 Event 对象传递给事件处理程序，比如：</p>
<div class="code">
<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: #008080">1</span>&nbsp;<span style="color: #000000">document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">testText</span><span style="color: #000000">"</span><span style="color: #000000">).addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">keydown</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;(event)&nbsp;{&nbsp;alert(event.keyCode);&nbsp;},&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);</span></div>
</div>
<p><span class="itemTitle">事件类型</span></p>
<p>DOM 事件类型是分为 UIEvent、UIEvent:KeyEvent、UIEvent:MouseEvent，不同的事件有不同的属性和方法，但常用的来说我们都不会用错，比如我们不会在鼠标事件中去取键盘值（Ctrl、Alt、Shift 除外），所以我们没有必要深究。</p>
<p><span class="itemTitle">该对象的属性和方法有：</span></p>
<p><span class="key">view</span> 只读，对象，发生事件的 Window 对象。</p>
<p><span class="key">type</span> 只读，字符串。比如鼠标点击事件的类型：click。</p>
<p><span class="key">eventPhase</span> 只读，数字，事件流正经历的阶段。1－捕获，2－目标，3－冒泡。</p>
<p><span class="key">target</span> 只读，对象，派发事件的目标对象。比如鼠标是点击在哪个按钮上的。</p>
<p><span class="key">currentTarget</span> 只读，对象，当前正在调用监听器的对象，也就是当前 addEventListener 是绑定在哪个对象上的。</p>
<p><span class="key">timeStamp</span> 只读，数字，用毫秒表示事件发生时距计算机开机的时间。</p>
<hr />
<p><span class="key">cancelable</span> 只读，布尔，处理事件的默认行为是否可以停止。主要针对一些系统事件，如果值为 true，则 event 的 preventDefault 方法可以使用，否则不可用。</p>
<p><span class="key">preventDefault()</span> 阻止浏览器的默认行为，比如在文本框中打字触发 keydown，如果 keydown 事件处理程序中调用了 preventDefault()，所打的字就不会跑到文本框中去，注意，此时不要弹出 alert 对话框，否则可能不起作用。IE 中在事件处理程序中用 return false 实现类似功能。</p>
<hr />
<p><span class="key">bubbles</span> 只读，布尔，事件是否开启冒泡功能。</p>
<p><span class="key">stopImmediatePropagation</span> 这个东西在 JavaScript 中是个属性，而不是方法，布尔，但具体测试并未发现其用途，不知是不是 bug。</p>
<p><span class="key">stopPropagation()</span> 停止当前的事件流传播，但不会停止当前正在处理的对象。IE 中用 event.cancelBubble =&nbsp; true 实现类似功能。</p>
<p><span class="key">cancelBubble</span> 布尔，是否取消冒泡，<span class="caution">不建议使用</span>，用 stopPropagation() 代替。</p>
<p><span class="key">preventBubble()</span> 阻止冒泡，<span class="caution">不建议使用</span>，用 stopPropagation()&nbsp;代替。</p>
<p><span class="key">preventCapture()</span> 阻止捕获，<span class="caution">不建议使用</span>，用 stopPropagation()&nbsp;代替。</p>
<hr />
<p><span class="key">detail</span> 只读，数字，提供时间的额外信息，对于 click 事件、mousedown 事件和 mouseup 事件，这个字段代表点击的次数。</p>
<p><span class="key">isChar</span> 只读，布尔，按下的按键值是否是字符，比如按下 Ctrl 键时，就返回 false。不过您在 Firefox 中测试时，该值总是 false，Firefox 官方已经说明这是一个 bug。</p>
<p><span class="key">altKey</span> 只读，布尔，是否按下了 Alt 键。</p>
<p><span class="key">ctrlKey</span> 只读，布尔，是否按下了 Ctrl 键。</p>
<p><span class="key">shiftKey</span> 只读，布尔，是否按下了 Shift 键。</p>
<p><span class="key">metaKey</span> 只读，布尔，是否按下了 Meta 键。</p>
<hr />
<p><span class="itemTitle">下面一些属性很有意思，请仔细区别。</span></p>
<p><span class="key">charCode</span> 只读，数字，字符（英文、数字、符号）的 Unicode 值。</p>
<ul>
    <li>只用于 keypress。</li>
</ul>
<p><span class="key">keyCode</span> 只读，数字，键盘按键值。</p>
<ul>
    <li>用于 keypress 时：返回非字符按键值（除 Ctrl、Shift、Alt、Caps Lock、单行文本框中按向上键等）；
    <li>用于 keydown、keyup 时：返回任意键值。</li>
</ul>
<p><span class="key">button</span> 只读，数字，鼠标按键值。</p>
<ul>
    <li>用于 click 时：0－左键。
    <li>用于 mousedown、mouseup 时：0－左键，1－中间键（滚轮），2－右键。</li>
</ul>
<p><span class="key">which</span> 只读，数字，键盘按键值或鼠标按键值。</p>
<ul>
    <li>用于 keypress 时：等同于 charCode + 回退键 + 回车键；
    <li>用于 keydown、keyup 时：返回任意键值；
    <li>用于 click 时：1－左键，与 button 的值略有区别。
    <li>用于 mousedown、mouseup 时：1－左键，2－中间键（滚轮），3－右键，与 button 的值略有区别。</li>
</ul>
<p><span class="itemTitle">可以看出，which 只有一点没有包括：那就是 keypress 时，不如 keyCode 那么全，但实际上，keypress 事件中用于非字符键的情况较少，所以一般还是用 which 代替全部。</span></p>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/247592.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-12-21 10:04 <a href="http://www.blogjava.net/jasonwbd/articles/247592.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>addEventListener－第三个参数 useCapture</title><link>http://www.blogjava.net/jasonwbd/articles/247591.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Sun, 21 Dec 2008 02:02:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/247591.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/247591.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/247591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/247591.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/247591.html</trackback:ping><description><![CDATA[<p>addEventListener 有三个参数：第一个参数表示事件名称（不含 on，如 "click"）；第二个参数表示要接收事件处理的函数；第三个参数为 useCapture，本文就讲解它。</p>
<div class="code">
<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: #008080">1</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="outDiv"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000">&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">="middleDiv"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&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">="inDiv"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">请在此点击鼠标。</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span>&nbsp;<span style="color: #000000">&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 />
</span><span style="color: #008080">5</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">6</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">7</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="info"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></div>
</div>
<p>&nbsp;</p>
<div class="code">
<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: #008080">1</span>&nbsp;<span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;outDiv&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">outDiv</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;middleDiv&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">middleDiv</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;inDiv&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">inDiv</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">4</span>&nbsp;<span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;info&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">info</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">5</span>&nbsp;<span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">6</span>&nbsp;<span style="color: #000000">outDiv.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</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;info.innerHTML&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">outDiv</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">&lt;br&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;},&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
</span><span style="color: #008080">7</span>&nbsp;<span style="color: #000000">middleDiv.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</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;info.innerHTML&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">middleDiv</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">&lt;br&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;},&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
</span><span style="color: #008080">8</span>&nbsp;<span style="color: #000000">inDiv.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</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;info.innerHTML&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">inDiv</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">&lt;br&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;},&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);</span></div>
</div>
<p>上述是我们测试的代码，根据 info 的显示来确定触发的顺序，有三个 addEventListener，而 useCapture 可选值为 true 和 false，所以 2*2*2，可以得出 8 段不同的程序。</p>
<ul>
    <li>全为 false 时，触发顺序为：inDiv、middleDiv、outDiv；
    <li>全为 true 时，触发顺序为：outDiv、middleDiv、inDiv；
    <li>outDiv 为 true，其他为 false 时，触发顺序为：outDiv、inDiv、middleDiv；
    <li>middleDiv 为 true，其他为 false 时，触发顺序为：middleDiv、inDiv、outDiv；
    <li>&#8230;&#8230;</li>
</ul>
<p><span class="itemTitle">最终得出如下结论：</span></p>
<ul>
    <li>true 的触发顺序总是在 false 之前；
    <li>如果多个均为 true，则外层的触发先于内层；
    <li>如果多个均为 false，则内层的触发先于外层。</li>
</ul>
<p>下面提供全部代码，您可以更改其中的 true、false 值，来进行测试。注意，不适用于 IE。<br />
</p>
<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: #008080">&nbsp;1</span>&nbsp;<span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="gb2312"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">html&nbsp;</span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://www.w3.org/1999/xhtml"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">="Content-Language"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">="zh-cn"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">="Content-Type"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">="text/html;&nbsp;charset=gb2312"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">useCapture</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">style&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/css"</span><span style="color: #0000ff">&gt;</span><span style="color: #800000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #800000; background-color: #f5f5f5">#outDiv<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">{</span><span style="color: #ff0000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #ff0000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;padding</span><span style="color: #000000; background-color: #f5f5f5">:</span><span style="color: #0000ff; background-color: #f5f5f5">10px&nbsp;10px&nbsp;10px&nbsp;10px</span><span style="color: #000000; background-color: #f5f5f5">;</span><span style="color: #ff0000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #ff0000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;border</span><span style="color: #000000; background-color: #f5f5f5">:</span><span style="color: #0000ff; background-color: #f5f5f5">1px&nbsp;solid&nbsp;red</span><span style="color: #000000; background-color: #f5f5f5">;</span><span style="color: #ff0000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">}</span><span style="color: #800000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #800000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #800000; background-color: #f5f5f5">#middleDiv<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">{</span><span style="color: #ff0000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #ff0000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;padding</span><span style="color: #000000; background-color: #f5f5f5">:</span><span style="color: #0000ff; background-color: #f5f5f5">10px&nbsp;10px&nbsp;10px&nbsp;10px</span><span style="color: #000000; background-color: #f5f5f5">;</span><span style="color: #ff0000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #ff0000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;border</span><span style="color: #000000; background-color: #f5f5f5">:</span><span style="color: #0000ff; background-color: #f5f5f5">1px&nbsp;solid&nbsp;green</span><span style="color: #000000; background-color: #f5f5f5">;</span><span style="color: #ff0000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">}</span><span style="color: #800000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #800000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #800000; background-color: #f5f5f5">#inDiv<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">{</span><span style="color: #ff0000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #ff0000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;padding</span><span style="color: #000000; background-color: #f5f5f5">:</span><span style="color: #0000ff; background-color: #f5f5f5">10px&nbsp;10px&nbsp;10px&nbsp;10px</span><span style="color: #000000; background-color: #f5f5f5">;</span><span style="color: #ff0000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #ff0000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;border</span><span style="color: #000000; background-color: #f5f5f5">:</span><span style="color: #0000ff; background-color: #f5f5f5">1px&nbsp;solid&nbsp;blue</span><span style="color: #000000; background-color: #f5f5f5">;</span><span style="color: #ff0000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">}</span><span style="color: #800000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">style</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">31</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">32</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="outDiv"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">33</span>&nbsp;<span style="color: #000000">&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">="middleDiv"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">34</span>&nbsp;<span style="color: #000000">&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">="inDiv"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">请在此点击鼠标。</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">35</span>&nbsp;<span style="color: #000000">&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 />
</span><span style="color: #008080">36</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">37</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">38</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="info"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">39</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">40</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">language</span><span style="color: #0000ff">="javascript"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">41</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">&lt;!--</span><span style="color: #000000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">42</span>&nbsp;<span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">千一网络&nbsp;www.cftea.com</span><span style="color: #008000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">43</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">44</span>&nbsp;<span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;outDiv&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">outDiv</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />
</span><span style="color: #008080">45</span>&nbsp;<span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;middleDiv&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">middleDiv</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />
</span><span style="color: #008080">46</span>&nbsp;<span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;inDiv&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">inDiv</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />
</span><span style="color: #008080">47</span>&nbsp;<span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;info&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">info</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />
</span><span style="color: #008080">48</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">&nbsp;<br />
</span><span style="color: #008080">49</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">outDiv.addEventListener(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">click</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">,&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;()&nbsp;{&nbsp;info.innerHTML&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">outDiv</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;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&lt;br&gt;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;},&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">false</span><span style="color: #000000; background-color: #f5f5f5">);<br />
</span><span style="color: #008080">50</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">middleDiv.addEventListener(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">click</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">,&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;()&nbsp;{&nbsp;info.innerHTML&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">middleDiv</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;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&lt;br&gt;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;},&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">false</span><span style="color: #000000; background-color: #f5f5f5">);<br />
</span><span style="color: #008080">51</span>&nbsp;<span style="color: #000000; background-color: #f5f5f5">inDiv.addEventListener(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">click</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">,&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;()&nbsp;{&nbsp;info.innerHTML&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">inDiv</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;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&lt;br&gt;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;},&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">false</span><span style="color: #000000; background-color: #f5f5f5">);<br />
</span><span style="color: #008080">52</span>&nbsp;<span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">--&gt;</span><span style="color: #008000; background-color: #f5f5f5"><br />
</span><span style="color: #008080">53</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">54</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">55</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">56</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">57</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/247591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-12-21 10:02 <a href="http://www.blogjava.net/jasonwbd/articles/247591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>addEventListener－事件流</title><link>http://www.blogjava.net/jasonwbd/articles/247589.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Sun, 21 Dec 2008 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/247589.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/247589.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/247589.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/247589.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/247589.html</trackback:ping><description><![CDATA[<p>说到 addEventListener 不得不说到事件流，先说事件流对后面的解释比较方便。</p>
<p>当一个事件发生时，分为三个阶段：</p>
<p><span class="itemTitle">捕获阶段</span> 从根节点开始顺序而下，检测每个节点是否注册了事件处理程序。如果注册了事件处理程序，并且 useCapture 为 true，则调用该事件处理程序。（IE 中无此阶段。）</p>
<p><span class="itemTitle">目标阶段</span> 触发在目标对象本身注册的事件处理程序，也称<span class="itemTitle">正常事件派发阶段</span>。</p>
<p><span class="itemTitle">冒泡阶段</span> 从目标节点到根节点，检测每个节点是否注册了事件处理程序，如果注册了事件处理程序，并且 useCapture 为 false，则调用该事件处理程序。 </p>
<p>举例</p>
<div class="code">
<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: #008080">1</span>&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="div1"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000">&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">="div2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&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">="div3"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span>&nbsp;<span style="color: #000000">&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">="div4"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">5</span>&nbsp;<span style="color: #000000">&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 />
</span><span style="color: #008080">6</span>&nbsp;<span style="color: #000000">&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 />
</span><span style="color: #008080">7</span>&nbsp;<span style="color: #000000">&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 />
</span><span style="color: #008080">8</span>&nbsp;<span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></div>
</div>
<p>如果在 d3 上点击鼠标，事件流是这样的：</p>
<p><span class="itemTitle">捕获阶段</span>&nbsp;在 div1 处检测是否有 useCapture 为 true 的事件处理程序，若有，则执行该程序，然后再同样地处理 div2。</p>
<p><span class="itemTitle">目标阶段</span> 在 div3 处，发现 div3 就是鼠标点击的节点，所以这里为目标阶段，若有事件处理程序，则执行该程序，这里不论 useCapture 为 true 还是 false。</p>
<p><span class="itemTitle">冒泡阶段</span> 在 div2 处检测是否有 useCapture 为 false 的事件处理程序，若有，则执行该程序，然后再同样地处理 div1。</p>
<p>注意，上述捕获阶段和冒泡阶段中，实际上 div1 之上还应该有结点，比如有 body，但这里不讨论。</p>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/247589.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-12-21 09:57 <a href="http://www.blogjava.net/jasonwbd/articles/247589.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>addEventListener－开始</title><link>http://www.blogjava.net/jasonwbd/articles/247588.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Sun, 21 Dec 2008 01:54:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/247588.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/247588.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/247588.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/247588.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/247588.html</trackback:ping><description><![CDATA[<p>前面零散地写了些关于 addEventListener 的内容，觉得比较散，有些地方可能也说得不够清楚明白，所以决定以连载的形式从头到尾再写一篇。</p>
<p>addEventListener 用于注册事件处理程序，IE 中为 <a href="http://www.cftea.com/c/2006/12/83F0C12477NDP4O0.asp" target="_blank">attachEvent</a>，我们为什么讲 addEventListener 而不讲 attachEvent 呢？一来 attachEvent 比较简单，二来 addEventListener 才是 DOM 中的标准内容。</p>
<p><span class="itemTitle">简介</span></p>
<p>addEventListener 为文档节点、document、window 或 XMLHttpRequest 注册事件处理程序，在以前我们一般是 &lt;input type="button" onclick="..."，或&nbsp;document.getElementById("testButton").onclick = FuncName，&nbsp;而在 DOM 中，我们用 addEventListener（IE 中用 attachEvent）。</p>
<p><span class="itemTitle">语法</span></p>
<div class="code">target.addEventListener(type, listener, useCapture);</div>
<ul>
    <li><span class="key">target</span> 文档节点、document、window 或 XMLHttpRequest。
    <li><span class="key">type</span> 字符串，事件名称，不含&#8220;on&#8221;，比如&#8220;click&#8221;、&#8220;mouseover&#8221;、&#8220;keydown&#8221;等。
    <li><span class="key">listener</span> 实现了 EventListener 接口或者是 JavaScript 中的函数。
    <li><span class="key">useCapture</span> 是否使用捕捉，看了后面的事件流一节后就明白了，一般用 false。 </li>
</ul>
<p><span class="itemTitle">示例</span></p>
<div class="code">
<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: #008080">1</span>&nbsp;<span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Go()<br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000">{<br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #008000"><br />
</span><span style="color: #008080">4</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">5</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">6</span>&nbsp;<span style="color: #000000">document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">testButton</span><span style="color: #000000">"</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;Go,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);</span></div>
</div>
<p>或者 listener 直接就是函数</p>
<div class="code">
<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: #008080">1</span>&nbsp;<span style="color: #000000">document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">testButton</span><span style="color: #000000">"</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;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;()&nbsp;{&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&nbsp;},&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);</span></div>
</div>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/247588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-12-21 09:54 <a href="http://www.blogjava.net/jasonwbd/articles/247588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS:attachEvent和addEventListener 使用方法</title><link>http://www.blogjava.net/jasonwbd/articles/247587.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Sun, 21 Dec 2008 01:48:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/247587.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/247587.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/247587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/247587.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/247587.html</trackback:ping><description><![CDATA[<div class="textbox-title">
<h4>JS:attachEvent和addEventListener 使用方法</h4>
</div>
<div class="textbox-content" id="textboxContent">attachEvent方法，为某一事件附加其它的处理事件。（不支持Mozilla系列）<br />
<br />
addEventListener方法 用于 Mozilla系列<br />
<br />
举例:
<div class="code">
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">btn</span><span style="color: #000000">"</span><span style="color: #000000">).onclick&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;method1;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">btn</span><span style="color: #000000">"</span><span style="color: #000000">).onclick&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;method2;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">btn</span><span style="color: #000000">"</span><span style="color: #000000">).onclick&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;method3;</span></div>
</div>
</div>
如果这样写,那么将会只有medhot3被执行<br />
<br />
写成这样：<br />
<div class="code">
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;btn1Obj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">btn1</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">object.attachEvent(event,function);</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">btn1Obj.attachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,method1);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />btn1Obj.attachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,method2);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />btn1Obj.attachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,method3);</span></div>
</div>
</div>
执行顺序为method3-&gt;method2-&gt;method1<br />
<br />
如果是Mozilla系列，并不支持该方法，需要用到addEventListener
<div class="code">
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;btn1Obj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">btn1</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">element.addEventListener(type,listener,useCapture);</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">btn1Obj.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">,method1,</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />btn1Obj.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">,method2,</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />btn1Obj.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">,method3,</span><span style="color: #0000ff">false</span><span style="color: #000000">);</span></div>
</div>
</div>
执行顺序为method1-&gt;method2-&gt;method3<br />
<br />
使用实例：<br />
<br />
<div class="code">
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">1</span><span style="color: #000000">。&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;el&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;EDITFORM_DOCUMENT.body;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">先取得对象，EDITFORM_DOCUMENT实为一个iframe</span><span style="color: #008000"><br />
<img id="_98_155_Open_Image" onclick="this.style.display='none'; document.getElementById('_98_155_Open_Text').style.display='none'; document.getElementById('_98_155_Closed_Image').style.display='inline'; document.getElementById('_98_155_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_98_155_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_98_155_Closed_Text').style.display='none'; document.getElementById('_98_155_Open_Image').style.display='inline'; document.getElementById('_98_155_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(el.addEventListener)</span><span id="_98_155_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">...</span><span id="_98_155_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;el.addEventListener(</span><span style="color: #000000">'</span><span style="color: #000000">click</span><span style="color: #000000">'</span><span style="color: #000000">,&nbsp;KindDisableMenu,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
<img id="_181_228_Open_Image" onclick="this.style.display='none'; document.getElementById('_181_228_Open_Text').style.display='none'; document.getElementById('_181_228_Closed_Image').style.display='inline'; document.getElementById('_181_228_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_181_228_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_181_228_Closed_Text').style.display='none'; document.getElementById('_181_228_Open_Image').style.display='inline'; document.getElementById('_181_228_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" />}</span></span><span style="color: #000000">&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;(el.attachEvent)</span><span id="_181_228_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">...</span><span id="_181_228_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;el.attachEvent(</span><span style="color: #000000">'</span><span style="color: #000000">onclick</span><span style="color: #000000">'</span><span style="color: #000000">,&nbsp;KindDisableMenu);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">2</span><span style="color: #000000">。&nbsp;<br />
<img id="_263_312_Open_Image" onclick="this.style.display='none'; document.getElementById('_263_312_Open_Text').style.display='none'; document.getElementById('_263_312_Closed_Image').style.display='inline'; document.getElementById('_263_312_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_263_312_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_263_312_Closed_Text').style.display='none'; document.getElementById('_263_312_Open_Image').style.display='inline'; document.getElementById('_263_312_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(window.addEventListener)&nbsp;</span><span id="_263_312_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">...</span><span id="_263_312_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;window.addEventListener(</span><span style="color: #000000">'</span><span style="color: #000000">load</span><span style="color: #000000">'</span><span style="color: #000000">,&nbsp;_uCO,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
<img id="_343_382_Open_Image" onclick="this.style.display='none'; document.getElementById('_343_382_Open_Text').style.display='none'; document.getElementById('_343_382_Closed_Image').style.display='inline'; document.getElementById('_343_382_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_343_382_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_343_382_Closed_Text').style.display='none'; document.getElementById('_343_382_Open_Image').style.display='inline'; document.getElementById('_343_382_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" />}</span></span><span style="color: #000000">&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;(window.attachEvent)&nbsp;</span><span id="_343_382_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">...</span><span id="_343_382_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;window.attachEvent(</span><span style="color: #000000">'</span><span style="color: #000000">onload</span><span style="color: #000000">'</span><span style="color: #000000">,&nbsp;_uCO);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
</div>
</div>
</div>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/247587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-12-21 09:48 <a href="http://www.blogjava.net/jasonwbd/articles/247587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript(js)静态页面传值之Cookie篇</title><link>http://www.blogjava.net/jasonwbd/articles/245662.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Thu, 11 Dec 2008 04:32:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/245662.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/245662.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/245662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/245662.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/245662.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt; color: #808000">&nbsp; </p>
<p>JavaScript(js)静态页面传值之Cookie篇加入时间：2007-12-25 9:17:28&nbsp; 来源：&nbsp; 编辑：　　利用Cookie进行静态页面值传递：Cookie是浏览器存储少量命名数据.它与某个特定的网页或网站关联在一起。<br />
　　Cookie用来给浏览器提供内存,以便脚本和服务器程序可以在一个页面中使用另一个页面的输入数据。<br />
　　Post.htm<br />
以下是引用片段：</p>
<p>&nbsp;</p>
<p style="font-size: 12pt">function setCookie(name,value)<br />
{<br />
/*<br />
*--------------- setCookie(name,value) -----------------<br />
* setCookie(name,value)<br />
* 功能:设置得变量name的值<br />
* 参数:name,字符串;value,字符串.<br />
* 实例:setCookie('username','baobao')<br />
*--------------- setCookie(name,value) -----------------<br />
*/<br />
　　var Days = 30; //此 cookie 将被保存 30 天<br />
　　var exp　= new Date();<br />
　　exp.setTime(exp.getTime() + Days*24*60*60*1000);<br />
　　document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();<br />
　　location.href = "Read.htm"; //接收页面.<br />
}</p>
<p>　　Read.htm<br />
以下是引用片段：</p>
<p>function getCookie(name)<br />
{<br />
/*<br />
*--------------- getCookie(name) -----------------<br />
* getCookie(name)<br />
* 功能:取得变量name的值<br />
* 参数:name,字符串.<br />
* 实例:alert(getCookie("baobao"));<br />
*--------------- getCookie(name) -----------------<br />
*/<br />
　　var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));<br />
　　if(arr !=null) return unescape(arr[2]); return null;<br />
}<br />
alert(getCookie("baobao"));</p>
<p>　　优点:可以在同源内的任意网页内访问.生命期可以设置.<br />
　　缺点:值长度有限制.<br />
本文转自福州IT信息网(http://www.fzic.net)<br />
本文转自可可在线(http://www.rcinn.cn),详细出处参考：http://www.xqke.cn/news.asp?id=475</p>
<p>&nbsp;</p>
</span>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/245662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-12-11 12:32 <a href="http://www.blogjava.net/jasonwbd/articles/245662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js页面接传值问题</title><link>http://www.blogjava.net/jasonwbd/articles/245661.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Thu, 11 Dec 2008 04:24:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/245661.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/245661.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/245661.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/245661.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/245661.html</trackback:ping><description><![CDATA[<span style="color: #808000">JSP数据和JavaScirpt数据交互使用问题的一种解决方法 <br />
对于WEB程序来说，前端（JavaScript）和后端（JSP/Servlet）是没法共用数据的，只能是后端程序（JSP）把数据输出，生成页面到前端，这时候生成的页面中的JavaScript代码才有可能得到所谓jsp的数据。同样的，只有把JavaScript里的数据提交给后端JSP代码，JSP程序中才能得到JavaScript的数据。 <br />
<br />
那如何实现在页面的JavaScript中使用jsp中的数据或是在jsp中使用页面的JavaScript数据呢？ <br />
<br />
一、页面中的JavaScript的数据如何提交给后台的jsp程序 <br />
① 可以将JavaScript的数据以xxx.JSP?var1=aaa&amp;var2=bbb的形式作为URL的参数传给JSP程序，此时在jsp中用 <br />
&lt;%String strVar1=request.getParameter("var1");%&gt;就可以获取到JavaScript脚本传递过来的数据； <br />
② 使用JavaScript通过在表单里加入隐藏域信息，然后用表单提交的方式把数据传递给JSP程序。 <br />
<br />
参考下面的脚本： <br />
&lt;script language="JavaScript"&gt; <br />
&lt;!-- <br />
/*************************************************************** <br />
* JavaScript脚本，放置在页面中的任何位置都可以 <br />
* insertclick()函数获取JSP传递到页面中的变量varMC， <br />
* 然后就可以在JavaScript中修改这个变量的值，再通过 <br />
* post的方式提交给JSP程序来使用。 <br />
***************************************************************/ <br />
function insertclick(){ <br />
var1 = document.all.mc.value; //获取页面form中的变量值 <br />
var1 = var1 + "名称"; <br />
document.insertForm.submit(); <br />
} <br />
//--&gt; <br />
&lt;/script&gt; <br />
<br />
&lt;!-- html页面form表单，放置在html页面中的位置不限 --&gt; <br />
&lt;form name="insertForm" method="post" action="yourJSP"&gt; <br />
&lt;!-- 下面这一句是获取JSP程序中传递过来的变量值 --&gt; <br />
&lt;input type="hidden" name="mc" value="&lt;%=varMC%&gt;"&gt; <br />
&lt;input type="button" value="提交" onclick="insertclick()"&gt; <br />
&lt;/form&gt; <br />
<br />
二、页面中的JavaScript的数据如何使用后台的JSP程序的数据 <br />
这个比较简单，直接在JavaScript脚本中用&lt;%＝strVar1%&gt;就可以把jsp程序中的数据传递给JavaScript脚本使用了。 <br />
<br />
参考下面的脚本： <br />
<br />
&lt;!-- html页面form表单，放置在html页面中的位置不限 --&gt; <br />
&lt;form name="insertForm" method="post" action="yourJSP"&gt; <br />
&lt;input type="hidden" name="mc" value=""&gt; <br />
&lt;/form&gt; <br />
<br />
&lt;script language="JavaScript"&gt; <br />
&lt;!-- <br />
/*************************************************************** <br />
* JavaScript脚本，放置在页面中form以后的任何位置都可以 <br />
* 使用JavaScirpt获取JSP传递到页面中的变量varMC， <br />
* 然后就可以在JavaScript中使用这个变量的值，通过 <br />
* JavaScript脚本赋值给form中的隐藏域。 <br />
***************************************************************/ <br />
var1 = "&lt;%=varMC%&gt;"; //获取JSP中的变量值 <br />
document.all.mc.value = var1; <br />
//--&gt; <br />
&lt;/script&gt;</ca><br />
参考资料：开发者在线<a href="http://www.builder.com.cn/" target="_blank">http://www.builder.com.cn/</a></span>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/245661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-12-11 12:24 <a href="http://www.blogjava.net/jasonwbd/articles/245661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网页表单常用的check.js代码</title><link>http://www.blogjava.net/jasonwbd/articles/238877.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Wed, 05 Nov 2008 12:26:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/238877.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/238877.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/238877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/238877.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/238877.html</trackback:ping><description><![CDATA[<div class="lh3" id="veryContent" style="overflow: hidden; width: 100%">
<table class="contentTable" id="blogContentTable" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" valign="top">
            <div id="blogContainer" style="font-size: 12px"><span style="color: #808000"><span style="font-size: 18pt"><img id="paperPicArea0" style="display: none" src="http://cnc.imgcache.qq.com/ac/b.gif"  alt="" /> </span></span>
            <div id="paperTitleArea" style="display: none" align="center"><span id="paperTitle" style="display: block; font-weight: bolder; word-break: break-all"><span style="color: #808000"><span style="font-size: 18pt">网页表单常用的check.js代码</span></span></span></div>
            <span style="color: #808000"><span style="font-size: 18pt"><img id="paperPicArea" style="display: none" src="http://cnc.imgcache.qq.com/ac/b.gif"  alt="" /></span></span><span style="color: #808000"><span style="font-size: 18pt"><font style="line-height: 1.3em" color="#ff0000">function LTrim(str){<br />
            var i;<br />
            for(i=0; i&lt;str.length; i++){<br />
            &nbsp;&nbsp;if(str.charAt(i)!=" ") break;<br />
            &nbsp;&nbsp;str=str.substring(i,str.length) ;<br />
            &nbsp;&nbsp;return str;<br />
            }<br />
            }</font><wbr style="line-height: 1.3em"><br />
            </span></span><span style="color: #808000"><span style="font-size: 18pt"><font style="line-height: 1.3em" color="#ff0000">function RTrim(str){<br />
            var i ;<br />
            for(i=str.length-1; i&gt;=0; i++){<br />
            &nbsp;&nbsp;if(charAt(i)!=" ") break;<br />
            }<br />
            str = str.substring(0, i+1) ;<br />
            }</font><wbr style="line-height: 1.3em"><br />
            </span></span><span style="color: #808000"><span style="font-size: 18pt"><font style="line-height: 1.3em" color="#ff0000">function Trim(str){<br />
            return LTrim(RTrim(str)) ;<br />
            }</font><wbr style="line-height: 1.3em"><br />
            </span></span><span style="color: #808000"><span style="font-size: 18pt">function check(){<br />
            if(Trim(document.form1.title.value == "")){<br />
            &nbsp;&nbsp;alert("Sorry ! title is Empty !") ;<br />
            &nbsp;&nbsp;document.form1.title.focus() ;<br />
            &nbsp;&nbsp;return false ;<br />
            }<br />
            if(Trim(document.form1.cont.value == "")){<br />
            &nbsp;&nbsp;alert("Sorry ! cont is Empty !") ;<br />
            &nbsp;&nbsp;document.form1.cont.focus() ;<br />
            &nbsp;&nbsp;return false;<br />
            }<br />
            return true ;<br />
            </span></span></div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/238877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-11-05 20:26 <a href="http://www.blogjava.net/jasonwbd/articles/238877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS，注册时，需要过多少秒后才能点确定的JS控制按钮可用与不可用！</title><link>http://www.blogjava.net/jasonwbd/articles/237585.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Thu, 30 Oct 2008 04:36:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/237585.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/237585.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/237585.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/237585.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/237585.html</trackback:ping><description><![CDATA[<p><span style="color: #808000">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</span></p>
<p><span style="color: #808000">&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;无标题页&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var leftTime = 10;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.onload = initAll;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function initAll()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; show();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function show()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("btntest").value=leftTime;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; leftTime--;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(leftTime&gt;0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setTimeout("show()",1000);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("btntest").value="OK !";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.form1.btntest.disabled=false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;form action="" name="form1"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input size="30" type="button" name="btntest" id="btntest" value="" disabled="true" /&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</span></p>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/237585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-10-30 12:36 <a href="http://www.blogjava.net/jasonwbd/articles/237585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP树形菜单的实现[转]</title><link>http://www.blogjava.net/jasonwbd/articles/236258.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Thu, 23 Oct 2008 13:35:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/236258.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/236258.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/236258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/236258.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/236258.html</trackback:ping><description><![CDATA[<p><span style="color: #808000">1。原理简介<br />
&nbsp;dtree是一个免费的javascript脚本，只需定义有限的几个参数，就可以做出漂亮的树型菜单。下载目录：</span><a href="http://www.destroydrop.com/javascripts/tree/"><span style="color: #808000">http://www.destroydrop.com/javascripts/tree/</span></a><br />
<span style="color: #808000">&nbsp;以下是dtree的用法示例：<br />
&nbsp;1）初始化菜单<br />
&nbsp;&lt;script type="text/javascript"&gt;<br />
&nbsp;&nbsp;&lt;!--<br />
&nbsp;&nbsp;var Tree = new Array;<br />
&nbsp;&nbsp;// nodeId | parentNodeId | nodeName | nodeUrl<br />
&nbsp;&nbsp;Tree[0]&nbsp; = "1|0|Page 1|#";<br />
&nbsp;&nbsp;Tree[1]&nbsp; = "2|1|Page 1.1|#";<br />
&nbsp;&nbsp;Tree[2]&nbsp; = "3|1|Page 1.2|#";<br />
&nbsp;&nbsp;Tree[3]&nbsp; = "4|3|Page 1.2.1|#";<br />
&nbsp;&nbsp;Tree[4]&nbsp; = "5|1|Page 1.3|#";<br />
&nbsp;&nbsp;Tree[5]&nbsp; = "6|2|Page 1.1.1|#";<br />
&nbsp;&nbsp;Tree[6]&nbsp; = "7|6|Page 1.1.1.1|#";<br />
&nbsp;&nbsp;Tree[7]&nbsp; = "8|6|Page 1.1.1.2|#";<br />
&nbsp;&nbsp;Tree[8]&nbsp; = "9|1|Page 1.4|#";<br />
&nbsp;&nbsp;Tree[9]&nbsp; = "10|9|Page 1.4.1|#";<br />
&nbsp;&nbsp;Tree[10] = "11|0|Page 2|#";<br />
&nbsp;&nbsp;//--&gt;<br />
&nbsp;&lt;/script&gt;<br />
&nbsp;2）调用函数<br />
&nbsp;&lt;div class="tree"&gt;<br />
&nbsp;&nbsp;&lt;script type="text/javascript"&gt;<br />
&nbsp;&nbsp;&lt;!--<br />
&nbsp;&nbsp;&nbsp;createTree(Tree,1,7);&nbsp; // starts the tree at the top and open it at node nr. 7<br />
&nbsp;&nbsp;//--&gt;<br />
&nbsp;&nbsp;&lt;/script&gt;<br />
&nbsp;&lt;/div&gt;</span></p>
<p><span style="color: #808000">&nbsp;显然，如果用动态的脚本来初始化菜单数组（asp,jsp均可），那就可以很方便的实现动态的树型菜单了。</span></p>
<p><span style="color: #808000">2。jsp动态实现<br />
&nbsp;&nbsp; 分以下步骤实现动态的树型菜单：<br />
&nbsp;&nbsp; 1）在数据库建tree_info表，有nodeId，parentNodeId，nodeName，nodeUrl四个字段，来存储节点信息。<br />
&nbsp;&nbsp; 2）编写java类，用于从数据库找出节点信息，并且生成javascript脚本。<br />
&nbsp;&nbsp; 3）编写tag类。用于封装逻辑，简化jsp的开发。<br />
&nbsp;&nbsp; 4）建一个web程序进行测试。</span></p>
<p><span style="color: #808000">3。详细过程<br />
&nbsp;&nbsp; 1）在数据库建表，脚本如下：<br />
&nbsp;&nbsp; CREATE TABLE `test`.`tree_info` (<br />
&nbsp;&nbsp; `node_id` INTEGER UNSIGNED NOT NULL DEFAULT -1,<br />
&nbsp;&nbsp; `parent_id` INTEGER UNSIGNED NOT NULL DEFAULT -1,<br />
&nbsp;&nbsp; `node_name` VARCHAR(45) NOT NULL,<br />
&nbsp;&nbsp; `ref_url` VARCHAR(45) NOT NULL,<br />
&nbsp;&nbsp; PRIMARY KEY(`node_id`)<br />
&nbsp;)<br />
&nbsp;我使用mysql数据库，如果脚本细节有出入，请自行修改<br />
&nbsp;&nbsp;&nbsp; 按照上面的dTree示例插入数据<br />
&nbsp;&nbsp; 2）编写TreeInfo.java，这个类用于封装节点信息<br />
&nbsp;&nbsp;&nbsp;&nbsp; package com.diegoyun.web.tree;<br />
&nbsp;&nbsp;/**<br />
&nbsp;&nbsp; * @author Diegoyun<br />
&nbsp;&nbsp; * @version 1.0<br />
&nbsp;&nbsp; */<br />
&nbsp;&nbsp;public class TreeInfo {<br />
&nbsp;&nbsp;&nbsp;private int nodeId = -1;//node id<br />
&nbsp;&nbsp;&nbsp;private int parentId = -1;//parentId<br />
&nbsp;&nbsp;&nbsp;private String nodeName = null;//node name<br />
&nbsp;&nbsp;&nbsp;private String url = null;//url references</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;public int getNodeId() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;return nodeId;<br />
&nbsp;&nbsp;&nbsp;}</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;public void setNodeId(int nodeId) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;this.nodeId = nodeId;<br />
&nbsp;&nbsp;&nbsp;}</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;public int getParentId() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;return parentId;<br />
&nbsp;&nbsp;&nbsp;}</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;public void setParentId(int parentId) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;this.parentId = parentId;<br />
&nbsp;&nbsp;&nbsp;}</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;public String getNodeName() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;return nodeName;<br />
&nbsp;&nbsp;&nbsp;}</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;public void setNodeName(String nodeName) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;this.nodeName = nodeName;<br />
&nbsp;&nbsp;&nbsp;}</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;public String getUrl() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;return url;<br />
&nbsp;&nbsp;&nbsp;}</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;public void setUrl(String url) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;this.url = url;<br />
&nbsp;&nbsp;&nbsp;}</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;}<br />
&nbsp;&nbsp; 编写TreeUtil.java，用于从数据库得到节点信息，封装到TreeInfo对象，并生成javascript脚本<br />
&nbsp;&nbsp; TreeUtil.java<br />
&nbsp;&nbsp; package com.diegoyun.web.tree;<br />
&nbsp;&nbsp;import java.util.Collection;<br />
&nbsp;&nbsp;import java.util.ArrayList;<br />
&nbsp;&nbsp;import java.util.Iterator;<br />
&nbsp;&nbsp;import java.util.List;<br />
&nbsp;&nbsp;import java.sql.PreparedStatement;<br />
&nbsp;&nbsp;import java.sql.ResultSet;<br />
&nbsp;&nbsp;import java.sql.Connection;<br />
&nbsp;&nbsp;import java.sql.DriverManager;</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;/**<br />
&nbsp;&nbsp; * @author Diegoyun<br />
&nbsp;&nbsp; * @version 1.0<br />
&nbsp;&nbsp; */<br />
&nbsp;&nbsp;public class TreeUtil {<br />
&nbsp;&nbsp;&nbsp;public static List retrieveNodeInfos(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;List coll = new ArrayList();</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;&nbsp;String driverName = "com.mysql.jdbc.Driver";<br />
&nbsp;&nbsp;&nbsp;&nbsp;String host = "localhost";<br />
&nbsp;&nbsp;&nbsp;&nbsp;String port = ":3306";<br />
&nbsp;&nbsp;&nbsp;&nbsp;String serverID = "test";<br />
&nbsp;&nbsp;&nbsp;&nbsp;String userName = "root";<br />
&nbsp;&nbsp;&nbsp;&nbsp;String userPwd = "root";<br />
&nbsp;&nbsp;&nbsp;&nbsp;String url = "jdbc:mysql://" + host + port + "/" + serverID ;</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;&nbsp;Connection conn = null ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;PreparedStatement ps = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ResultSet rs = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(driverName).newInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn = DriverManager.getConnection(url , userName , userPwd);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String sql = "select * from tree_info";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ps = conn.prepareStatement(sql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = ps.executeQuery();</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TreeInfo info = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(rs!=null &amp;&amp; rs.next()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info = new TreeInfo();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info.setNodeId(rs.getInt(1));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info.setParentId(rs.getInt(2));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info.setNodeName(rs.getString(3));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info.setUrl(rs.getString(4));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;coll.add(info);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(rs!=null){<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs=null;<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ps!=null){<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ps.close();<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ps=null;<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;}catch(Exception e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
<p><br />
<span style="color: #808000">&nbsp;&nbsp;&nbsp;&nbsp;return coll;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;public static String createTreeInfo(List alist){<br />
&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer contents = new StringBuffer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;contents.append("&lt;!--\n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;contents.append("var Tree = new Array;");//create a array in javascript<br />
&nbsp;&nbsp;&nbsp;&nbsp;TreeInfo info =null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;for(int max = alist.size(),i=0;i&lt;max;i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info = (TreeInfo)alist.get(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//define elements of array<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents.append("Tree[");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents.append(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents.append("]=\"");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents.append(info.getNodeId());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents.append("|");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents.append(info.getParentId());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents.append("|");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents.append(info.getNodeName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents.append("|");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents.append(info.getUrl());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents.append("\";");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
<p><span style="color: #808000">contents.append("docment.writer(Tree);");<br />
&nbsp;&nbsp;&nbsp;&nbsp;contents.append("//--&gt;");</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&nbsp;&nbsp;return contents.toString();<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;public static void main(String[]args){<br />
&nbsp;&nbsp;&nbsp;&nbsp;List alist = TreeUtil.retrieveNodeInfos();<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TreeInfo info = null;<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(Iterator i = c.iterator();i.hasNext();){<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info = (TreeInfo)i.next();<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("*****" + info.getNodeName());<br />
&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(TreeUtil.createTreeInfo(alist));<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}</span></p>
<p><span style="color: #808000">&nbsp;3)编写标签类<br />
&nbsp;InitTreeTag.java<br />
&nbsp;package com.diegoyun.web.taglibs;<br />
&nbsp;import com.diegoyun.web.tree.TreeUtil;<br />
&nbsp;import javax.servlet.jsp.tagext.TagSupport;<br />
&nbsp;import javax.servlet.jsp.JspException;<br />
&nbsp;import java.io.IOException;</span></p>
<p><span style="color: #808000">&nbsp;/**<br />
&nbsp; * @author Diegoyun<br />
&nbsp; * @version 1.0<br />
&nbsp; */<br />
&nbsp;public class InitTreeTag extends TagSupport{</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;public int doEndTag() throws JspException {<br />
&nbsp;&nbsp;&nbsp;StringBuffer tree = new StringBuffer();<br />
&nbsp;&nbsp;&nbsp;tree.append("&lt;script type=\"text/javascript\"&gt;\n");<br />
&nbsp;&nbsp;&nbsp;tree.append(TreeUtil.createTreeInfo(TreeUtil.retrieveNodeInfos()));<br />
&nbsp;&nbsp;&nbsp;tree.append("&lt;/script&gt;\n");<br />
&nbsp;&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;&nbsp;pageContext.getOut().println(tree.toString());<br />
&nbsp;&nbsp;&nbsp;}catch(IOException ioe){<br />
&nbsp;&nbsp;&nbsp;&nbsp;ioe.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;return super.doEndTag();<br />
&nbsp;&nbsp;}<br />
&nbsp;}</span></p>
<p><span style="color: #808000">&nbsp;ShowTreeTag.java : </span></p>
<p><span style="color: #808000">&nbsp;package com.diegoyun.web.taglibs;</span></p>
<p><span style="color: #808000">&nbsp;import javax.servlet.jsp.tagext.TagSupport;<br />
&nbsp;import javax.servlet.jsp.JspException;<br />
&nbsp;import java.io.IOException;</span></p>
<p><span style="color: #808000">&nbsp;/**<br />
&nbsp; * @author Diegoyun<br />
&nbsp; * @version 1.0<br />
&nbsp; */<br />
&nbsp;public class ShowTreeTag extends TagSupport{<br />
&nbsp;&nbsp;public int doEndTag() throws JspException {<br />
&nbsp;&nbsp;&nbsp;StringBuffer buffer = showTree();<br />
&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;pageContext.getOut().println(buffer.toString());<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;catch (IOException ioe) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;ioe.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;return super.doEndTag();<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;private StringBuffer showTree(){<br />
&nbsp;&nbsp;&nbsp;StringBuffer sb = new StringBuffer();<br />
&nbsp;&nbsp;&nbsp;sb.append("&lt;div class=\"tree\"&gt;\n");<br />
&nbsp;&nbsp;&nbsp;sb.append("&lt;script type=\"text/javascript\"&gt;\n");<br />
&nbsp;&nbsp;&nbsp;sb.append("&lt;!--\n");<br />
&nbsp;&nbsp;&nbsp;sb.append("createTree(Tree);\n");<br />
&nbsp;&nbsp;&nbsp;sb.append("//--&gt;\n");<br />
&nbsp;&nbsp;&nbsp;sb.append("&lt;/script&gt;\n");<br />
&nbsp;&nbsp;&nbsp;sb.append("&lt;/div&gt;\n");<br />
&nbsp;&nbsp;&nbsp;return sb;<br />
&nbsp;&nbsp;}&nbsp;&nbsp; <br />
&nbsp;}</span></p>
<p><span style="color: #808000">&nbsp;标签的tld如下：<br />
&nbsp;&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;<br />
&nbsp;&lt;!DOCTYPE taglib<br />
&nbsp;&nbsp; PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"<br />
&nbsp;&nbsp; "</span><a href="http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"><span style="color: #808000">http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd</span></a><span style="color: #808000">"&gt;<br />
&nbsp;&lt;taglib&gt;<br />
&nbsp; &lt;tlib-version&gt;1.0&lt;/tlib-version&gt;<br />
&nbsp; &lt;jsp-version&gt;1.2&lt;/jsp-version&gt;<br />
&nbsp; &lt;short-name&gt;tree&lt;/short-name&gt;<br />
&nbsp; &lt;!--initTreeTag--&gt;<br />
&nbsp; &lt;tag&gt;<br />
&nbsp;&nbsp; &lt;name&gt;init&lt;/name&gt;<br />
&nbsp;&nbsp; &lt;tag-class&gt;com.diegoyun.web.taglibs.InitTreeTag&lt;/tag-class&gt;<br />
&nbsp;&nbsp; &lt;body-content&gt;empty&lt;/body-content&gt;<br />
&nbsp; &lt;/tag&gt;<br />
&nbsp; &lt;!--ShowTreeTag--&gt;<br />
&nbsp; &lt;tag&gt;<br />
&nbsp;&nbsp; &lt;name&gt;show&lt;/name&gt;<br />
&nbsp;&nbsp; &lt;tag-class&gt;com.diegoyun.web.taglibs.ShowTreeTag&lt;/tag-class&gt;<br />
&nbsp;&nbsp; &lt;body-content&gt;empty&lt;/body-content&gt;<br />
&nbsp; &lt;/tag&gt;<br />
&nbsp;&lt;/taglib&gt;</span></p>
<p><span style="color: #808000">&nbsp;4）建立web过程，编写jsp进行测试。</span></p>
<p><span style="color: #808000">&nbsp;index.jsp如下：<br />
&nbsp;&lt;%@ page language="java"%&gt;<br />
&nbsp;&lt;%@ taglib uri="/WEB-INF/tlds/tree.tld" prefix="tree"%&gt;</span></p>
<p><br />
<span style="color: #808000">&nbsp;&lt;html&gt;<br />
&nbsp;&lt;head&gt;<br />
&nbsp;&nbsp;&lt;title&gt;Tree example&lt;/title&gt;<br />
&nbsp;&nbsp;&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt;<br />
&nbsp;&nbsp;&lt;link rel="StyleSheet" href="tree.css" type="text/css"&gt;<br />
&nbsp;&nbsp;&lt;script type="text/javascript" src="tree.js"&gt;&lt;/script&gt;<br />
&nbsp;&nbsp;&lt;tree:init/&gt;<br />
&nbsp;&lt;/head&gt;</span></p>
<p><span style="color: #808000">&nbsp;&lt;body&gt;</span></p>
<p><br />
<span style="color: #808000">&nbsp;&lt;b&gt;Tree example :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;<br />
&nbsp;&lt;tree:show/&gt;<br />
&nbsp;&lt;br /&gt;&lt;br /&gt;</span></p>
<p><span style="color: #808000">&nbsp;&nbsp;&lt;/body&gt;<br />
&nbsp;&lt;/html&gt;</span></p>
<p><span style="color: #808000">&nbsp;测试，enjoy yourself！</span></p>
<p><span style="color: #808000">&nbsp;</span></p>
<p><span style="color: #808000">4。待解决问题<br />
&nbsp;dTree有点小bug，如果把css，img，js的路径改变，树就有可能不会正确显示。&nbsp;</span></p>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/236258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-10-23 21:35 <a href="http://www.blogjava.net/jasonwbd/articles/236258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用ajax 仿百度谷歌搜索的下拉提示</title><link>http://www.blogjava.net/jasonwbd/articles/231159.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Thu, 25 Sep 2008 09:44:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/231159.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/231159.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/231159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/231159.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/231159.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在用到实例中时 : 可把关键字定时从数据库中取出来生成到一个XML文件中,&nbsp; 这样能提高效率, 也便于AJAX取得数据.这里只是提供一个思路和一个小小的实现 .ajax09.html&lt;!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN...&nbsp;&nbsp;<a href='http://www.blogjava.net/jasonwbd/articles/231159.html'>阅读全文</a><img src ="http://www.blogjava.net/jasonwbd/aggbug/231159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-09-25 17:44 <a href="http://www.blogjava.net/jasonwbd/articles/231159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用javascript 仿百度谷歌搜索的下拉提示</title><link>http://www.blogjava.net/jasonwbd/articles/231158.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Thu, 25 Sep 2008 09:40:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/231158.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/231158.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/231158.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/231158.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/231158.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&lt;!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/html4/loose.dtd"&gt;&lt;html&gt;&lt;head&gt;&lt;meta&nbsp;http-...&nbsp;&nbsp;<a href='http://www.blogjava.net/jasonwbd/articles/231158.html'>阅读全文</a><img src ="http://www.blogjava.net/jasonwbd/aggbug/231158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-09-25 17:40 <a href="http://www.blogjava.net/jasonwbd/articles/231158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何获取事件触发源（兼容IE和FireFox和gooogle）~(小例子)</title><link>http://www.blogjava.net/jasonwbd/articles/230888.html</link><dc:creator>鱼跃于渊</dc:creator><author>鱼跃于渊</author><pubDate>Wed, 24 Sep 2008 07:12:00 GMT</pubDate><guid>http://www.blogjava.net/jasonwbd/articles/230888.html</guid><wfw:comment>http://www.blogjava.net/jasonwbd/comments/230888.html</wfw:comment><comments>http://www.blogjava.net/jasonwbd/articles/230888.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonwbd/comments/commentRss/230888.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonwbd/services/trackbacks/230888.html</trackback:ping><description><![CDATA[<br />
<p><span style="color: #808000">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />
&lt;title&gt;Insert title here&lt;/title&gt;</span></p>
<p><span style="color: #808000">&lt;script type="text/javascript"&gt;<br />
&nbsp;window.onload=initAll ;<br />
&nbsp;function initAll(){<br />
&nbsp;&nbsp;document.getElementById("test01").onclick=test ;<br />
&nbsp;}<br />
&nbsp;function test(evt){<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;var src = evt ? evt.target : window.event.srcElement ;<br />
&nbsp;&nbsp;alert(src) ;<br />
&nbsp;&nbsp;return false ;<br />
&nbsp;}<br />
&lt;/script&gt;</span></p>
<p><span style="color: #808000">&lt;/head&gt;<br />
&lt;body&gt;<br />
&nbsp;&lt;center&gt;<br />
&nbsp;&nbsp;&lt;a href="http://www.baidu.com" id="test01"&gt;test01&lt;/a&gt;<br />
&nbsp;&lt;/center&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</span></p>
<img src ="http://www.blogjava.net/jasonwbd/aggbug/230888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonwbd/" target="_blank">鱼跃于渊</a> 2008-09-24 15:12 <a href="http://www.blogjava.net/jasonwbd/articles/230888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>