<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_深夜的心得，与大家分享</title><subtitle type="text">我的学习工作心得；平时看到好的资料收集；</subtitle><id>http://feed.cnblogs.com/blog/u/3700/rss</id><updated>2011-07-07T09:17:52Z</updated><author><name>深夜</name><uri>http://www.cnblogs.com/midnight/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/midnight/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/3700/rss"/><entry><id>http://www.cnblogs.com/midnight/archive/2010/11/17/1879863.html</id><title type="text">高亮显示web页表格行</title><summary type="text">高亮显示web页表格行[关键词]：javascript . css . Web标准 . 浏览器兼容 . DOM . 冒泡事件 . 高亮表格行[摘要]：本文从简单的css高亮显示表格的某一行说开去，探讨了在不同浏览器下对于高亮功能的兼容性。阐述针对表格本身绑定javascript事件实现这一功能的方法。本篇作为开发学习笔记之一。[文] 在web开发中经常遇到需要加亮鼠标指向的表格行的情况。首先说说一...</summary><published>2010-11-17T06:59:00Z</published><updated>2010-11-17T06:59:00Z</updated><author><name>深夜</name><uri>http://www.cnblogs.com/midnight/</uri></author><link rel="alternate" href="http://www.cnblogs.com/midnight/archive/2010/11/17/1879863.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/midnight/archive/2010/11/17/1879863.html"/><content type="html">&lt;div id="header"&gt;&lt;h1 class="blogName"&gt;高亮显示web页表格行&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;div id="content"&gt;&lt;div id="posts"&gt;&lt;div class="clear"&gt;&lt;/div&gt;&lt;div class="postBody"&gt;&lt;p&gt;[关键词]：javascript . css . Web标准 . 浏览器兼容 . DOM . 冒泡事件 . 高亮表格行&lt;/p&gt;&lt;p&gt;[摘要]：本文从简单的css高亮显示表格的某一行说开去，探讨了在不同浏览器下对于高亮功能的兼容性。阐述针对表格本身绑定javascript事件实现这一功能的方法。&lt;/p&gt;&lt;p&gt;本篇作为开发学习笔记之一。&lt;/p&gt;&lt;p&gt;[文]&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在web开发中经常遇到需要加亮鼠标指向的表格行的情况。首先说说一般的情况。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#183;简单尝试&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CSS2中允许我们对HTML元素使用hover伪类，这极大的方便了对于表格的样式的控制。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们从一个小例子开始：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XHTML（只列出了表格部分，请自行补完页面，本例在Transational的DTD下通过）：&lt;br /&gt;&lt;font color="#333399" size="2" face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table class="datatable" cellspacing="0"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;thead&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Item&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Value&amp;lt;/th&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/thead&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tbody&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="oddRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item1&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value1&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="evenRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item2&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value2&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="oddRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item3&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value3&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="evenRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item4&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value4&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="oddRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item5&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value5&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="evenRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item6&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value6&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tbody&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 然后用CSS定义了表格的样式：&lt;/p&gt;&lt;p&gt;&lt;font color="#333399" size="2" face="Courier New"&gt;.datatable{&lt;br /&gt;margin:15px auto;&lt;br /&gt;width:500px; /*这两行可以根据需要修改，仅为示例*/&lt;br /&gt;}&lt;br /&gt;.datatable,.datatable tr,.datatable td,.datatable th,.datatable .tableheader td{&lt;br /&gt;border:1px #0073ac solid;&lt;br /&gt;border-collapse:collapse;&lt;br /&gt;padding:3px;&lt;br /&gt;}&lt;br /&gt;.datatable .tableheader td,.datatable th{&lt;br /&gt;font-weight:bold;&lt;br /&gt;background:#fff url(images/thead.png) repeat-x;&lt;br /&gt;padding:8px 5px;&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#333399"&gt;&lt;strong&gt;&lt;font face="Courier New"&gt;.datatable tr:hover{&lt;br /&gt;background-color:#cfe9f7;&lt;br /&gt;}&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 对于css的部分，不做过多解释。请注意最后加粗的部分，对tr元素应用了伪类hover的样式。这在对CSS2支持的浏览器下（IE7+,FF,Opera,Safari等）运作的十分完美。然而CSS1仅提供对于锚元素a的伪类支持，遗憾的是IE6仍然只支持CSS1的伪类。于是我们要进行修改，提供对于IE6的支持。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先增加一个样式：&lt;/p&gt;&lt;p&gt;&lt;font size="+0"&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;&lt;font color="#333399"&gt;&lt;strong&gt;.datatable .trHover&lt;/strong&gt;,.datatable tr:hover{&lt;br /&gt;background-color:#cfe9f7;&lt;br /&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 此处增加了一个trHover的类，用以修正IE6下的显示。接下来就是书写javascript了。最初的想法非常简单，你不是要鼠标指向时高亮当前行么？于是就对每一行应用javascipt呗。首先写一个javascript的函数。为了统一我把加亮和撤销加亮合并到一个函数中了，这样就可以简化函数调用，对tr的mouseover和mouseout事件绑定一个函数就行了。&lt;/p&gt;&lt;p&gt;&lt;font color="#333399" size="2" face="Courier New"&gt;function highlightTr(o){&lt;br /&gt;var regStr=/\b\s*trHover\b/g; /*正则表达式过滤trHover类*/&lt;br /&gt;if(o.className.indexOf('trHover')==-1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o.className+=" trHover";&lt;br /&gt;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o.className=o.className.replace(regStr,""); &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这里用到一个小技巧：正则表达式替换。因为你的tr元素可能有其他样式（类）&amp;#8212;&amp;#8212;比如本例的evenRow和oddRow，所以不能简单的在撤销高亮时把对象的className置空。然后就如大家想象的，给tr绑定事件吧：&lt;br /&gt;&lt;font color="#333399" size="2" face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="oddRow" onmouseover="highlightTr();" onmouseout="hightlightTr();"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item1&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value1&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 给所有的tr写上事件绑定就可以了。然而这样做也有问题：1、增加了页面的代码量。2、如果表格是由后台服务端程序输出的，有时不允许你给tr元素绑定javascript函数。怎么办？直接的想，可以用js在页面某范围里搜索该样式的表格，然后绑定tr的事件。不过我们今天换个思路，直接对table元素绑定js事件，实现对某一行的高亮！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这种想法是有根据的。这不得不说说浏览器的事件模型。由于历史原因，各种浏览器在实现javascript事件响应上有差异，然而基本思路还是一致的。js事件在W3C DOM中被描述成捕获-冒泡模型。简单的说有点像下饺子，饺子逐渐沉到锅底，接受了热传递，慢慢漂到上面。回到模型本身，javascript事件有两大类，首先从最外层的元素捕获事件，逐渐向内传递到触发事件的元素&amp;#8212;&amp;#8212;这叫事件捕获，然后再逐渐向外扩展到外层元素&amp;#8212;&amp;#8212;这叫做事件冒泡。IE的实现不支持捕获类型的事件，对冒泡型事件的实现与W3C DOM标准也略有区别，但总体思路是一样的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 说了半天，我们这次就是想用事件的冒泡处理机制来达到高亮表格行的目的。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 再次重申，冒泡事件是从触发javascript事件的最内层元素扩散到外层的，就像石子激起的涟漪一样。鼠标滑过某一行，首先最内层元素比如td里的文本或者其他元素触发mouseover，接下来传到td--&amp;gt;tr--&amp;gt;tbody--&amp;gt;table依次响应mouseover事件，鼠标移出时，也有这种依次冒泡的过程。这就是我们这样处理事件响应程序的根据。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先，我们需要修改XHMTL中的事件绑定代码。去掉tr元素中mouseover和mouseout的事件处理，随后给table加上事件处理。最后表格变成这样：&lt;/p&gt;&lt;p&gt;&lt;font color="#333399" size="2" face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table class="datatable" cellspacing="0" onmouseover="highlightTr();" onmouseout="highlightTr();"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;thead&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Item&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Value&amp;lt;/th&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/thead&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tbody&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="oddRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item1&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value1&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="evenRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item2&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value2&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="oddRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item3&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value3&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="evenRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item4&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value4&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="oddRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item5&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value5&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class="evenRow"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;项目Item6&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;值Value6&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tbody&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 和最初我们写的表格相比，只多了table元素的js事件绑定。接下来就是给我们的hightlightTr函数做个大手术了！这里先把最终的代码贴出来然后一起分析：&lt;br /&gt;&lt;font size="3" face="Courier New"&gt;&lt;font color="#333399" size="2"&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;//&amp;lt;!-[CDATA[&lt;br /&gt;//该函数修正IE6不能识别TR元素hover伪类的bug&lt;br /&gt;function highlightTr(){&lt;br /&gt;var theEvent=window.event||arguments.callee.caller.arguments[0];&lt;br /&gt;var srcElement = theEvent.srcElement;&lt;br /&gt;if (!srcElement)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; srcElement = theEvent.target;&lt;br /&gt;}&lt;br /&gt;if(!srcElement.parentNode) return false;&lt;br /&gt;var o=srcElement.parentNode;&lt;br /&gt;while(o.parentNode&amp;amp;&amp;amp;o.tagName!="TR")&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(o.tagName=="TABLE") break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else o=o.parentNode;&lt;br /&gt;}&lt;br /&gt;var regStr=/\b\s*trHover\b/g;&lt;br /&gt;if(o.className.indexOf('trHover')==-1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o.className+=" trHover";&lt;br /&gt;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o.className=o.className.replace(regStr,""); &lt;br /&gt;}&lt;br /&gt;//]]&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 修改后的hightlighTr的版本的思路是这样的：1、处理事件，获得触发javascript事件的页面元素。2、寻找它的父节点，直到找到tr。3、进行样式处理。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 值得说的就是获得触发事件元素的部分考虑了浏览器兼容性。IE的事件模型里window对象有一个event属性，而W3C DOM标准event对象必须作为唯一参数传给事件处理函数，于是它便存在于函数的一个隐藏的参数（在参数列表第0个）里。接下来就是防止异常的一些判断之类的了。最终实现还是由修改元素样式表来完成。&lt;/p&gt;&lt;p&gt;至此整个兼容不同浏览器的高亮表格行的旅行结束了（好长的定语-口-）。很好玩吧~&amp;nbsp; 文中难免疏漏差错，如果对本文有建议或意见欢迎批评指正~&amp;nbsp; ^_^&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/midnight/aggbug/1879863.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/midnight/archive/2010/11/17/1879863.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/midnight/archive/2008/05/22/1204862.html</id><title type="text">tomcat作为windows服务的参数配置，特别是PermSize的设置</title><summary type="text">当tomcat用startup.bat启动的时候的参数设置网上说的比较多，这里就不再描述。当tomcat作为windows的系统服务的时候，网上找了很多相关的文章，都没有比较全面的参数设置方法，一般就说明了一下xms和xmx的设置，都没有提供其他方面参数的说明，不够实用。经过对apache下的procrun的研究和多次试用，总算清楚了一般参数的设置方法。其实tomcat5.exe本身已经包含有pr...</summary><published>2008-05-22T06:53:00Z</published><updated>2008-05-22T06:53:00Z</updated><author><name>深夜</name><uri>http://www.cnblogs.com/midnight/</uri></author><link rel="alternate" href="http://www.cnblogs.com/midnight/archive/2008/05/22/1204862.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/midnight/archive/2008/05/22/1204862.html"/><content type="text">当tomcat用startup.bat启动的时候的参数设置网上说的比较多，这里就不再描述。当tomcat作为windows的系统服务的时候，网上找了很多相关的文章，都没有比较全面的参数设置方法，一般就说明了一下xms和xmx的设置，都没有提供其他方面参数的说明，不够实用。经过对apache下的procrun的研究和多次试用，总算清楚了一般参数的设置方法。其实tomcat5.exe本身已经包含有pr...</content></entry><entry><id>http://www.cnblogs.com/midnight/archive/2005/10/21/259404.html</id><title type="text">webwork和spring多配置文件的方法</title><summary type="text">webwork中只要在xwork.xml中包含其它配置文件即可，如：&lt;includefile="xwork-eduadmin.xml"/&gt;&lt;includefile="xwork-student.xml"/&gt;&lt;includefile="xwork-test.xml"/&gt;spring多配置文件的话，只需要在web.xml文件按照如下定义：&lt;context-pa...</summary><published>2005-10-21T09:51:00Z</published><updated>2005-10-21T09:51:00Z</updated><author><name>深夜</name><uri>http://www.cnblogs.com/midnight/</uri></author><link rel="alternate" href="http://www.cnblogs.com/midnight/archive/2005/10/21/259404.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/midnight/archive/2005/10/21/259404.html"/><content type="text">webwork中只要在xwork.xml中包含其它配置文件即可，如：&lt;includefile="xwork-eduadmin.xml"/&gt;&lt;includefile="xwork-student.xml"/&gt;&lt;includefile="xwork-test.xml"/&gt;spring多配置文件的话，只需要在web.xml文件按照如下定义：&lt;context-pa...</content></entry><entry><id>http://www.cnblogs.com/midnight/archive/2005/10/21/259369.html</id><title type="text">webwork的interceptor来实现ajax功能(buffalo)</title><summary type="text">已经很久没有来bolg了，现在有空，就把最近写的一个webwork的拦截器放上来给大家参考，如果有bug或有更好的实现办法，可以email给我。下面是interceptor的实现代码：1packageinterceptor;23importjava.io.IOException;45importorg.apache.log4j.Logger;67importcom.caucho.burlap.io...</summary><published>2005-10-21T09:31:00Z</published><updated>2005-10-21T09:31:00Z</updated><author><name>深夜</name><uri>http://www.cnblogs.com/midnight/</uri></author><link rel="alternate" href="http://www.cnblogs.com/midnight/archive/2005/10/21/259369.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/midnight/archive/2005/10/21/259369.html"/><content type="text">已经很久没有来bolg了，现在有空，就把最近写的一个webwork的拦截器放上来给大家参考，如果有bug或有更好的实现办法，可以email给我。下面是interceptor的实现代码：1packageinterceptor;23importjava.io.IOException;45importorg.apache.log4j.Logger;67importcom.caucho.burlap.io...</content></entry><entry><id>http://www.cnblogs.com/midnight/archive/2005/07/28/201955.html</id><title type="text">用C#实现BHO（Brower Helper Object）</title><summary type="text">在网上找了很长时间，没有发现很好的用C#实现BHO的中文资料。没有办法，只好去找头痛的english资料了。老外还是走在前头，这方面资料还蛮多，下面是我找的两个地址，还没好好看，先放这里。等以后把自己的心得放上来。Build a Managed BHO and Plug into the Browser：http://www.15seconds.com/issue/040331.htmAutoSi...</summary><published>2005-07-28T06:02:00Z</published><updated>2005-07-28T06:02:00Z</updated><author><name>深夜</name><uri>http://www.cnblogs.com/midnight/</uri></author><link rel="alternate" href="http://www.cnblogs.com/midnight/archive/2005/07/28/201955.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/midnight/archive/2005/07/28/201955.html"/><content type="text">在网上找了很长时间，没有发现很好的用C#实现BHO的中文资料。没有办法，只好去找头痛的english资料了。老外还是走在前头，这方面资料还蛮多，下面是我找的两个地址，还没好好看，先放这里。等以后把自己的心得放上来。Build a Managed BHO and Plug into the Browser：http://www.15seconds.com/issue/040331.htmAutoSi...</content></entry><entry><id>http://www.cnblogs.com/midnight/archive/2004/12/18/78912.html</id><title type="text">用Sitemesh控制页面布局</title><summary type="text"> 用Sitemesh控制页面布局gagaghost摘要 我们在开发Web应用特别是J2EE应用的时候，由于Web页面是由不同的人所开发，所以开发出来的界面通常是千奇百怪，通常让项目管理人员苦笑不得。随着项目的进一步的开发，要求统一的界面风格的紧迫性逐渐浮现了出来。虽说我们可以使用Struts的Ttiles，但Tiles有着它的不足之处。本文介绍了一个基于Web页面...</summary><published>2004-12-18T13:53:00Z</published><updated>2004-12-18T13:53:00Z</updated><author><name>深夜</name><uri>http://www.cnblogs.com/midnight/</uri></author><link rel="alternate" href="http://www.cnblogs.com/midnight/archive/2004/12/18/78912.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/midnight/archive/2004/12/18/78912.html"/><content type="text"> 用Sitemesh控制页面布局gagaghost摘要 我们在开发Web应用特别是J2EE应用的时候，由于Web页面是由不同的人所开发，所以开发出来的界面通常是千奇百怪，通常让项目管理人员苦笑不得。随着项目的进一步的开发，要求统一的界面风格的紧迫性逐渐浮现了出来。虽说我们可以使用Struts的Ttiles，但Tiles有着它的不足之处。本文介绍了一个基于Web页面...</content></entry><entry><id>http://www.cnblogs.com/midnight/archive/2004/12/13/76235.html</id><title type="text">关于WebWork2中的中文问题</title><summary type="text">1、视图采用JSPl     WebWork2缺省使用的是locale=en_US，encoding=ISO-8859-1l     修改webwork.properties，确保webwork.locale=zh_CN，W...</summary><published>2004-12-13T01:43:00Z</published><updated>2004-12-13T01:43:00Z</updated><author><name>深夜</name><uri>http://www.cnblogs.com/midnight/</uri></author><link rel="alternate" href="http://www.cnblogs.com/midnight/archive/2004/12/13/76235.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/midnight/archive/2004/12/13/76235.html"/><content type="text">1、视图采用JSPl     WebWork2缺省使用的是locale=en_US，encoding=ISO-8859-1l     修改webwork.properties，确保webwork.locale=zh_CN，W...</content></entry><entry><id>http://www.cnblogs.com/midnight/archive/2004/11/04/60398.html</id><title type="text">tomcat中的几点配置说明</title><summary type="text">1. 如何加大tomcat连接数在tomcat配置文件server.xml中的&lt;Connector ... /&gt;配置中，和连接数相关的参数有：minProcessors：最小空闲连接线程数，用于提高系统处理性能，默认值为10maxProcessors：最大连接线程数，即：并发处理的最大请求数，默认值为75acceptCount：允许的最大连接数，应大于等于maxProcessors，默...</summary><published>2004-11-04T07:09:00Z</published><updated>2004-11-04T07:09:00Z</updated><author><name>深夜</name><uri>http://www.cnblogs.com/midnight/</uri></author><link rel="alternate" href="http://www.cnblogs.com/midnight/archive/2004/11/04/60398.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/midnight/archive/2004/11/04/60398.html"/><content type="text">1. 如何加大tomcat连接数在tomcat配置文件server.xml中的&lt;Connector ... /&gt;配置中，和连接数相关的参数有：minProcessors：最小空闲连接线程数，用于提高系统处理性能，默认值为10maxProcessors：最大连接线程数，即：并发处理的最大请求数，默认值为75acceptCount：允许的最大连接数，应大于等于maxProcessors，默...</content></entry><entry><id>http://www.cnblogs.com/midnight/archive/2004/11/04/60222.html</id><title type="text">使用Filter实现静态HTML缓冲(一种折中方法)</title><summary type="text">缓冲是Web应用中必须考虑的一个提高性能的重要手段。对于基于JSP/Servlet技术的站点，常用的缓冲有持久层的数据库连接池缓冲，内存中的值对象缓冲，JSP页面缓冲，以及各种各样的缓冲框架等等，无不是为了提高系统的吞吐量。然而对于大型站点来说，将JSP页面转换为静态Html也许是最高效的方法，特别适合于数据不经常变化但是页面访问量特别大的站点，如新闻等，通过把JSP动态页面预先转换为静态Html...</summary><published>2004-11-04T01:09:00Z</published><updated>2004-11-04T01:09:00Z</updated><author><name>深夜</name><uri>http://www.cnblogs.com/midnight/</uri></author><link rel="alternate" href="http://www.cnblogs.com/midnight/archive/2004/11/04/60222.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/midnight/archive/2004/11/04/60222.html"/><content type="text">缓冲是Web应用中必须考虑的一个提高性能的重要手段。对于基于JSP/Servlet技术的站点，常用的缓冲有持久层的数据库连接池缓冲，内存中的值对象缓冲，JSP页面缓冲，以及各种各样的缓冲框架等等，无不是为了提高系统的吞吐量。然而对于大型站点来说，将JSP页面转换为静态Html也许是最高效的方法，特别适合于数据不经常变化但是页面访问量特别大的站点，如新闻等，通过把JSP动态页面预先转换为静态Html...</content></entry><entry><id>http://www.cnblogs.com/midnight/archive/2004/07/24/27095.html</id><title type="text">关于DirectX中的DirectShow介绍</title><summary type="text">DirectShow是DirectX大家族中的一位成员。如DirectDraw和Direct3D负责二维图形图像/三维动画加速、DirectMusic和DirectSound负责交互式音乐/环境音效处理一样，DirectShow为Windows平台上处理各种格式的媒体文件播放、音视频采集等高性能要求的多媒体应用，提供了完整的解决方案。 事实上，计算机应用领域中的很多模块都可以和DirectShow...</summary><published>2004-07-24T09:21:00Z</published><updated>2004-07-24T09:21:00Z</updated><author><name>深夜</name><uri>http://www.cnblogs.com/midnight/</uri></author><link rel="alternate" href="http://www.cnblogs.com/midnight/archive/2004/07/24/27095.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/midnight/archive/2004/07/24/27095.html"/><content type="text">DirectShow是DirectX大家族中的一位成员。如DirectDraw和Direct3D负责二维图形图像/三维动画加速、DirectMusic和DirectSound负责交互式音乐/环境音效处理一样，DirectShow为Windows平台上处理各种格式的媒体文件播放、音视频采集等高性能要求的多媒体应用，提供了完整的解决方案。 事实上，计算机应用领域中的很多模块都可以和DirectShow...</content></entry></feed>
