JavaScript表格隔行换色悬停高亮

表格隔行换色悬停高亮,网上也有很多方法。但找来找去用着不顺手,自己重新写一个。现在把代码贴出来:一、希望各位高手提提建议。如果能帮我重构下则更好。我总感觉写的不伦不类的!二、希望能帮助到一些朋友。

全部代码如下:

<html>
<head>
    <title>隔行换色——悬停高亮——单击选中</title>
</head>
<script type="text/javascript">
    (function () {
        /*
        *鼠标由表格划过更改表格行的颜色,单击选中并加颜色高亮
        *参数说明:
        *id 必须
        *option对象可选参数
        option.mouseMoveOverColor鼠标划过时候的颜色
        option.mouseOnClickColor鼠标单击后的颜色
        option.oddtrColor 表格奇数行的颜色
        option.eventrColor表格偶数行的颜色
        mouseMoveOverColor和mouseOnClickColor可以任选其一
        例如传参数:1、qhjswSetTableBgcolor("tableid",{mouseMoveOverColor:"#C8E6FF",mouseOnClickColor:"#0066FF"}).start();
          var ts=new qhjswSetTableBgcolor("tableid",{mouseMoveOverColor:"#C8E6FF",mouseOnClickColor:"#0066FF"});
        ts.oddevenOpen=true;//开启隔行换行
        ts..start();
        如果要开启隔行换色把返回对象的oddevenOpen属性改为true
        *作者:bluescreen
        *日期:2012-10-11 14:00
        */
        var qhjswSetTableBgcolor = function (id, option) {
            //判断对象传入的参数是否符合要求
            if (arguments.length < 1 || arguments.length > 2) {
                throw new Error("参数个数不正确");
            }
            if (typeof (id) != "string") {
                throw new Error("ID必须为字符串类型");
            }
            //判断是否使用new关键字进行实例化
            if (this.constructor === window.constructor) {
                return new qhjswSetTableBgcolor(id, option);
            }
            if (typeof (option) != "undefined") {
                if (option.constructor != Object) {
                    throw new Error(option + "不是对象");
                }
            }
            option = option || {}; //如果不存在option对象就赋值一个空对象给option
            var tbobj = document.getElementById(id);
            var trclickindex = "undefined";
            var trclickcolor = null;
            var clicktag = 0;
            this.obj = tbobj;
            this.author = "bluescreen";
            this._len = tbobj.rows.length;
            this.mouseMoveOverColor = option.mouseMoveOverColor || "#C8E6FF";
            this.mouseOnClickColor = option.mouseOnClickColor || "#1e90ff";
            this.oddtrColor = option.oddtrColor || "#fff";
            this.eventrColor = option.eventrColor || "#F5F5F5";
            this.oddevenOpen = false;
            this._gettrclickindex = function () {
                return trclickindex;
            }
            this._settrclickindex = function (index) {
                trclickindex = index;
            }
            this._gettrclickcolor = function () {
                return trclickcolor;
            }
            this._settrclickcolor = function (colorName) {
                trclickcolor = colorName;
            }
            this._setclicktag = function (tag) {
                clicktag = tag
            }
            this._getclicktag = function () {
                return clicktag
            }
        }
        qhjswSetTableBgcolor.prototype = {
            bindMouse: function () {
                var curobj = this;
                for (var i = 0; i < this._len; i++) {
                    this.obj.rows[i].onmouseover = (function (index, tr) {
                        return function () {
                            curobj.tempColor = tr.style.backgroundColor;
                            if (0 != index && tr.clicktag != 1) {
                                curobj.setBgColor(tr, curobj.mouseMoveOverColor);
                            }
                        }

                    })(i, this.obj.rows[i]);
                    this.obj.rows[i].onmouseout = (function (index, tr) {
                        return function () {
                            if (0 != index && tr.clicktag != 1) {
                                curobj.setBgColor(tr, curobj.tempColor);
                            }
                        }

                    })(i, this.obj.rows[i]);
                    this.obj.rows[i].onclick = (function (index, tr) {
                        return function () {
                            if (0 != index && tr.clicktag != 1) {

                                if (curobj._gettrclickindex() != "undefined") {
                                    curobj.setBgColor(curobj.obj.rows[curobj._gettrclickindex()], curobj._gettrclickcolor());
                                    curobj.obj.rows[curobj._gettrclickindex()].clicktag = 0;
                                }
                                curobj._settrclickcolor(curobj.tempColor);
                                curobj.setBgColor(tr, curobj.mouseOnClickColor);
                                curobj._settrclickindex(index);
                                tr.clicktag = 1;
                            }
                        }

                    })(i, this.obj.rows[i]);
                    if (this.oddevenOpen && i != 0) {
                        this.setBgColor(this.obj.rows[i], ((this.obj.rows[i].sectionRowIndex % 2 == 0) ? this.eventrColor : this.oddtrColor));
                    }
                }
            },
            start: function () {
                this.bindMouse();
            },
            getobj: function (id) { //获取指定ID的对象
                return document.getElementById(id);
            },
            setBgColor: function (tr, color) { //设置背景色
                tr.style.backgroundColor = color;
            },
            getBgColor: function (tr) {
                return tr.style.backgroundColor;
            }
        };

        window.qhjswSetTableBgcolor = qhjswSetTableBgcolor;
    })();
    window.onload = function () {
        var ts = qhjswSetTableBgcolor("tabid");
        ts.oddevenOpen = true;
        ts.start();

    };
</script>
<body>
    <table id="tabid">
        <thead>
            <tr style="background-color: Gray;">
                <td>
                    姓名
                </td>
                <td>
                    电话
                </td>
                <td>
                    国籍
                </td>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    张三
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
            <tr>
                <td>
                    李四
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
            <tr>
                <td>
                    王二
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
            <tr>
                <td>
                    麻子
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
            <tr>
                <td>
                    欧阳夏天
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
            <tr>
                <td>
                    司马懿
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
            <tr>
                <td>
                    东邪
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
            <tr>
                <td>
                    洪七公
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
            <tr>
                <td>
                    杨过
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
            <tr>
                <td>
                    小龙女
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
            <tr>
                <td>
                    神经病
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
            <tr>
                <td>
                    王子
                </td>
                <td>
                </td>
                <td>
                    中国
                </td>
            </tr>
        </tbody>
    </table>
</body>
</html>

 

效果如下:

隔行换色——悬停高亮——单击选中

姓名电话国籍
张三13096585211中国
李四13096585212中国
王二13096585213中国
麻子13096585214中国
欧阳夏天13096585214中国
司马懿13096585215中国
东邪13096585216中国
洪七公13096585217中国
杨过13096585219中国
小龙女13096585220中国
神经病13096585221中国
王子13096585222中国

转载于:https://www.cnblogs.com/bluescreen/archive/2012/10/12/2721246.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值