zoukankan      html  css  js  c++  java
  • 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 中国
  • 相关阅读:
    postman 安装,配置,鉴权
    monkey操作,获取包名,参数,日志,百分比
    monkey环境搭建
    postman接口测试&压力测试
    Fiddler介绍(PC端+Android,IOS端,弱网)
    软件测试的环境搭建
    python2.x- selenium-robot framework自动化测试环境搭建
    SVN的简单操作,版本控制
    svn介绍和安装
    js 函数和函数的参数
  • 原文地址:https://www.cnblogs.com/bluescreen/p/2721246.html
Copyright © 2011-2022 走看看