js鼠标悬浮高亮,离开时恢复背景原色

用js实现了鼠标放上面那一行高亮显示,那当我鼠标离开那部分时,可以实现背景恢复原状吗?

-------------------------------------------------------

var background_color = "rgb(9, 184, 218)"; //新背景色

var frozen_back_color = new Array();

var back_color = new Array();

var $last_tr;

var i = 0;

/*基础知识:

*   var 声明变量

*           background_color 新的背景颜色

*           $last_tr  用于实现操作原始行对象

*           frozen_back_color 存储原始颜色值

*           back_color  存储原始颜色值

*           new Array(); 声明为数组类型

*   $  Jquery 构造器函数  ${#id名称} id选择器  ${标签名称(div ,body)}  ${.类名值} 类选择器  学习地址:https://www.w3school.com.cn/jquery/jquery_selectors.asp

*   bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。

*   typeof 可以用来检测给定变量的数据类型,可能的返回值:

*   $(this)是jquery对象,能调用jquery的方法,JS中this 是指当前对象,例如在按钮中增加function(this){}this就是按钮对象

*   .attr() 方法设置或返回被选元素的属性值。

*   .each() 方法规定为每个匹配元素规定运行的函数。

*   children() 方法返回返回被选元素的所有直接子元素

*   css() 方法设置或返回被选元素的一个或多个样式属性。

*   $(this).index() 返回相对于同级元素的位置 实验 https://www.runoob.com/jquery/misc-index.html

*

* */

/*

* 实现过程

* 1.当鼠标移动到行的时候将行的样式参数保存到临时数组中,并改变当前行样式。

* 2.当鼠标离开的时候,将当前对象赋予$last_tr

* 3.当鼠标到达行的时候,通过操作$last_tr,将之前的行变为原来的颜色,并对当前行颜色进行改变

* */

/*获取类名为.x-table下的 tr 标签 ,监听鼠标是否穿过,穿过的话执行方法*/

$(".x-table tr").bind("mouseenter", function () {

    /*如果$last_tr 和当前鼠标穿过行是存在的那么执行*/

   if (typeof($last_tr) != "undefined"&&typeof($(this).attr("id")) != "undefined") {

       /*如果id=content-container的元素下 id=frozen-west 的元素的id值存在那么执行*/

            if (typeof($("#content-container #frozen-west").attr("id")) != "undefined") {

                /*id=content-container 下id=$last_tr 的id 进行遍历*/

                $("#content-container #" + $last_tr.attr("id")).each(function () {

                    /*返回所有td单元格 然后进行遍历*/

                    $(this).children("td").each(function () {

                        /*对id的 背景颜色进行配置改为frozen_back_color[i][$(this).index()]*/

                        $(this).css("background-color", frozen_back_color[i][$(this).index()]);

                    });

                    /*对i进行加1 */

                    i = i + 1;

                });

                /*初始化*/

                i = 0;

            }

            /*如果获取不到id=content-container节点下的id=frozen-west 那么执行*/

            else {

                /*遍历$last_tr下的节点td标签*/

                $last_tr.children("td").each(function () {

                    /*更改td标签的背景色为  back_color[$(this).index()]*/

                    $(this).css("background-color", back_color[$(this).index()]);

                });

            }

            frozen_back_color = [];

            back_color = [];

        }

/*保存单元格原始颜色到frozen_back_color */

/*是当前元素下是否存在id元素*/

    if (typeof($(this).attr("id")) != "undefined") {

        /*id=content-container的标签下是否存在id=frozen-west的元素*/

        if (typeof($("#content-container #frozen-west").attr("id")) != "undefined") {

            /*在id=content-container 下id =this.value的元素进行遍历 */

            $("#content-container #" + $(this).attr("id")).each(function () {

                /*初始化 frozen_back_color[i]为数组 */

                frozen_back_color[i] = new Array();

                /*在当前元素下遍历td 标签*/

                $(this).children("td").each(function () {

                    /*把当前标签的值赋予 frozen_back_color[i] */

                    frozen_back_color[i][$(this).index()] = $(this).css("background-color");

                    /*改变当前标签元素的样式为 background_color */

                    $(this).css("background-color", background_color);

                });

                /*遍历过程中对i进行累加获得对应的角标*/

                i = i + 1;

            });

            /*遍历结束,初始化i为0*/

            i = 0;

        }

        /*改变单元行背景颜色*/

        else {

            /*对当前td元素进行遍历*/

            $(this).children("td").each(function () {

                /*将当前标签的样式赋予back_color */

                back_color[$(this).index()] = $(this).css("background-color");

                /*改变当前元素的值为背景色*/

                $(this).css("background-color", background_color);

            });

        }

    }

});

/*当鼠标离开时,执行上面的函数*/

$(".x-table tr").bind("mouseleave", function () {

    /*如果id可以找到那么执行*/

    if (typeof($(this).attr("id")) != "undefined") {

        /*将当前对象赋值给$last_tr   */

        $last_tr = $(this);

    }

});

image.png

image.png

linboding 发布于 2021-11-30 09:46 (编辑于 2021-11-30 15:35)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
1
luojian0323Lv7资深互助
发布于2021-11-30 10:07(编辑于 2021-11-30 15:40)

https://help.fanruan.com/finereport/doc-view-4349.html

把这个文档中的鼠标点击事件,改成鼠标悬浮事件.mousedown改成mousemove

---------------------------上面是11.0版本,下面这个可以通用--------------

var color='' $(".x-table td").mousemove(function() { if(color==""){ color=$(this).css("background-color")} $(this).css("background-color", 'rgb(255, 255,0)'); }) $(".x-table td").mouseout(function() { $(this).css("background-color", color); color="" });

鼠标悬浮单元格变色.gif

var color='' $(".x-table tr").mousemove(function() { $(this).children("td").each(function() { if(color==""){ color=$(this).css("background-color")} $(this).css("background-color", 'rgb(255, 255,0)');}); }) $(".x-table tr").mouseout(function() { $(this).children("td").each(function() { $(this).css("background-color", color); }); color=""; });

鼠标悬浮行变色.gif

这次你要再说不行。那你就是来砸场子的。

因为这个问答区代码编辑器问题,我粘贴的代码全部挤在一起了

image.png

把这段代码换一个行。不要和上面代码挤在一起就可以了。

  • 3关注人数
  • 1278浏览人数
  • 最后回答于:2021-11-30 15:40
    请选择关闭问题的原因
    确定 取消
    返回顶部