打印

超简单表格隔行换色+鼠标经过变色(ie6,ie7,ff)

本主题由 caiying2007 于 2008-10-4 13:46 设置高亮
前几天由于工作需要,要对一个表格进行隔行换色,还要加上鼠标经过效果,但是表格由程序生成,如果在tr标签中添加onmouseover,onmouseout效果的话工作量很大,遂尝试用js实现以上功能,唯一要对表格做的改动就是给table标签加上id.

从网上搜索了很多方法,几乎都是对tr标签进行修改,还好找到了一个完全通过js实现隔行换色的(经过转载已无法考证作者),不过不支持鼠标经过变色,经过我的修改现在已经支持鼠标经过变色了.
这段代码体现了web重构的思想,实现了结构与表现分离.

请看效果:

 提示:您可以先修改部分代码再运行
使用方法:
1.给你的table加上一个id.这个例子中我加的id是table.
2.将以下代码插入到head区中,按照注释修改颜色和id.
复制内容到剪贴板
代码:
<style language="text/css">
/*第一种颜色*/
#table tr.color1{
    background-color:#FFFFFF;
}
/*第二种颜色*/
#table tr.color2{
    background-color:#F8F8F8;
}
</style>
<script type="text/javascript">
<!--
function onloadEvent(func){
    var one=window.onload
    if(typeof window.onload!='function'){
        window.onload=func
    }
    else{
        window.onload=function(){
            one();
            func();
        }
    }
}
function showtable(){
    var tableid='table';        //表格的id
    var overcolor='#FCF9D8';    //鼠标经过颜色
    var color1='#FFFFFF';        //第一种颜色
    var color2='#F8F8F8';        //第二种颜色
    var tablename=document.getElementById(tableid)
    var tr=tablename.getElementsByTagName("tr")
    for(var i=1 ;i<tr.length;i++){
        tr[i].onmouseover=function(){
            this.style.backgroundColor=overcolor;
        }
        tr[i].onmouseout=function(){
            if(this.rowIndex%2==0){
                this.style.backgroundColor=color1;
            }else{
                this.style.backgroundColor=color2;
            }
        }
        if(i%2==0){
            tr[i].className="color1";
        }else{
            tr[i].className="color2";
        }
    }
}
onloadEvent(showtable);
-->
</script>
3.enjoy it.

感谢原作者,也谢谢你用一点点时间看完了我这个帖子.希望这段代码能给你带来方便.
本帖最近评分记录
代码要像美女的裙子,越短越好
嘿嘿,我还是喜欢Jquery的,更简单:)
极品打杂!
2楼发jquery的出来看看``
http://www.shuoshenme.com/ 说什么--值得推荐!

TOP

认证您的手机,获得手机认证图标, 更多手机认证的好处
不错,正好需要的
不错.支持.

jquery的没见过.谁发出来看看啊.

TOP

jquery,没必要过意的推崇它。
楼主的这份代码是不错的。

[ 本帖最后由 heluyao 于 2008-5-17 00:14 编辑 ]

TOP

不错,谢谢楼主,精典收藏

TOP

谢谢  学习了!!!!!!!!!!1
最好的自己

TOP

本人的另类写法,兼容ie6,ie7,FF

 提示:您可以先修改部分代码再运行
<del>IE6</del>

TOP

好久以前写过一个,不过已经忘记了。

jQuery的写法大致如下
tr.hover{ background-color: #ddd; }
tr.even { background-color: #aaa; }
table的id为t

$("table#t tr").hover(function(){$(this).addClass("hover")},function(){$(this).removeClass("hover")}).filter(":even").addClass("even");

TOP

原来写过一个IE仅有的,现在将其改成JS版,IE7,FF,OPERQ测试通过
http://bbs.blueidea.com/viewthread.php?tid=2552061&page=1#pid2555108

 提示:您可以先修改部分代码再运行
[ 本帖最后由 SenFe 于 2008-5-17 12:02 编辑 ]

TOP

呵呵,又见盛飞老大.
我昨天也在坛子里呆到12点的,可惜没见到你.呵呵
缘分啊

TOP

我个人比较喜欢利用:hover属性的东西,感觉比较稳定。

TOP

楼主那个不简单 jQUERY
    <PageScript>
        <![CDATA[
              
              $("tr").each(
                function(i)
                {
                  $(this).css(
                    {
                      color:"#000000"
                    }
                  ).css("font-size","14px");
                  this.style.background=["#ffffff","#C2DBF5"][i%2];
                }
              );
    ]]>
    </PageScript>

[ 本帖最后由 skybot 于 2008-5-18 12:19 编辑 ]
http://www.qlili.com 个人站帮点啊

TOP

相对于jquery的体积,我这个还算小了,如果只是偶尔需要的话没必要引入jquery
代码要像美女的裙子,越短越好

TOP

LZ正解

TOP

在FF下 好像都不行……
ff-bb.cn

TOP

学习了,,谢谢分享

[ 本帖最后由 jok331 于 2008-5-21 20:12 编辑 ]

TOP

学习了!

TOP

这个不错黑黑,有点用
http://www.qlili.com 个人站帮点啊

TOP

TOP

我用了,谢谢分享。
js一直是短板
http://www.kangdino.cn

TOP

留个标记以便学习
http://www.chineseidc.com.cn/

TOP

谢谢,还不错

TOP

很好的效果,收藏了,谢谢

TOP

都很厉害的说呀。。。

TOP

谢谢 标记下 收藏了

TOP

嗯 楼主的效果不错  主要是通过了 标准。。。

TOP

很人性化 做个记号

TOP

Mark!!

TOP