奇或偶数行高亮显示及鼠标划过高亮显示类

奇或偶数行高亮显示及鼠标莫过高亮显示,一个经常用到的效果,也能谷歌到大把的这种效果JS,但好像还没有一个封装成类直接用的.想象自己当初谷歌这个类时,还真没少折腾时间.
花了点时间,封装成了一个类(附带一个添加样式的类),适合初学者,直接调用函数即可,无需改代码.
核心JavaScript代码:点此查看DEMO

//@Mr.Think---添加样式的类
function addClass(elem, value){
    if (!elem.className) {
        elem.className = value;
    }
    else {
        var newClass = elem.className;
        newClass += " ";
        newClass += value;
        elem.className = newClass;
    }
}

//@Mr.Think---奇或偶数行高亮显示及鼠标划过高亮显示
function highLight(elemid, tagName, tagNameHighClass, crossTagNameClass){
    if (!document.getElementsByTagName)
        return false;
    if (!document.getElementById)
        return false;
    if (!document.getElementById(elemid))
        return false;
    var elemid = document.getElementById(elemid);
    tagNames = elemid.getElementsByTagName(tagName);
    //奇数行高亮显示
    var odd = true;//它的值决定是奇数高亮显示还是偶数高亮显示
    for (var i = 0; i < tagNames.length; i++) {
        if (odd == true) {
            addClass(tagNames[i], tagNameHighClass)
            odd = false;
        }
        else {
            odd = true;
        }
    }
    //鼠标划过高亮显示
    for (var m = 0; m < tagNames.length; m++) {
        tagNames[m].oldClassName = tagNames[m].className;
        tagNames[m].onmouseover = function(){
            addClass(this, crossTagNameClass);
        }
        tagNames[m].onmouseout = function(){
            this.className = this.oldClassName;
        }
    }
}

参数说明:

1.elemid:事件ID,就是你想实现这种效果所在ID;
2.tagName:事件tagName值,比如li,tr,p等等;
3.tagNameHighClass:奇或偶数行高亮显示的样式;
4.crossTagNameClass:鼠标划过时高亮显示的样式.

使用说明:

1.如果你只想要其中一个效果,在类中,删除对应的不需要的代码,有注释;
2.调用(加载函数建议用本文中的加载函数,用window.onload非明智之举):

window.onload = function highYourElem(){
    highLight("yourId", "yourTagName", "yourHighClass", "yourCrossClass");
}
共有 10 条评论.

发表评论5,350 Views

  1. 用Css也 可以 实现

    [回复]

  2. 不知道为什么,你这个例子我拿过去功能可以实现
    但是我拿到自己的页面上就没有效果,也没有报错

    [回复]

    Mr.Think 回复:

    @s, 哈~ 断点调一下嘛.. 看是不是哪儿没执行.. 或者样式是不是有问题..

    [回复]

  3. 恩,这个比较好~

    [回复]

  4. i%2==0

    这样不是效果更好些吗?

    [回复]

    Mr.Think 回复:

    @方域, 嗯,判断余数的方法也挺好.实现奇偶高亮的方法有很多种.:)

    [回复]

    web前端寒风 回复:

    @方域, 我曾经就是这种方法实现的,不知是否有什么缺点

    [回复]

    Mr.Think 回复:

    @web前端寒风, 道理是一样的.个人觉得没有不妥.但如果你接触了jQ,你会发现隔行高亮显示仅一句代码的就可实现.

    [回复]

发表评论[无需注册]