网站首页 >> 全部技术文档 >> 网页设计 >> Dreamweaver
如何实现把鼠标移到一个表格上的时候表格一列的背景变色
发布时间: 2006-1-13 10:17:00 阅读次数:
  如何实现把鼠标移到一个表格上的时候表格一列的背景变色
解决思路
我们知道,仅变换某个单元格的背景颜色的话用就行了,而要变换一列的背景颜色就必须要取得当前单元格在行中的索引值,然后遍历表格的所有行,改变行中相应单元格的背景颜色。
具体步骤
    方法一:利用表格的相关集合遍历设置。
1.插入表格代码

<table width="200" height="30">
  <tr>
    <td>demo</td>
    <td>demo</td>
    <td>demo</td>
  </tr>
  <tr>
    <td>demo</td>
    <td>demo</td>
    <td>demo</td>
  </tr>
  <tr>
    <td>demo</td>
    <td>demo</td>
    <td>demo</td>
  </tr>
</table>

2.加入控制背景色功能的JavaScript脚本。

<script>
function cells_color(){
var oColor,td=event.srcElement
if(td.tagName!="TD") 
   return ;
if(event.type=="mouseover" 
   oColor="#dedede"
else oColor="#ffffff"
tb=td.parentElement.parentElement 
for(var i=0;i<tb.rows.length;i++)  
    tb.rows[i].cells[td.cellIndex].bgColor=oColor
}
</script>

3.在表格中加入鼠标事件并触发相应函数后的完全代码如下:

<script>
function cells_color(){
var oColor,td=event.srcElement
if(td.tagName!="TD") //如果事件不是发生在单元格上,退出函数
   return
if(event.type=="mouseover") //判断事件类型,决定单元格改变的颜色
   oColor="#dedede"
else oColor="#ffffff"
tb=td.parentElement.parentElement  //单元格的上两级对象为表格
//遍历表格的所有行,设置相应单元格的背景颜色
for(var i=0;i<tb.rows.length;i++)  
    tb.rows[i].cells[td.cellIndex].bgColor=oColor
}
</script>
<table width="200" height="30" border="1" onmouseover="cells_color()" onmouseout="cells_color()">
  <tr>
    <td>demo</td>
    <td>demo</td>
    <td>demo</td>
  </tr>
  <tr>
    <td>demo</td>
    <td>demo</td>
    <td>demo</td>
  </tr>
  <tr>
    <td>demo</td>
    <td>demo</td>
    <td>demo</td>
  </tr>
</table>
技巧:可以多加一个循环,改变鼠标所在的行的所有单元格背景,脚本修改如下:

<script>
 function cells_color(){
var oColor,td=event.srcElement
 if(td.tagName!="TD")
   return ;
if(event.type=="mouseover")
    oColor="#dedede"
 else oColor="#ffffff"
 tr=td.parentElement
 tb=tr.parentElement
 for(var i=0;i<tr.cells.length;i++)
     tr.cells[i].bgColor=oColor
 for(var i=0;i<tb.rows.length;i++)
     tb.rows[i].cells[td.cellIndex].bgColor=oColor
 }
 </script>

方法二:利用表格的COL标签将表格分组实现。
完整代码:

<script>
function cells_color(){
var oColor,td=event.srcElement
if(td.tagName!="TD") //如果事件不是发生在单元格上,退出函数
   return
if(event.type=="mouseover") //判断事件类型,决定单元格改变的颜色
   oColor="#dedede"
else oColor="#ffffff"
//依次捕获的对象为 td.tr.tbody.table.colgroup单元格的上两级对象为表格
cols=td.parentElement.parentElement.parentElement.children[0]
    cols.children[td.cellIndex].style.backgroundColor=oColor
}
</script>
<table width="200" height="30" border="1" onmouseover="cells_color()" onmouseout="cells_color()">
<col><col><col>
  <tr>
    <td>demo</td>
    <td>demo</td>
    <td>demo</td>
  </tr>
  <tr>
    <td>demo</td>
    <td>demo</td>
    <td>demo</td>
  </tr>
  <tr>
    <td>demo</td>
    <td>demo</td>
    <td>demo</td>
  </tr>
</table>

    注意:虽然没有显式定义TBODY标签,但TBODY将为全部表格自动定义。
特别提示
因为方法二比方法一少了一个遍历,所以效果更高。代码运行后的效果如图 1.2.37所示。

图 1.2.37 鼠标移上单元格是单元格所在列的背景颜色全部改变

特别说明


本例涉及到的知识点比较多,逐一介绍如下:
col 指定基于列的表格默认属性。
colgroup 指定表格中一列或一组列的默认属性。
parentElement 获取对象层次中的父对象。
children 获取作为对象直接后代的 DHTML 对象的集合。
backgroundColor 设置或获取对象的背景颜色。
上一篇:如何做单元格背景颜色黑白交替的表格 下一篇:在Dreamweaver中精细化你的表格外观

推荐专题
网站今日最新
·用Flash制作魔法表情
·避开QQ聊天时遭受攻击的安
·QQ消息炸弹原理解析及防御
·娱乐性更强!QQ2006
·玩转QQ之QQ2006新招
·更新换代QQ Mail 3
·让QQ自动释放内存 让聊天
·QQ教程:用QQ录制GIF
·QQ教程:用批处理找出没聊
·免费的系统安检中心-QQ安
本类推荐
热门文章
用Flash制作魔法表情
心得总结:Java性能优化技
更有Photoshop的感觉
全新界面:QQ2006珊瑚虫
AJAX实例:根据邮编自动完
张雅涵手绘性感美眉插画 图






本类今日更新:
·表单的提交方式POST和GET有什么区别
·为什么表格会被撑大?
·怎样用表格做XML数据的绑定
·如何制作类似Windows系统中的选项卡的效果
·如何做单元格背景颜色黑白交替的表格
·如何实现把鼠标移到一个表格上的时候表格一列的背景变色
·在Dreamweaver中精细化你的表格外观
·优秀网页设计速查与赏析
·Dreamweaver8新功能 建立XSLT页可视化操作XML数据(二)
·Dreamweaver8新功能 建立XSLT页可视化操作XML数据(一)
相关文章:
·如何实现把鼠标移到一个表格上的时候表格一列的背景变色

打印本页 | 关闭窗口